[llvm] r319480 - [llvm] Add stripped installation targets
Justin Bogner via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 11 16:17:02 PDT 2018
Shoaib Meenai via llvm-commits <llvm-commits at lists.llvm.org> writes:
> Author: smeenai
> Date: Thu Nov 30 13:48:26 2017
> New Revision: 319480
>
> URL: http://llvm.org/viewvc/llvm-project?rev=319480&view=rev
> Log:
> [llvm] Add stripped installation targets
>
> CMake's generated installation scripts support `CMAKE_INSTALL_DO_STRIP`
> to enable stripping the installed binaries. LLVM's build system doesn't
> expose this option to the `install-` targets, but it's useful in
> conjunction with `install-distribution`.
>
> Add a new function to create the install targets, which creates both the
> regular install target and a second install target that strips during
> installation. Change the creation of all installation targets to use
> this new function. Stripping doesn't make a whole lot of sense for some
> installation targets (e.g. the LLVM headers), but consistency doesn't
> hurt.
>
> I'll make other repositories (e.g. clang, compiler-rt) use this in a
> follow-up, and then add an `install-distribution-stripped` target to
> actually accomplish the end goal of creating a stripped distribution. I
> don't want to do that step yet because the creation of that target would
> depend on the presence of the `install-*-stripped` target for each
> distribution component, and the distribution components from other
> repositories will be missing that target right now.
>
> Differential Revision: https://reviews.llvm.org/D40620
>
> Modified:
> llvm/trunk/CMakeLists.txt
> llvm/trunk/cmake/modules/AddLLVM.cmake
> llvm/trunk/cmake/modules/CMakeLists.txt
> llvm/trunk/cmake/modules/LLVMExternalProjectUtils.cmake
> llvm/trunk/tools/xcode-toolchain/CMakeLists.txt
>
> Modified: llvm/trunk/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=319480&r1=319479&r2=319480&view=diff
> ==============================================================================
>
> --- llvm/trunk/CMakeLists.txt (original)
> +++ llvm/trunk/CMakeLists.txt Thu Nov 30 13:48:26 2017
> @@ -975,11 +975,8 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
> 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)
FYI, this accidentally dropped the DEPENDS llvm-headers, causing
install-llvm-headers and install-distribution to skip generated headers
in clean builds. Fixed in r334452.
> endif()
> endif()
>
>
> Modified: llvm/trunk/cmake/modules/AddLLVM.cmake
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddLLVM.cmake?rev=319480&r1=319479&r2=319480&view=diff
> ==============================================================================
> --- llvm/trunk/cmake/modules/AddLLVM.cmake (original)
> +++ llvm/trunk/cmake/modules/AddLLVM.cmake Thu Nov 30 13:48:26 2017
> @@ -569,6 +569,32 @@ function(llvm_add_library name)
> 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 @@ macro(add_llvm_library name)
> 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 @@ macro(add_llvm_tool name)
> 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 @@ macro(add_llvm_utility name)
> 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 @@ function(llvm_install_library_symlink na
> 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 @@ function(llvm_install_symlink name dest)
> 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()
>
>
> Modified: llvm/trunk/cmake/modules/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/CMakeLists.txt?rev=319480&r1=319479&r2=319480&view=diff
> ==============================================================================
> --- llvm/trunk/cmake/modules/CMakeLists.txt (original)
> +++ llvm/trunk/cmake/modules/CMakeLists.txt Thu Nov 30 13:48:26 2017
> @@ -129,9 +129,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
> 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()
>
> Modified: llvm/trunk/cmake/modules/LLVMExternalProjectUtils.cmake
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/LLVMExternalProjectUtils.cmake?rev=319480&r1=319479&r2=319480&view=diff
> ==============================================================================
> --- llvm/trunk/cmake/modules/LLVMExternalProjectUtils.cmake (original)
> +++ llvm/trunk/cmake/modules/LLVMExternalProjectUtils.cmake Thu Nov 30 13:48:26 2017
> @@ -189,12 +189,9 @@ function(llvm_ExternalProject_Add name s
> 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
>
> Modified: llvm/trunk/tools/xcode-toolchain/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/xcode-toolchain/CMakeLists.txt?rev=319480&r1=319479&r2=319480&view=diff
> ==============================================================================
> --- llvm/trunk/tools/xcode-toolchain/CMakeLists.txt (original)
> +++ llvm/trunk/tools/xcode-toolchain/CMakeLists.txt Thu Nov 30 13:48:26 2017
> @@ -93,13 +93,11 @@ add_custom_command(OUTPUT ${LLVMToolchai
> 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 @@ if(LLVM_DISTRIBUTION_COMPONENTS)
> 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()
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list