1# This file will recurse into all subdirectories that contain CMakeLists.txt 2# Setting variables that match the pattern LLVM_TOOL_{NAME}_BUILD to Off will 3# prevent traversing into a directory. 4# 5# The only tools that need to be explicitly added are ones that have explicit 6# ordering requirements. 7 8# Iterates all the subdirectories to create CMake options to enable/disable 9# traversing each directory. 10create_llvm_tool_options() 11 12# Build polly before the tools: the tools link against polly when 13# LINK_POLLY_INTO_TOOLS is set. 14if(WITH_POLLY) 15 add_llvm_external_project(polly) 16else() 17 set(LLVM_TOOL_POLLY_BUILD Off) 18endif() 19 20if(NOT LLVM_BUILD_LLVM_DYLIB ) 21 set(LLVM_TOOL_LLVM_SHLIB_BUILD Off) 22endif() 23 24if(NOT LLVM_USE_INTEL_JITEVENTS ) 25 set(LLVM_TOOL_LLVM_JITLISTENER_BUILD Off) 26endif() 27 28if(CYGWIN OR NOT LLVM_ENABLE_PIC) 29 set(LLVM_TOOL_LTO_BUILD Off) 30 set(LLVM_TOOL_LLVM_LTO_BUILD Off) 31endif() 32 33# Add LTO, llvm-ar, llvm-config, and llvm-profdata before clang, ExternalProject 34# requires targets specified in DEPENDS to exist before the call to 35# ExternalProject_Add. 36add_llvm_tool_subdirectory(lto) 37add_llvm_tool_subdirectory(gold) 38add_llvm_tool_subdirectory(llvm-ar) 39add_llvm_tool_subdirectory(llvm-config) 40add_llvm_tool_subdirectory(llvm-lto) 41add_llvm_tool_subdirectory(llvm-profdata) 42 43# Projects supported via LLVM_EXTERNAL_*_SOURCE_DIR need to be explicitly 44# specified. 45add_llvm_external_project(clang) 46add_llvm_external_project(llgo) 47add_llvm_external_project(lld) 48add_llvm_external_project(lldb) 49 50# Automatically add remaining sub-directories containing a 'CMakeLists.txt' 51# file as external projects. 52add_llvm_implicit_projects() 53 54# Add subprojects specified using LLVM_EXTERNAL_PROJECTS 55foreach(p ${LLVM_EXTERNAL_PROJECTS}) 56 add_llvm_external_project(${p}) 57endforeach(p) 58 59set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE) 60