summaryrefslogtreecommitdiffstats
path: root/compiler-rt/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
commit45ab7d7dc64a7a6f569bb83c317f77c891e36d74 (patch)
tree58e54dc51543a586e9ad7d8f3118f4dab13d9f65 /compiler-rt/cmake
parent6a281a75450a23346bb24077c7e019183fe1d498 (diff)
downloadbcm5719-llvm-45ab7d7dc64a7a6f569bb83c317f77c891e36d74.tar.gz
bcm5719-llvm-45ab7d7dc64a7a6f569bb83c317f77c891e36d74.zip
[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 llvm-svn: 360181
Diffstat (limited to 'compiler-rt/cmake')
-rw-r--r--compiler-rt/cmake/Modules/AddCompilerRT.cmake47
-rw-r--r--compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake13
-rw-r--r--compiler-rt/cmake/Modules/CompilerRTUtils.cmake50
3 files changed, 66 insertions, 44 deletions
diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake
index 3970fb4157a..75891168411 100644
--- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake
+++ b/compiler-rt/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/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake b/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
index 48f761a2e7c..5c8745bc528 100644
--- a/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
+++ b/compiler-rt/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/compiler-rt/cmake/Modules/CompilerRTUtils.cmake b/compiler-rt/cmake/Modules/CompilerRTUtils.cmake
index 957452cffec..f1543f5666d 100644
--- a/compiler-rt/cmake/Modules/CompilerRTUtils.cmake
+++ b/compiler-rt/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()
OpenPOWER on IntegriCloud