summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorShoaib Meenai <smeenai@fb.com>2019-05-07 19:00:37 +0000
committerShoaib Meenai <smeenai@fb.com>2019-05-07 19:00:37 +0000
commit69f1b5326d99d789d0e862f5f42d93637f13da58 (patch)
treed4dba52933a2365bb03df65106228d633c8f7a38 /cmake
parentb51c88520398ccc01b44826d37aea23d17ac51a3 (diff)
downloadcompiler-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.cmake47
-rw-r--r--cmake/Modules/CompilerRTDarwinUtils.cmake13
-rw-r--r--cmake/Modules/CompilerRTUtils.cmake50
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()