xref: /llvm-project/clang/cmake/caches/Fuchsia.cmake (revision 8cffab821c4b96c73fc4ad5e8ca2417ced953c5a)
1# This file sets up a CMakeCache for a Fuchsia toolchain build.
2
3option(FUCHSIA_ENABLE_LLDB "Enable LLDB")
4
5set(LLVM_TARGETS_TO_BUILD X86;ARM;AArch64;RISCV CACHE STRING "")
6
7set(PACKAGE_VENDOR Fuchsia CACHE STRING "")
8
9set(_FUCHSIA_ENABLE_PROJECTS "bolt;clang;clang-tools-extra;lld;llvm;polly")
10
11set(LLVM_ENABLE_DIA_SDK OFF CACHE BOOL "")
12set(LLVM_ENABLE_LIBEDIT OFF CACHE BOOL "")
13set(LLVM_ENABLE_LIBXML2 OFF CACHE BOOL "")
14set(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR ON CACHE BOOL "")
15set(LLVM_ENABLE_UNWIND_TABLES OFF CACHE BOOL "")
16set(LLVM_ENABLE_Z3_SOLVER OFF CACHE BOOL "")
17set(LLVM_ENABLE_ZLIB OFF CACHE BOOL "")
18set(LLVM_INCLUDE_DOCS OFF CACHE BOOL "")
19set(LLVM_INCLUDE_EXAMPLES OFF CACHE BOOL "")
20set(LLVM_USE_RELATIVE_PATHS_IN_FILES ON CACHE BOOL "")
21set(LLDB_ENABLE_CURSES OFF CACHE BOOL "")
22set(LLDB_ENABLE_LIBEDIT OFF CACHE BOOL "")
23
24# Passthrough stage1 flags to stage1.
25set(_FUCHSIA_BOOTSTRAP_PASSTHROUGH
26  LLVM_ENABLE_ZLIB
27  ZLIB_INCLUDE_DIR
28  ZLIB_LIBRARY
29  LLVM_ENABLE_ZSTD
30  zstd_DIR
31  LLVM_ENABLE_LIBXML2
32  LibXml2_ROOT
33  LLVM_ENABLE_CURL
34  LLVM_ENABLE_HTTPLIB
35  LLVM_ENABLE_LIBEDIT
36  CURL_ROOT
37  OpenSSL_ROOT
38  httplib_ROOT
39
40  # Deprecated
41  CursesAndPanel_ROOT
42
43  CURSES_INCLUDE_DIRS
44  CURSES_LIBRARIES
45  PANEL_LIBRARIES
46
47  # Deprecated
48  LibEdit_ROOT
49
50  LibEdit_INCLUDE_DIRS
51  LibEdit_LIBRARIES
52
53  FUCHSIA_ENABLE_LLDB
54  LLDB_ENABLE_CURSES
55  LLDB_ENABLE_LIBEDIT
56  LLDB_ENABLE_PYTHON
57  LLDB_EMBED_PYTHON_HOME
58  LLDB_PYTHON_HOME
59  LLDB_PYTHON_RELATIVE_PATH
60  LLDB_TEST_USER_ARGS
61  Python3_EXECUTABLE
62  Python3_LIBRARIES
63  Python3_INCLUDE_DIRS
64  Python3_RPATH
65  SWIG_DIR
66  SWIG_EXECUTABLE
67  CMAKE_FIND_PACKAGE_PREFER_CONFIG
68  CMAKE_SYSROOT
69  LLVM_WINSYSROOT
70  LLVM_VFSOVERLAY
71)
72
73foreach(variable ${_FUCHSIA_BOOTSTRAP_PASSTHROUGH})
74  get_property(is_value_set CACHE ${variable} PROPERTY VALUE SET)
75  if(${is_value_set})
76    get_property(value CACHE ${variable} PROPERTY VALUE)
77    get_property(type CACHE ${variable} PROPERTY TYPE)
78    set(BOOTSTRAP_${variable} "${value}" CACHE ${type} "")
79  endif()
80endforeach()
81
82set(CLANG_DEFAULT_CXX_STDLIB libc++ CACHE STRING "")
83set(CLANG_DEFAULT_LINKER lld CACHE STRING "")
84set(CLANG_DEFAULT_OBJCOPY llvm-objcopy CACHE STRING "")
85set(CLANG_DEFAULT_RTLIB compiler-rt CACHE STRING "")
86set(CLANG_DEFAULT_UNWINDLIB libunwind CACHE STRING "")
87set(CLANG_ENABLE_ARCMT OFF CACHE BOOL "")
88set(CLANG_ENABLE_STATIC_ANALYZER OFF CACHE BOOL "")
89set(CLANG_PLUGIN_SUPPORT OFF CACHE BOOL "")
90
91set(ENABLE_LINKER_BUILD_ID ON CACHE BOOL "")
92set(ENABLE_X86_RELAX_RELOCATIONS ON CACHE BOOL "")
93
94set(LLVM_ENABLE_ASSERTIONS ON CACHE BOOL "")
95set(LLVM_ENABLE_BACKTRACES ON CACHE BOOL "")
96set(CMAKE_BUILD_TYPE Release CACHE STRING "")
97if(APPLE)
98  set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "")
99elseif(WIN32)
100  set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded" CACHE STRING "")
101endif()
102
103if(APPLE)
104  set(COMPILER_RT_ENABLE_IOS OFF CACHE BOOL "")
105  set(COMPILER_RT_ENABLE_TVOS OFF CACHE BOOL "")
106  set(COMPILER_RT_ENABLE_WATCHOS OFF CACHE BOOL "")
107endif()
108
109if(WIN32)
110  set(LIBCXX_ABI_VERSION 2 CACHE STRING "")
111  set(LIBCXX_ENABLE_ABI_LINKER_SCRIPT OFF CACHE BOOL "")
112  set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
113  set(BUILTINS_CMAKE_ARGS -DCMAKE_SYSTEM_NAME=Windows CACHE STRING "")
114  set(RUNTIMES_CMAKE_ARGS -DCMAKE_SYSTEM_NAME=Windows CACHE STRING "")
115  set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx" CACHE STRING "")
116else()
117  set(LIBUNWIND_ENABLE_SHARED OFF CACHE BOOL "")
118  set(LIBUNWIND_INSTALL_LIBRARY OFF CACHE BOOL "")
119  set(LIBUNWIND_USE_COMPILER_RT ON CACHE BOOL "")
120  set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
121  set(LIBCXXABI_ENABLE_STATIC_UNWINDER ON CACHE BOOL "")
122  set(LIBCXXABI_INSTALL_LIBRARY OFF CACHE BOOL "")
123  set(LIBCXXABI_USE_COMPILER_RT ON CACHE BOOL "")
124  set(LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "")
125  set(LIBCXX_ABI_VERSION 2 CACHE STRING "")
126  set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
127  set(LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
128  set(LIBCXX_HARDENING_MODE "none" CACHE STRING "")
129  set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
130  set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "")
131  set(RUNTIMES_CMAKE_ARGS "-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13;-DCMAKE_OSX_ARCHITECTURES=arm64|x86_64" CACHE STRING "")
132endif()
133
134if(BOOTSTRAP_CMAKE_SYSTEM_NAME)
135  set(target "${BOOTSTRAP_CMAKE_CXX_COMPILER_TARGET}")
136  if(STAGE2_LINUX_${target}_SYSROOT)
137    set(LLVM_BUILTIN_TARGETS "${target}" CACHE STRING "")
138    set(BUILTINS_${target}_CMAKE_SYSTEM_NAME Linux CACHE STRING "")
139    set(BUILTINS_${target}_CMAKE_BUILD_TYPE Release CACHE STRING "")
140    set(BUILTINS_${target}_CMAKE_SYSROOT ${STAGE2_LINUX_${target}_SYSROOT} CACHE STRING "")
141
142    set(LLVM_RUNTIME_TARGETS "${target}" CACHE STRING "")
143    set(RUNTIMES_${target}_CMAKE_SYSTEM_NAME Linux CACHE STRING "")
144    set(RUNTIMES_${target}_CMAKE_BUILD_TYPE Release CACHE STRING "")
145    set(RUNTIMES_${target}_CMAKE_SYSROOT ${STAGE2_LINUX_${target}_SYSROOT} CACHE STRING "")
146    set(RUNTIMES_${target}_COMPILER_RT_USE_BUILTINS_LIBRARY ON CACHE BOOL "")
147    set(RUNTIMES_${target}_LIBUNWIND_ENABLE_SHARED OFF CACHE BOOL "")
148    set(RUNTIMES_${target}_LIBUNWIND_USE_COMPILER_RT ON CACHE BOOL "")
149    set(RUNTIMES_${target}_LIBUNWIND_INSTALL_LIBRARY OFF CACHE BOOL "")
150    set(RUNTIMES_${target}_LIBCXXABI_USE_COMPILER_RT ON CACHE BOOL "")
151    set(RUNTIMES_${target}_LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
152    set(RUNTIMES_${target}_LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "")
153    set(RUNTIMES_${target}_LIBCXXABI_ENABLE_STATIC_UNWINDER ON CACHE BOOL "")
154    set(RUNTIMES_${target}_LIBCXXABI_INSTALL_LIBRARY OFF CACHE BOOL "")
155    set(RUNTIMES_${target}_LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
156    set(RUNTIMES_${target}_LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
157    set(RUNTIMES_${target}_LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
158    set(RUNTIMES_${target}_LIBCXX_ABI_VERSION 2 CACHE STRING "")
159    set(RUNTIMES_${target}_LLVM_ENABLE_ASSERTIONS OFF CACHE BOOL "")
160    set(RUNTIMES_${target}_LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "")
161    set(RUNTIMES_${target}_SANITIZER_CXX_ABI "libc++" CACHE STRING "")
162    set(RUNTIMES_${target}_SANITIZER_CXX_ABI_INTREE ON CACHE BOOL "")
163  endif()
164endif()
165
166set(BOOTSTRAP_LLVM_ENABLE_LLD ON CACHE BOOL "")
167set(BOOTSTRAP_LLVM_ENABLE_LTO ON CACHE BOOL "")
168
169set(_FUCHSIA_BOOTSTRAP_TARGETS
170  check-all
171  check-clang
172  check-lld
173  check-llvm
174  check-polly
175  llvm-config
176  clang-test-depends
177  lld-test-depends
178  llvm-test-depends
179  test-suite
180  test-depends
181  toolchain-distribution
182  install-toolchain-distribution
183  install-toolchain-distribution-stripped
184  install-toolchain-distribution-toolchain
185  clang)
186
187if(FUCHSIA_ENABLE_LLDB)
188  list(APPEND _FUCHSIA_ENABLE_PROJECTS lldb)
189  list(APPEND _FUCHSIA_BOOTSTRAP_TARGETS
190    check-lldb
191    lldb-test-depends
192    debugger-distribution
193    install-debugger-distribution
194    install-debugger-distribution-stripped
195    install-debugger-distribution-toolchain)
196endif()
197
198set(LLVM_ENABLE_PROJECTS ${_FUCHSIA_ENABLE_PROJECTS} CACHE STRING "")
199set(CLANG_BOOTSTRAP_TARGETS ${_FUCHSIA_BOOTSTRAP_TARGETS} CACHE STRING "")
200
201get_cmake_property(variableNames VARIABLES)
202foreach(variableName ${variableNames})
203  if(variableName MATCHES "^STAGE2_")
204    string(REPLACE "STAGE2_" "" new_name ${variableName})
205    string(REPLACE ";" "|" value "${${variableName}}")
206    list(APPEND EXTRA_ARGS "-D${new_name}=${value}")
207  endif()
208endforeach()
209
210# TODO: This is a temporary workaround until we figure out the right solution.
211set(BOOTSTRAP_LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "")
212
213# Setup the bootstrap build.
214set(CLANG_ENABLE_BOOTSTRAP ON CACHE BOOL "")
215set(CLANG_BOOTSTRAP_EXTRA_DEPS
216  builtins
217  runtimes
218  CACHE STRING "")
219set(CLANG_BOOTSTRAP_CMAKE_ARGS
220  ${EXTRA_ARGS}
221  -C ${CMAKE_CURRENT_LIST_DIR}/Fuchsia-stage2.cmake
222  CACHE STRING "")
223