X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=tools%2FCMakeLists.txt;h=aca4350fcb286d07c7f141c99ba8d46469641d96;hb=24346ed19fa1f2d699578307b52b1595b0888834;hp=b9c77b1c8a38d0234c1c7b48581b69e8b8eea91a;hpb=0a6f053732c7a654cb9fe3e501680a104c3381a1;p=oota-llvm.git diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index b9c77b1c8a3..aca4350fcb2 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1,41 +1,48 @@ -# NOTE: The tools are organized into five groups of four consisting of one -# large and three small executables. This is done to minimize memory load -# in parallel builds. Please retain this ordering. - -if( NOT WIN32 OR MSYS OR CYGWIN ) - # It is useful to build llvm-config before the other tools, so we - # have a fresh LibDeps.txt for regenerating the hard-coded library - # dependencies. llvm-config/CMakeLists.txt takes care of this but we - # must keep llvm-config as the first entry on the list of tools to - # be built. - add_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() + set(LLVM_TOOL_POLLY_BUILD Off) endif() -add_subdirectory(opt) -add_subdirectory(llvm-as) -add_subdirectory(llvm-dis) -add_subdirectory(llvm-mc) +if(NOT LLVM_BUILD_LLVM_DYLIB ) + set(LLVM_TOOL_LLVM_SHLIB_BUILD Off) +endif() -add_subdirectory(llc) -add_subdirectory(llvm-ranlib) -add_subdirectory(llvm-ar) -add_subdirectory(llvm-nm) +if(NOT LLVM_USE_INTEL_JITEVENTS ) + set(LLVM_TOOL_LLVM_JITLISTENER_BUILD Off) +endif() -add_subdirectory(llvm-ld) -add_subdirectory(llvm-prof) -add_subdirectory(llvm-link) -add_subdirectory(lli) +if(CYGWIN OR NOT LLVM_ENABLE_PIC) + set(LLVM_TOOL_LTO_BUILD Off) + set(LLVM_TOOL_LLVM_LTO_BUILD Off) +endif() -add_subdirectory(llvm-extract) +# Add LTO before clang, ExternalProject requires targets specified in DEPENDS +# to exist before the call to ExternalProject_Add +add_llvm_tool_subdirectory(lto) -add_subdirectory(bugpoint) -add_subdirectory(llvm-bcanalyzer) -add_subdirectory(llvm-stub) -add_subdirectory(edis) -add_subdirectory(llvmc) +# 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( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/clang/CMakeLists.txt ) - add_subdirectory( ${CMAKE_CURRENT_SOURCE_DIR}/clang ) -endif( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/clang/CMakeLists.txt ) +# 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)