diff options
author | Shoaib Meenai <smeenai@fb.com> | 2019-05-07 19:00:37 +0000 |
---|---|---|
committer | Shoaib Meenai <smeenai@fb.com> | 2019-05-07 19:00:37 +0000 |
commit | 69f1b5326d99d789d0e862f5f42d93637f13da58 (patch) | |
tree | d4dba52933a2365bb03df65106228d633c8f7a38 /cmake | |
parent | b51c88520398ccc01b44826d37aea23d17ac51a3 (diff) | |
download | compiler-rt-69f1b5326d99d789d0e862f5f42d93637f13da58.tar.gz |
[compiler-rt] Create install targets for Darwin libraries
Darwin targets were generating CMake install rules but not the
corresponding install targets. Centralize the existing install target
creation to a function and use that function for both Darwin and
non-Darwin builds.
Differential Revision: https://reviews.llvm.org/D61541
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@360181 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/Modules/AddCompilerRT.cmake | 47 | ||||
-rw-r--r-- | cmake/Modules/CompilerRTDarwinUtils.cmake | 13 | ||||
-rw-r--r-- | cmake/Modules/CompilerRTUtils.cmake | 50 |
3 files changed, 66 insertions, 44 deletions
diff --git a/cmake/Modules/AddCompilerRT.cmake b/cmake/Modules/AddCompilerRT.cmake index 3970fb415..758911684 100644 --- a/cmake/Modules/AddCompilerRT.cmake +++ b/cmake/Modules/AddCompilerRT.cmake @@ -240,28 +240,6 @@ function(add_compiler_rt_runtime name type) set_target_properties(${LIB_PARENT_TARGET} PROPERTIES FOLDER "Compiler-RT Misc") endif() - if(NOT TARGET install-${LIB_PARENT_TARGET}) - # The parent install target specifies the parent component to scrape up - # anything not installed by the individual install targets, and to handle - # installation when running the multi-configuration generators. - add_custom_target(install-${LIB_PARENT_TARGET} - DEPENDS ${LIB_PARENT_TARGET} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${LIB_PARENT_TARGET} - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") - add_custom_target(install-${LIB_PARENT_TARGET}-stripped - DEPENDS ${LIB_PARENT_TARGET} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${LIB_PARENT_TARGET} - -DCMAKE_INSTALL_DO_STRIP=1 - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") - set_target_properties(install-${LIB_PARENT_TARGET} PROPERTIES - FOLDER "Compiler-RT Misc") - set_target_properties(install-${LIB_PARENT_TARGET}-stripped PROPERTIES - FOLDER "Compiler-RT Misc") - add_dependencies(install-compiler-rt install-${LIB_PARENT_TARGET}) - add_dependencies(install-compiler-rt-stripped install-${LIB_PARENT_TARGET}-stripped) - endif() endif() foreach(libname ${libnames}) @@ -352,27 +330,12 @@ function(add_compiler_rt_runtime name type) endif() endif() - # We only want to generate per-library install targets if you aren't using - # an IDE because the extra targets get cluttered in IDEs. - if(NOT CMAKE_CONFIGURATION_TYPES) - add_custom_target(install-${libname} - DEPENDS ${libname} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${libname} - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") - add_custom_target(install-${libname}-stripped - DEPENDS ${libname} - COMMAND "${CMAKE_COMMAND}" - -DCMAKE_INSTALL_COMPONENT=${libname} - -DCMAKE_INSTALL_DO_STRIP=1 - -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") - # If you have a parent target specified, we bind the new install target - # to the parent install target. - if(LIB_PARENT_TARGET) - add_dependencies(install-${LIB_PARENT_TARGET} install-${libname}) - add_dependencies(install-${LIB_PARENT_TARGET}-stripped install-${libname}-stripped) - endif() + set(parent_target_arg) + if(LIB_PARENT_TARGET) + set(parent_target_arg PARENT_TARGET ${LIB_PARENT_TARGET}) endif() + add_compiler_rt_install_targets(${libname} ${parent_target_arg}) + if(APPLE) set_target_properties(${libname} PROPERTIES OSX_ARCHITECTURES "${LIB_ARCHS_${libname}}") diff --git a/cmake/Modules/CompilerRTDarwinUtils.cmake b/cmake/Modules/CompilerRTDarwinUtils.cmake index 48f761a2e..5c8745bc5 100644 --- a/cmake/Modules/CompilerRTDarwinUtils.cmake +++ b/cmake/Modules/CompilerRTDarwinUtils.cmake @@ -1,4 +1,5 @@ include(CMakeParseArguments) +include(CompilerRTUtils) # On OS X SDKs can be installed anywhere on the base system and xcode-select can # set the default Xcode to use. This function finds the SDKs that are present in @@ -249,10 +250,18 @@ function(darwin_lipo_libs name) ) add_custom_target(${name} DEPENDS ${LIB_OUTPUT_DIR}/lib${name}.a) + set_target_properties(${name} PROPERTIES FOLDER "Compiler-RT Misc") add_dependencies(${LIB_PARENT_TARGET} ${name}) + + if(CMAKE_CONFIGURATION_TYPES) + set(install_component ${LIB_PARENT_TARGET}) + else() + set(install_component ${name}) + endif() install(FILES ${LIB_OUTPUT_DIR}/lib${name}.a - DESTINATION ${LIB_INSTALL_DIR}) - set_target_properties(${name} PROPERTIES FOLDER "Compiler-RT Misc") + DESTINATION ${LIB_INSTALL_DIR} + COMPONENT ${install_component}) + add_compiler_rt_install_targets(${name} PARENT_TARGET ${LIB_PARENT_TARGET}) else() message(WARNING "Not generating lipo target for ${name} because no input libraries exist.") endif() diff --git a/cmake/Modules/CompilerRTUtils.cmake b/cmake/Modules/CompilerRTUtils.cmake index 957452cff..f1543f566 100644 --- a/cmake/Modules/CompilerRTUtils.cmake +++ b/cmake/Modules/CompilerRTUtils.cmake @@ -415,3 +415,53 @@ function(compiler_rt_process_sources OUTPUT_VAR) endif() set("${OUTPUT_VAR}" ${sources} ${headers} PARENT_SCOPE) endfunction() + +# Create install targets for a library and its parent component (if specified). +function(add_compiler_rt_install_targets name) + cmake_parse_arguments(ARG "" "PARENT_TARGET" "" ${ARGN}) + + if(ARG_PARENT_TARGET AND NOT TARGET install-${ARG_PARENT_TARGET}) + # The parent install target specifies the parent component to scrape up + # anything not installed by the individual install targets, and to handle + # installation when running the multi-configuration generators. + add_custom_target(install-${ARG_PARENT_TARGET} + DEPENDS ${ARG_PARENT_TARGET} + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT=${ARG_PARENT_TARGET} + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + add_custom_target(install-${ARG_PARENT_TARGET}-stripped + DEPENDS ${ARG_PARENT_TARGET} + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT=${ARG_PARENT_TARGET} + -DCMAKE_INSTALL_DO_STRIP=1 + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + set_target_properties(install-${ARG_PARENT_TARGET} PROPERTIES + FOLDER "Compiler-RT Misc") + set_target_properties(install-${ARG_PARENT_TARGET}-stripped PROPERTIES + FOLDER "Compiler-RT Misc") + add_dependencies(install-compiler-rt install-${ARG_PARENT_TARGET}) + add_dependencies(install-compiler-rt-stripped install-${ARG_PARENT_TARGET}-stripped) + endif() + + # We only want to generate per-library install targets if you aren't using + # an IDE because the extra targets get cluttered in IDEs. + 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_custom_target(install-${name}-stripped + DEPENDS ${name} + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT=${name} + -DCMAKE_INSTALL_DO_STRIP=1 + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + # If you have a parent target specified, we bind the new install target + # to the parent install target. + if(LIB_PARENT_TARGET) + add_dependencies(install-${LIB_PARENT_TARGET} install-${name}) + add_dependencies(install-${LIB_PARENT_TARGET}-stripped install-${name}-stripped) + endif() + endif() +endfunction() |