mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
[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 llvm-svn: 319480
This commit is contained in:
parent
977257a5c0
commit
bb1b6ae244
@ -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)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -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}
|
||||
add_llvm_install_targets(install-${name}
|
||||
DEPENDS ${name}
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-DCMAKE_INSTALL_COMPONENT=${name}
|
||||
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||
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}
|
||||
add_llvm_install_targets(install-${name}
|
||||
DEPENDS ${name}
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-DCMAKE_INSTALL_COMPONENT=${name}
|
||||
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||
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}
|
||||
add_llvm_install_targets(install-${name}
|
||||
DEPENDS ${name}
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-DCMAKE_INSTALL_COMPONENT=${name}
|
||||
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||
COMPONENT ${name})
|
||||
endif()
|
||||
endif()
|
||||
endmacro(add_llvm_utility name)
|
||||
@ -1400,11 +1420,9 @@ function(llvm_install_library_symlink name dest type)
|
||||
COMPONENT ${component})
|
||||
|
||||
if (NOT CMAKE_CONFIGURATION_TYPES AND NOT ARG_ALWAYS_GENERATE)
|
||||
add_custom_target(install-${name}
|
||||
add_llvm_install_targets(install-${name}
|
||||
DEPENDS ${name} ${dest} install-${dest}
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-DCMAKE_INSTALL_COMPONENT=${name}
|
||||
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||
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}
|
||||
add_llvm_install_targets(install-${name}
|
||||
DEPENDS ${name} ${dest} install-${dest}
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-DCMAKE_INSTALL_COMPONENT=${name}
|
||||
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
||||
COMPONENT ${name})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
|
@ -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()
|
||||
|
@ -189,12 +189,9 @@ function(llvm_ExternalProject_Add name source_dir)
|
||||
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}
|
||||
add_llvm_install_targets(install-${name}
|
||||
DEPENDS ${name}
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-DCMAKE_INSTALL_COMPONENT=${name}
|
||||
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake"
|
||||
USES_TERMINAL)
|
||||
COMPONENT ${name})
|
||||
endif()
|
||||
|
||||
# Add top-level targets
|
||||
|
@ -93,13 +93,11 @@ add_custom_command(OUTPUT ${LLVMToolchainDir}/Info.plist
|
||||
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}
|
||||
add_llvm_install_targets(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)
|
||||
COMPONENT ${target}
|
||||
PREFIX ${LLVMToolchainDir}/usr/)
|
||||
add_dependencies(install-distribution-toolchain install-distribution-${target})
|
||||
endforeach()
|
||||
endif()
|
||||
|
Loading…
Reference in New Issue
Block a user