# Disable with sanitizers for now, this require some more setup apparently.
for san in ['asan', 'msan', 'ubsan']:
   if (san in config.available_features):
      config.unsupported = True

config.substitutions.append(("%cmake_exe", config.host_cmake))
config.substitutions.append(("%cmake_generator", config.host_cmake_generator))
config.substitutions.append(("%host_cxx", config.host_cxx))
config.substitutions.append(("%host_cc", config.host_cc))
config.substitutions.append(("%enable_libcxx", config.enable_libcxx))
config.substitutions.append(
    ("%mlir_cmake_dir", config.mlir_cmake_dir))
