Skip to content

Commit

Permalink
[CMake] Add support for exposing runtime targets
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Chris Bieneman committed Aug 25, 2016
1 parent 6361cd1 commit 3e8e88e
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 11 deletions.
53 changes: 42 additions & 11 deletions runtimes/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)

Expand Down
2 changes: 2 additions & 0 deletions runtimes/Components.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
set(SUB_COMPONENTS @SUB_COMPONENTS@)
set(SUB_INSTALL_TARGETS @SUB_INSTALL_TARGETS@)

0 comments on commit 3e8e88e

Please sign in to comment.