Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -975,11 +975,8 @@ set_target_properties(llvm-headers PROPERTIES FOLDER "Misc") if (NOT CMAKE_CONFIGURATION_TYPES) - add_custom_target(install-llvm-headers - DEPENDS llvm-headers - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=llvm-headers - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + add_llvm_install_targets(install-llvm-headers + COMPONENT llvm-headers) endif() endif() Index: cmake/modules/AddLLVM.cmake =================================================================== --- cmake/modules/AddLLVM.cmake +++ cmake/modules/AddLLVM.cmake @@ -569,6 +569,32 @@ endif() endfunction() +function(add_llvm_install_targets target) + cmake_parse_arguments(ARG "" "COMPONENT;PREFIX" "DEPENDS" ${ARGN}) + if(ARG_COMPONENT) + set(component_option -DCMAKE_INSTALL_COMPONENT="${ARG_COMPONENT}") + endif() + if(ARG_PREFIX) + set(prefix_option -DCMAKE_INSTALL_PREFIX="${ARG_PREFIX}") + endif() + + add_custom_target(${target} + DEPENDS ${ARG_DEPENDS} + COMMAND "${CMAKE_COMMAND}" + ${component_option} + ${prefix_option} + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" + USES_TERMINAL) + add_custom_target(${target}-stripped + DEPENDS ${ARG_DEPENDS} + COMMAND "${CMAKE_COMMAND}" + ${component_option} + ${prefix_option} + -DCMAKE_INSTALL_DO_STRIP=1 + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" + USES_TERMINAL) +endfunction() + macro(add_llvm_library name) cmake_parse_arguments(ARG "SHARED;BUILDTREE_ONLY" @@ -619,11 +645,9 @@ COMPONENT ${name}) if (NOT CMAKE_CONFIGURATION_TYPES) - add_custom_target(install-${name} - DEPENDS ${name} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${name} - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + add_llvm_install_targets(install-${name} + DEPENDS ${name} + COMPONENT ${name}) endif() endif() set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name}) @@ -849,11 +873,9 @@ COMPONENT ${name}) if (NOT CMAKE_CONFIGURATION_TYPES) - add_custom_target(install-${name} - DEPENDS ${name} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${name} - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + add_llvm_install_targets(install-${name} + DEPENDS ${name} + COMPONENT ${name}) endif() endif() endif() @@ -889,11 +911,9 @@ RUNTIME DESTINATION ${LLVM_UTILS_INSTALL_DIR} COMPONENT ${name}) if (NOT CMAKE_CONFIGURATION_TYPES) - add_custom_target(install-${name} - DEPENDS ${name} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${name} - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + add_llvm_install_targets(install-${name} + DEPENDS ${name} + COMPONENT ${name}) endif() endif() endmacro(add_llvm_utility name) @@ -1400,11 +1420,9 @@ COMPONENT ${component}) if (NOT CMAKE_CONFIGURATION_TYPES AND NOT ARG_ALWAYS_GENERATE) - add_custom_target(install-${name} - DEPENDS ${name} ${dest} install-${dest} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${name} - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + add_llvm_install_targets(install-${name} + DEPENDS ${name} ${dest} install-${dest} + COMPONENT ${name}) endif() endfunction() @@ -1435,11 +1453,9 @@ COMPONENT ${component}) if (NOT CMAKE_CONFIGURATION_TYPES AND NOT ARG_ALWAYS_GENERATE) - add_custom_target(install-${name} - DEPENDS ${name} ${dest} install-${dest} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${name} - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + add_llvm_install_targets(install-${name} + DEPENDS ${name} ${dest} install-${dest} + COMPONENT ${name}) endif() endfunction() Index: cmake/modules/CMakeLists.txt =================================================================== --- cmake/modules/CMakeLists.txt +++ cmake/modules/CMakeLists.txt @@ -129,9 +129,7 @@ if (NOT CMAKE_CONFIGURATION_TYPES) # Add a dummy target so this can be used with LLVM_DISTRIBUTION_COMPONENTS add_custom_target(cmake-exports) - add_custom_target(install-cmake-exports - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=cmake-exports - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + add_llvm_install_targets(install-cmake-exports + COMPONENT cmake-exports) endif() endif() Index: cmake/modules/LLVMExternalProjectUtils.cmake =================================================================== --- cmake/modules/LLVMExternalProjectUtils.cmake +++ cmake/modules/LLVMExternalProjectUtils.cmake @@ -189,12 +189,9 @@ install(CODE "execute_process\(COMMAND \${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=\${CMAKE_INSTALL_PREFIX} -P ${BINARY_DIR}/cmake_install.cmake \)" COMPONENT ${name}) - add_custom_target(install-${name} - DEPENDS ${name} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${name} - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" - USES_TERMINAL) + add_llvm_install_targets(install-${name} + DEPENDS ${name} + COMPONENT ${name}) endif() # Add top-level targets Index: tools/xcode-toolchain/CMakeLists.txt =================================================================== --- tools/xcode-toolchain/CMakeLists.txt +++ tools/xcode-toolchain/CMakeLists.txt @@ -93,13 +93,11 @@ COMMAND /usr/libexec/PlistBuddy -c "Add:CompatibilityVersion integer ${COMPAT_VERSION}" "${LLVMToolchainDir}/Info.plist" ) -add_custom_target(install-xcode-toolchain - DEPENDS ${LLVMToolchainDir}/Info.plist - COMMAND "${CMAKE_COMMAND}" --build ${CMAKE_BINARY_DIR} --target all - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_PREFIX=${LLVMToolchainDir}/usr/ - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" - USES_TERMINAL) +add_custom_target(build-xcode-toolchain + COMMAND "${CMAKE_COMMAND}" --build ${CMAKE_BINARY_DIR} --target all) +add_llvm_install_targets(install-xcode-toolchain + DEPENDS ${LLVMToolchainDir}/Info.plist build-xcode-toolchain + PREFIX ${LLVMToolchainDir}/usr/) if(LLVM_DISTRIBUTION_COMPONENTS) if(CMAKE_CONFIGURATION_TYPES) @@ -110,13 +108,10 @@ DEPENDS ${LLVMToolchainDir}/Info.plist distribution) foreach(target ${LLVM_DISTRIBUTION_COMPONENTS}) - add_custom_target(install-distribution-${target} - DEPENDS ${target} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${target} - -DCMAKE_INSTALL_PREFIX=${LLVMToolchainDir}/usr/ - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" - USES_TERMINAL) + add_llvm_install_targets(install-distribution-${target} + DEPENDS ${target} + COMPONENT ${target} + PREFIX ${LLVMToolchainDir}/usr/) add_dependencies(install-distribution-toolchain install-distribution-${target}) endforeach() endif()