summaryrefslogtreecommitdiff
path: root/runtimes/CMakeLists.txt
diff options
context:
space:
mode:
authorChris Bieneman <beanz@apple.com>2016-08-25 20:49:51 +0000
committerChris Bieneman <beanz@apple.com>2016-08-25 20:49:51 +0000
commit3e8e88edddc5ae95707832fb92a123b296d3f8f4 (patch)
treed1d12802147d34a24289cfaa4d2d9ec90831ed8d /runtimes/CMakeLists.txt
parent6361cd131c894166d7979beb8f8c7beb819e31ee (diff)
[CMake] Add support for exposing runtime targets
This patch adds support to the runtimes build for exposing sub-project targets through the high-level configuration. This will enable exposing the build, check and install targets for sub-project components (i.e. asan, check-asan, install-asan...). This patch requires minor changes to the runtime projects to take advantage of it, and I'll phase those changes into Compiler-RT shortly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279776 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'runtimes/CMakeLists.txt')
-rw-r--r--runtimes/CMakeLists.txt53
1 files changed, 42 insertions, 11 deletions
diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt
index 2d84f47260e..f4d720120ff 100644
--- a/runtimes/CMakeLists.txt
+++ b/runtimes/CMakeLists.txt
@@ -19,6 +19,10 @@ endforeach()
# triggered by the external project call for the runtimes target below.
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
+ function(runtime_register_component name)
+ set_property(GLOBAL APPEND PROPERTY SUB_COMPONENTS ${name})
+ endfunction()
+
cmake_minimum_required(VERSION 3.4.3)
# Add the root project's CMake modules, and the LLVM build's modules to the
@@ -71,19 +75,44 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
list(APPEND RUNTIMES_LIT_EXTRA_ARGS ${LLVM_LIT_EXTRA_ARGS})
endforeach()
- # Add a global check rule now that all subdirectories have been traversed
- # and we know the total set of lit testsuites.
-
- add_lit_target(check-runtimes
- "Running all regression tests"
- ${RUNTIMES_LIT_TESTSUITES}
- PARAMS ${RUNTIMES_LIT_PARAMS}
- DEPENDS ${RUNTIMES_LIT_DEPENDS}
- ARGS ${RUNTIMES_LIT_EXTRA_ARGS}
- )
- add_custom_target(test-depends-runtimes DEPENDS ${RUNTIMES_LIT_DEPENDS})
+ if(LLVM_INCLUDE_TESTS)
+ # Add a global check rule now that all subdirectories have been traversed
+ # and we know the total set of lit testsuites.
+
+ add_lit_target(check-runtimes
+ "Running all regression tests"
+ ${RUNTIMES_LIT_TESTSUITES}
+ PARAMS ${RUNTIMES_LIT_PARAMS}
+ DEPENDS ${RUNTIMES_LIT_DEPENDS}
+ ARGS ${RUNTIMES_LIT_EXTRA_ARGS}
+ )
+ add_custom_target(test-depends-runtimes DEPENDS ${RUNTIMES_LIT_DEPENDS})
+ endif()
+
+ get_property(SUB_COMPONENTS GLOBAL PROPERTY SUB_COMPONENTS)
+ list(REMOVE_DUPLICATES SUB_COMPONENTS)
+ foreach(component ${SUB_COMPONENTS})
+ if(NOT TARGET ${component})
+ message(SEND_ERROR "Missing target for runtime component ${component}!")
+ continue()
+ endif()
+ if(LLVM_INCLUDE_TESTS AND NOT TARGET check-${component})
+ message(SEND_ERROR "Missing check target for runtime component ${component}!")
+ continue()
+ endif()
+
+ if(TARGET install-${component})
+ list(APPEND SUB_INSTALL_TARGETS install-${component})
+ endif()
+ endforeach()
+
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/Components.cmake.in
+ ${LLVM_BINARY_DIR}/runtimes/Components.cmake)
else() # if this is included from LLVM's CMake
+ include(${LLVM_BINARY_DIR}/runtimes/Components.cmake OPTIONAL)
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${LLVM_BINARY_DIR}/runtimes/Components.cmake)
include(LLVMExternalProjectUtils)
# If compiler-rt is present we need to build the builtin libraries first. This
@@ -134,6 +163,8 @@ else() # if this is included from LLVM's CMake
EXTRA_TARGETS ${extra_targets}
test-depends-runtimes
check-runtimes
+ ${SUB_COMPONENTS}
+ ${SUB_INSTALL_TARGETS}
USE_TOOLCHAIN)
set_property(GLOBAL APPEND PROPERTY LLVM_LIT_DEPENDS test-depends-runtimes)