• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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