diff --git a/clang/lib/Headers/CMakeLists.txt b/clang/lib/Headers/CMakeLists.txt --- a/clang/lib/Headers/CMakeLists.txt +++ b/clang/lib/Headers/CMakeLists.txt @@ -187,6 +187,10 @@ set(header_install_dir lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION}/include) +if(CMAKE_CONFIGURATION_TYPES) + string(REPLACE "${CMAKE_CFG_INTDIR}" "$" output_dir "${output_dir}") +endif() + install( FILES ${files} ${generated_files} DESTINATION ${header_install_dir} diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake --- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake +++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake @@ -2,25 +2,15 @@ include(CompilerRTUtils) function(set_target_output_directories target output_dir) - # For RUNTIME_OUTPUT_DIRECTORY variable, Multi-configuration generators - # append a per-configuration subdirectory to the specified directory. - # To avoid the appended folder, the configuration specific variable must be - # set 'RUNTIME_OUTPUT_DIRECTORY_${CONF}': - # RUNTIME_OUTPUT_DIRECTORY_DEBUG, RUNTIME_OUTPUT_DIRECTORY_RELEASE, ... + # If we are using multi-configuration generator ensure proper folder + # expansion by using $ generator expression if(CMAKE_CONFIGURATION_TYPES) - foreach(build_mode ${CMAKE_CONFIGURATION_TYPES}) - string(TOUPPER "${build_mode}" CONFIG_SUFFIX) - set_target_properties("${target}" PROPERTIES - "ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_SUFFIX}" ${output_dir} - "LIBRARY_OUTPUT_DIRECTORY_${CONFIG_SUFFIX}" ${output_dir} - "RUNTIME_OUTPUT_DIRECTORY_${CONFIG_SUFFIX}" ${output_dir}) - endforeach() - else() - set_target_properties("${target}" PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY ${output_dir} - LIBRARY_OUTPUT_DIRECTORY ${output_dir} - RUNTIME_OUTPUT_DIRECTORY ${output_dir}) + string(REPLACE "${CMAKE_CFG_INTDIR}" "$" output_dir "${output_dir}") endif() + set_target_properties("${target}" PROPERTIES + ARCHIVE_OUTPUT_DIRECTORY ${output_dir} + LIBRARY_OUTPUT_DIRECTORY ${output_dir} + RUNTIME_OUTPUT_DIRECTORY ${output_dir}) endfunction() # Tries to add an "object library" target for a given list of OSs and/or