diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2015-08-22 04:53:52 +0000 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2015-08-22 04:53:52 +0000 |
commit | 04e2da526f44e6b32ac7d730eed34b4944d1a211 (patch) | |
tree | ea9b00d15dc30a588fe21470ec01afcc5fe72786 | |
parent | c7b675f48c4322e4b577390ad71741a5e2a54078 (diff) | |
download | bcm5719-llvm-04e2da526f44e6b32ac7d730eed34b4944d1a211.tar.gz bcm5719-llvm-04e2da526f44e6b32ac7d730eed34b4944d1a211.zip |
[CMake] Make LLVM_EXTERNAL_*_SOURCE_DIR consistent against older buildsites.
If corresponding in-tree subdirectory exists, just ignore LLVM_EXTERNAL* stuff.
Otherwise, set LLVM_TOOL_*_BUILD ON/OFF properly according to LLVM_EXTERNAL_*.
This makes easier to walk among old revisions *without* deleteing CMakeCache.txt.
Before r242059, LLVM_EXTERNAL_* was working like;
if(EXISTS ${*_SOURCE_DIR}/CMakeLists.txt)
set(*_BUILD ON CACHE)
if(*_BUILD is ON)
add_subdirectory(*_SOURCE_DIR)
endif()
endif()
llvm-svn: 245782
-rw-r--r-- | llvm/cmake/modules/AddLLVM.cmake | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index f87e18bfcff..6ab580827aa 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -694,20 +694,33 @@ macro(add_llvm_external_project name) set(add_llvm_external_dir ${name}) endif() canonicalize_tool_name(${name} nameUPPER) - if(NOT DEFINED LLVM_TOOL_${nameUPPER}_BUILD) + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}/CMakeLists.txt) + # Treat it as in-tree subproject. option(LLVM_TOOL_${nameUPPER}_BUILD "Whether to build ${name} as part of LLVM" On) - endif() - if (LLVM_TOOL_${nameUPPER}_BUILD) - if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}/CMakeLists.txt) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir} ${add_llvm_external_dir}) - set(LLVM_TOOL_${nameUPPER}_BUILD Off) - elseif(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR) - set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR - "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}" - CACHE PATH "Path to ${name} source directory") - mark_as_advanced(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR) + mark_as_advanced(LLVM_TOOL_${name}_BUILD) + if(LLVM_TOOL_${nameUPPER}_BUILD) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir} ${add_llvm_external_dir}) + # Don't process it in add_llvm_implicit_projects(). + set(LLVM_TOOL_${nameUPPER}_BUILD OFF) + endif() + else() + set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR + "${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}" + CACHE PATH "Path to ${name} source directory") + set(LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT ON) + if(NOT LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR OR NOT EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}) + set(LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT OFF) + endif() + if("${LLVM_EXTERNAL_${nameUPPER}_BUILD}" STREQUAL "OFF") + set(LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT OFF) + endif() + option(LLVM_TOOL_${nameUPPER}_BUILD + "Whether to build ${name} as part of LLVM" + ${LLVM_TOOL_${nameUPPER}_BUILD_DEFAULT}) + if (LLVM_TOOL_${nameUPPER}_BUILD) add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir}) + # FIXME: It'd be redundant. set(LLVM_TOOL_${nameUPPER}_BUILD Off) endif() endif() @@ -737,15 +750,6 @@ function(create_llvm_tool_options) mark_as_advanced(LLVM_TOOL_${name}_BUILD) endif() endforeach() - get_cmake_property(variableNames VARIABLES) - foreach (variableName ${variableNames}) - get_project_name_from_src_var(${variableName} projectName) - if(projectName) - option(LLVM_TOOL_${projectName}_BUILD - "Whether to build ${name} as part of LLVM" On) - mark_as_advanced(LLVM_TOOL_${name}_BUILD) - endif() - endforeach() endfunction(create_llvm_tool_options) function(add_llvm_implicit_projects) |