X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=tools%2FCMakeLists.txt;h=952e114408ad98a2490ee6667180323eaec23ff9;hp=26d2dfde931a09573a8ac9b007a51be367edee63;hb=5ab5648165f4a41b7274c18ad62406b12b2119c6;hpb=4c76da87e2eadb150d00392d89220e8e750a68ab diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 26d2dfde931..952e114408a 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1,95 +1,49 @@ -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-vtabledump) -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) +if(NOT LLVM_BUILD_LLVM_DYLIB ) + set(LLVM_TOOL_LLVM_SHLIB_BUILD Off) +endif() -if(MSVC AND NOT(MSVC_VERSION LESS 1800)) - # Certain aspects of llvm-pdbdump require language support only present in - # MSVC 2013 and higher. Since this is strictly a utility, and since we hope - # to drop support for MSVC 2012 soon, don't build this for MSVC < 2013. - add_llvm_tool_subdirectory(llvm-pdbdump) -else() - ignore_llvm_tool_subdirectory(llvm-pdbdump) +if(NOT LLVM_USE_INTEL_JITEVENTS ) + set(LLVM_TOOL_LLVM_JITLISTENER_BUILD Off) endif() -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(CYGWIN OR NOT LLVM_ENABLE_PIC) + set(LLVM_TOOL_LTO_BUILD Off) + set(LLVM_TOOL_LLVM_LTO_BUILD Off) endif() -add_llvm_tool_subdirectory(gold) +# Add LTO and llvm-ar before clang, ExternalProject requires targets specified +# in DEPENDS to exist before the call to ExternalProject_Add. +add_llvm_tool_subdirectory(lto) +add_llvm_tool_subdirectory(llvm-ar) +# Projects supported via LLVM_EXTERNAL_*_SOURCE_DIR need to be explicitly +# specified. add_llvm_external_project(clang) add_llvm_external_project(llgo) +add_llvm_external_project(lld) +add_llvm_external_project(lldb) -if( NOT LLVM_INCLUDE_TOOLS STREQUAL "bootstrap-only" ) - add_llvm_external_project(lld) - add_llvm_external_project(lldb) - - # Automatically add remaining sub-directories containing a 'CMakeLists.txt' - # file as external projects. - add_llvm_implicit_external_projects() -endif() +# Automatically add remaining sub-directories containing a 'CMakeLists.txt' +# file as external projects. +add_llvm_implicit_projects() set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE)