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. 10 create_llvm_tool_options() 11 12 # Build polly before the tools: the tools link against polly when 13 # LINK_POLLY_INTO_TOOLS is set. 14 if(WITH_POLLY) 15 add_llvm_external_project(polly) 16 else() 17 set(LLVM_TOOL_POLLY_BUILD Off) 18 endif() 19 20 if(NOT LLVM_BUILD_LLVM_DYLIB ) 21 set(LLVM_TOOL_LLVM_SHLIB_BUILD Off) 22 endif() 23 24 if(NOT LLVM_USE_INTEL_JITEVENTS ) 25 set(LLVM_TOOL_LLVM_JITLISTENER_BUILD Off) 26 endif() 27 28 if(CYGWIN) 29 set(LLVM_TOOL_LTO_BUILD Off) 30 set(LLVM_TOOL_LLVM_LTO_BUILD Off) 31 endif() 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. 36 add_llvm_tool_subdirectory(lto) 37 add_llvm_tool_subdirectory(llvm-ar) 38 add_llvm_tool_subdirectory(llvm-config) 39 add_llvm_tool_subdirectory(llvm-profdata) 40 41 # Projects supported via LLVM_EXTERNAL_*_SOURCE_DIR need to be explicitly 42 # specified. 43 add_llvm_external_project(clang) 44 add_llvm_external_project(llgo) 45 add_llvm_external_project(lld) 46 add_llvm_external_project(lldb) 47 48 # Automatically add remaining sub-directories containing a 'CMakeLists.txt' 49 # file as external projects. 50 add_llvm_implicit_projects() 51 52 set(LLVM_COMMON_DEPENDS ${LLVM_COMMON_DEPENDS} PARENT_SCOPE) 53