From c7a150fa81dc3b31e8449357fd87a74f945f1e83 Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Thu, 23 Mar 2017 22:40:10 +0000 Subject: [PATCH] [CMake] Provide an option to disable runtimes build This could be used to either disable the runtimes build altogether or avoid building them but still generate the build targets. Differential Revision: https://reviews.llvm.org/D31060 llvm-svn: 298653 --- CMakeLists.txt | 8 +++++++- runtimes/CMakeLists.txt | 13 ++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 47bd35c0988..b51bc421fdb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -483,6 +483,10 @@ option(LLVM_INCLUDE_UTILS "Generate build targets for the LLVM utils." ON) option(LLVM_BUILD_UTILS "Build LLVM utility binaries. If OFF, just generate build targets." ON) +option(LLVM_INCLUDE_RUNTIMES "Generate build targets for the LLVM runtimes." ON) +option(LLVM_BUILD_RUNTIMES + "Build the LLVM runtimes. If OFF, just generate build targets." ON) + option(LLVM_BUILD_RUNTIME "Build the LLVM runtime libraries." ON) option(LLVM_BUILD_EXAMPLES @@ -862,7 +866,9 @@ if( LLVM_INCLUDE_TOOLS ) add_subdirectory(tools) endif() -add_subdirectory(runtimes) +if( LLVM_INCLUDE_RUNTIMES ) + add_subdirectory(runtimes) +endif() if( LLVM_INCLUDE_EXAMPLES ) add_subdirectory(examples) diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt index f5d16952b40..24b7e041d5f 100644 --- a/runtimes/CMakeLists.txt +++ b/runtimes/CMakeLists.txt @@ -145,6 +145,10 @@ else() # if this is included from LLVM's CMake set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${LLVM_BINARY_DIR}/runtimes/Components.cmake) include(LLVMExternalProjectUtils) + if(NOT LLVM_BUILD_RUNTIMES) + set(EXTRA_ARGS EXCLUDE_FROM_ALL) + endif() + # If compiler-rt is present we need to build the builtin libraries first. This # is required because the other runtimes need the builtin libraries present # before the just-built compiler can pass the configuration tests. @@ -157,7 +161,8 @@ else() # if this is included from LLVM's CMake -DCMAKE_C_COMPILER_TARGET=${TARGET_TRIPLE} -DCMAKE_ASM_COMPILER_TARGET=${TARGET_TRIPLE} PASSTHROUGH_PREFIXES COMPILER_RT - USE_TOOLCHAIN) + USE_TOOLCHAIN + ${EXTRA_ARGS}) else() get_cmake_property(variableNames VARIABLES) add_custom_target(builtins) @@ -179,7 +184,8 @@ else() # if this is included from LLVM's CMake -DCOMPILER_RT_DEFAULT_TARGET_ONLY=On ${${target}_extra_args} PASSTHROUGH_PREFIXES COMPILER_RT - USE_TOOLCHAIN) + USE_TOOLCHAIN + ${EXTRA_ARGS}) add_dependencies(builtins builtins-${target}) endforeach() endif() @@ -238,7 +244,8 @@ else() # if this is included from LLVM's CMake ${SUB_COMPONENTS} ${SUB_COMPONENT_CHECK_TARGETS} ${SUB_INSTALL_TARGETS} - USE_TOOLCHAIN) + USE_TOOLCHAIN + ${EXTRA_ARGS}) # TODO: This is a hack needed because the libcxx headers are copied into the # build directory during configuration. Without that step the clang in the