diff options
| author | Chris Bieneman <beanz@apple.com> | 2015-07-13 20:23:15 +0000 |
|---|---|---|
| committer | Chris Bieneman <beanz@apple.com> | 2015-07-13 20:23:15 +0000 |
| commit | 8ac6d119b7f690c38a4e1f6b57a9ef9121588e27 (patch) | |
| tree | 172328cf53072f580000bd9ca8bb54f2cfc061ae /llvm/tools | |
| parent | cd42e7f77a788969bc9365b8b0b2f21e2308e04e (diff) | |
| download | bcm5719-llvm-8ac6d119b7f690c38a4e1f6b57a9ef9121588e27.tar.gz bcm5719-llvm-8ac6d119b7f690c38a4e1f6b57a9ef9121588e27.zip | |
[CMake] Cleanup tools/CMakeLists.txt to take advantage of the auto-registration that was already partially working.
Summary:
This change re-lands r241621, with an additional fix that was required to allow tool sources to live outside the llvm checkout. It also no longer renames LLVM_EXTERNAL_*_SOURCE_DIR. This change was reverted in r241663, because it renamed several variables of the format LLVM_EXTERNAL_*_* to LLVM_TOOL_*_*.
Original Summary:
The tools CMakeLists file already had implicit tool registration, but there were a few things off about it that needed to be altered to make it work. This change addresses all that. The changes in this patch are:
* factored out canonicalizing tool names from paths to CMake variables * removed the LLVM_IMPLICIT_PROJECT_IGNORE mechanism in favor of LLVM_EXTERNAL_${nameUPPER}_BUILD which I renamed to LLVM_TOOL_${nameUPPER}_BUILD because it applies to internal and external tools
* removed ignore_llvm_tool_subdirectory() in favor of just setting LLVM_TOOL_${nameUPPER}_BUILD to Off
* Added create_llvm_tool_options() to resolve a bug in add_llvm_external_project() - the old LLVM_EXTERNAL_${nameUPPER}_BUILD would not work on a clean CMake directory because the option could be created after it was set in code.
* Removed all but the minimum required calls to add_llvm_external_project from tools/CMakeLists.txt
Differential Revision: http://reviews.llvm.org/D10665
llvm-svn: 242059
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/CMakeLists.txt | 90 |
1 files changed, 21 insertions, 69 deletions
diff --git a/llvm/tools/CMakeLists.txt b/llvm/tools/CMakeLists.txt index c9c5a1fdfa0..71af2127810 100644 --- a/llvm/tools/CMakeLists.txt +++ b/llvm/tools/CMakeLists.txt @@ -1,85 +1,37 @@ -add_llvm_tool_subdirectory(llvm-config) +# This file will recurse into all subdirectories that contain CMakeLists.txt +# Setting variables that match the pattern LLVM_TOOL_{NAME}_BUILD to Off will +# prevent traversing into a directory. +# +# The only tools that need to be explicitly added are ones that have explicit +# ordering requirements. + +# Iterates all the subdirectories to create CMake options to enable/disable +# traversing each directory. +create_llvm_tool_options() # Build polly before the tools: the tools link against polly when # LINK_POLLY_INTO_TOOLS is set. if(WITH_POLLY) add_llvm_external_project(polly) -else(WITH_POLLY) - list(APPEND LLVM_IMPLICIT_PROJECT_IGNORE "${LLVM_MAIN_SRC_DIR}/tools/polly") -endif(WITH_POLLY) - -if( LLVM_BUILD_LLVM_DYLIB ) - add_llvm_tool_subdirectory(llvm-shlib) else() - ignore_llvm_tool_subdirectory(llvm-shlib) + set(LLVM_TOOL_POLLY_BUILD Off) endif() -add_llvm_tool_subdirectory(opt) -add_llvm_tool_subdirectory(llvm-as) -add_llvm_tool_subdirectory(llvm-dis) -add_llvm_tool_subdirectory(llvm-mc) - -add_llvm_tool_subdirectory(llc) -add_llvm_tool_subdirectory(llvm-ar) -add_llvm_tool_subdirectory(llvm-nm) -add_llvm_tool_subdirectory(llvm-size) - -add_llvm_tool_subdirectory(llvm-cov) -add_llvm_tool_subdirectory(llvm-profdata) -add_llvm_tool_subdirectory(llvm-link) -add_llvm_tool_subdirectory(lli) - -add_llvm_tool_subdirectory(llvm-extract) -add_llvm_tool_subdirectory(llvm-diff) -add_llvm_tool_subdirectory(macho-dump) -add_llvm_tool_subdirectory(llvm-objdump) -add_llvm_tool_subdirectory(llvm-readobj) -add_llvm_tool_subdirectory(llvm-rtdyld) -add_llvm_tool_subdirectory(llvm-dwarfdump) -add_llvm_tool_subdirectory(dsymutil) -add_llvm_tool_subdirectory(llvm-cxxdump) -if( LLVM_USE_INTEL_JITEVENTS ) - add_llvm_tool_subdirectory(llvm-jitlistener) -else() - ignore_llvm_tool_subdirectory(llvm-jitlistener) -endif( LLVM_USE_INTEL_JITEVENTS ) - -add_llvm_tool_subdirectory(bugpoint) -add_llvm_tool_subdirectory(bugpoint-passes) -add_llvm_tool_subdirectory(llvm-bcanalyzer) -add_llvm_tool_subdirectory(llvm-stress) -add_llvm_tool_subdirectory(llvm-mcmarkup) - -add_llvm_tool_subdirectory(verify-uselistorder) - -add_llvm_tool_subdirectory(llvm-symbolizer) - -add_llvm_tool_subdirectory(llvm-c-test) - -add_llvm_tool_subdirectory(obj2yaml) -add_llvm_tool_subdirectory(yaml2obj) - -add_llvm_tool_subdirectory(llvm-go) - -add_llvm_tool_subdirectory(llvm-pdbdump) - -if(NOT CYGWIN AND LLVM_ENABLE_PIC) - add_llvm_tool_subdirectory(lto) - add_llvm_tool_subdirectory(llvm-lto) -else() - ignore_llvm_tool_subdirectory(lto) - ignore_llvm_tool_subdirectory(llvm-lto) +if(NOT LLVM_BUILD_LLVM_DYLIB ) + set(LLVM_TOOL_LLVM_SHLIB_BUILD Off) endif() -add_llvm_tool_subdirectory(gold) +if(NOT LLVM_USE_INTEL_JITEVENTS ) + set(LLVM_TOOL_LLVM_JITLISTENER_BUILD Off) +endif() -add_llvm_external_project(clang) -add_llvm_external_project(llgo) -add_llvm_external_project(lld) -add_llvm_external_project(lldb) +if(CYGWIN OR NOT LLVM_ENABLE_PIC) + set(LLVM_TOOL_LTO_BUILD Off) + set(LLVM_TOOL_LLVM_LTO_BUILD Off) +endif() # Automatically add remaining sub-directories containing a 'CMakeLists.txt' # file as external projects. -add_llvm_implicit_external_projects() +add_llvm_implicit_projects() set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE) |

