]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/llvm/portfile.cmake
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / ports / llvm / portfile.cmake
CommitLineData
1e59de90
TL
1set(LLVM_VERSION "11.1.0")
2
3vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
4
5vcpkg_from_github(
6 OUT_SOURCE_PATH SOURCE_PATH
7 REPO llvm/llvm-project
8 REF llvmorg-${LLVM_VERSION}
9 SHA512 9a8ce022a935eed42fa71a224f2a207122aadcbef58ee855fdb4825f879e7d028e4dcff22c19b9d336db1c8bf63fb84372d44981acf84615f757e54306c92b81
10 HEAD_REF master
11 PATCHES
12 0001-add-msvc-options.patch # Fixed in LLVM 12.0.0
13 0002-fix-install-paths.patch # This patch fixes paths in ClangConfig.cmake, LLVMConfig.cmake, LLDConfig.cmake etc.
14 0003-fix-openmp-debug.patch
15 0004-fix-dr-1734.patch
16 0005-fix-tools-path.patch
17 0006-workaround-msvc-bug.patch # Fixed in LLVM 12.0.0
18 0007-fix-compiler-rt-install-path.patch
19 0008-fix-libcxx-install.patch
20 0009-fix-tools-install-path.patch
21)
22
23vcpkg_check_features(
24 OUT_FEATURE_OPTIONS FEATURE_OPTIONS
25 FEATURES
26 tools LLVM_BUILD_TOOLS
27 tools LLVM_INCLUDE_TOOLS
28 utils LLVM_BUILD_UTILS
29 utils LLVM_INCLUDE_UTILS
30 enable-rtti LLVM_ENABLE_RTTI
31 enable-ffi LLVM_ENABLE_FFI
32 enable-terminfo LLVM_ENABLE_TERMINFO
33 enable-threads LLVM_ENABLE_THREADS
34 enable-eh LLVM_ENABLE_EH
35 enable-bindings LLVM_ENABLE_BINDINGS
36)
37
38# LLVM generates CMake error due to Visual Studio version 16.4 is known to miscompile part of LLVM.
39# LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON disables this error.
40# See https://developercommunity.visualstudio.com/content/problem/845933/miscompile-boolean-condition-deduced-to-be-always.html
41# and thread "[llvm-dev] Longstanding failing tests - clang-tidy, MachO, Polly" on llvm-dev Jan 21-23 2020.
42list(APPEND FEATURE_OPTIONS
43 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON
44)
45
46# By default assertions are enabled for Debug configuration only.
47if("enable-assertions" IN_LIST FEATURES)
48 # Force enable assertions for all configurations.
49 list(APPEND FEATURE_OPTIONS
50 -DLLVM_ENABLE_ASSERTIONS=ON
51 )
52elseif("disable-assertions" IN_LIST FEATURES)
53 # Force disable assertions for all configurations.
54 list(APPEND FEATURE_OPTIONS
55 -DLLVM_ENABLE_ASSERTIONS=OFF
56 )
57endif()
58
59# LLVM_ABI_BREAKING_CHECKS can be WITH_ASSERTS (default), FORCE_ON or FORCE_OFF.
60# By default abi-breaking checks are enabled if assertions are enabled.
61if("enable-abi-breaking-checks" IN_LIST FEATURES)
62 # Force enable abi-breaking checks.
63 list(APPEND FEATURE_OPTIONS
64 -DLLVM_ABI_BREAKING_CHECKS=FORCE_ON
65 )
66elseif("disable-abi-breaking-checks" IN_LIST FEATURES)
67 # Force disable abi-breaking checks.
68 list(APPEND FEATURE_OPTIONS
69 -DLLVM_ABI_BREAKING_CHECKS=FORCE_OFF
70 )
71endif()
72
73set(LLVM_ENABLE_PROJECTS)
74if("clang" IN_LIST FEATURES OR "clang-tools-extra" IN_LIST FEATURES)
75 list(APPEND LLVM_ENABLE_PROJECTS "clang")
76 if("disable-clang-static-analyzer" IN_LIST FEATURES)
77 list(APPEND FEATURE_OPTIONS
78 # Disable ARCMT
79 -DCLANG_ENABLE_ARCMT=OFF
80 # Disable static analyzer
81 -DCLANG_ENABLE_STATIC_ANALYZER=OFF
82 )
83 endif()
84 # 1) LLVM/Clang tools are relocated from ./bin/ to ./tools/llvm/ (LLVM_TOOLS_INSTALL_DIR=tools/llvm)
85 # 2) Clang resource files are relocated from ./lib/clang/<version> to ./tools/llvm/lib/clang/<version> (see patch 0007-fix-compiler-rt-install-path.patch)
86 # So, the relative path should be changed from ../lib/clang/<version> to ./lib/clang/<version>
87 list(APPEND FEATURE_OPTIONS -DCLANG_RESOURCE_DIR=lib/clang/${LLVM_VERSION})
88endif()
89if("clang-tools-extra" IN_LIST FEATURES)
90 list(APPEND LLVM_ENABLE_PROJECTS "clang-tools-extra")
91endif()
92if("compiler-rt" IN_LIST FEATURES)
93 list(APPEND LLVM_ENABLE_PROJECTS "compiler-rt")
94endif()
95if("flang" IN_LIST FEATURES)
96 # Disable Flang on Windows (see http://lists.llvm.org/pipermail/flang-dev/2020-July/000448.html).
97 if(VCPKG_TARGET_IS_WINDOWS)
98 message(FATAL_ERROR "Building Flang with MSVC is not supported. Disable it until issues are fixed.")
99 endif()
100 list(APPEND LLVM_ENABLE_PROJECTS "flang")
101 list(APPEND FEATURE_OPTIONS
102 # Flang requires C++17
103 -DCMAKE_CXX_STANDARD=17
104 )
105endif()
106if("libclc" IN_LIST FEATURES)
107 list(APPEND LLVM_ENABLE_PROJECTS "libclc")
108endif()
109if("libcxx" IN_LIST FEATURES)
110 if(VCPKG_TARGET_IS_WINDOWS)
111 message(FATAL_ERROR "Building libcxx with MSVC is not supported. Disable it until issues are fixed.")
112 endif()
113 list(APPEND LLVM_ENABLE_PROJECTS "libcxx")
114endif()
115if("libcxxabi" IN_LIST FEATURES)
116 if(VCPKG_TARGET_IS_WINDOWS)
117 message(FATAL_ERROR "Building libcxxabi with MSVC is not supported. Disable it until issues are fixed.")
118 endif()
119 list(APPEND LLVM_ENABLE_PROJECTS "libcxxabi")
120endif()
121if("libunwind" IN_LIST FEATURES)
122 if(VCPKG_TARGET_IS_WINDOWS)
123 message(FATAL_ERROR "Building libunwind with MSVC is not supported. Disable it until issues are fixed.")
124 endif()
125 list(APPEND LLVM_ENABLE_PROJECTS "libunwind")
126endif()
127if("lld" IN_LIST FEATURES)
128 list(APPEND LLVM_ENABLE_PROJECTS "lld")
129endif()
130if("lldb" IN_LIST FEATURES)
131 list(APPEND LLVM_ENABLE_PROJECTS "lldb")
132endif()
133if("mlir" IN_LIST FEATURES)
134 list(APPEND LLVM_ENABLE_PROJECTS "mlir")
135endif()
136if("openmp" IN_LIST FEATURES)
137 # Disable OpenMP on Windows (see https://bugs.llvm.org/show_bug.cgi?id=45074).
138 if(VCPKG_TARGET_IS_WINDOWS)
139 message(FATAL_ERROR "Building OpenMP with MSVC is not supported. Disable it until issues are fixed.")
140 endif()
141 list(APPEND LLVM_ENABLE_PROJECTS "openmp")
142 # Perl is required for the OpenMP run-time
143 vcpkg_find_acquire_program(PERL)
144 list(APPEND FEATURE_OPTIONS
145 "-DPERL_EXECUTABLE=${PERL}"
146 )
147 if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
148 list(APPEND FEATURE_OPTIONS
149 -DLIBOMP_DEFAULT_LIB_NAME=libompd
150 )
151 endif()
152endif()
153if("parallel-libs" IN_LIST FEATURES)
154 list(APPEND LLVM_ENABLE_PROJECTS "parallel-libs")
155endif()
156if("polly" IN_LIST FEATURES)
157 list(APPEND LLVM_ENABLE_PROJECTS "polly")
158endif()
159if("pstl" IN_LIST FEATURES)
160 if(VCPKG_TARGET_IS_WINDOWS)
161 message(FATAL_ERROR "Building pstl with MSVC is not supported. Disable it until issues are fixed.")
162 endif()
163 list(APPEND LLVM_ENABLE_PROJECTS "pstl")
164endif()
165
166set(known_llvm_targets
167 AArch64
168 AMDGPU
169 ARM
170 AVR
171 BPF
172 Hexagon
173 Lanai
174 Mips
175 MSP430
176 NVPTX
177 PowerPC
178 RISCV
179 Sparc
180 SystemZ
181 WebAssembly
182 X86
183 XCore
184)
185
186set(LLVM_TARGETS_TO_BUILD "")
187foreach(llvm_target IN LISTS known_llvm_targets)
188 string(TOLOWER "target-${llvm_target}" feature_name)
189 if(feature_name IN_LIST FEATURES)
190 list(APPEND LLVM_TARGETS_TO_BUILD "${llvm_target}")
191 endif()
192endforeach()
193
194vcpkg_find_acquire_program(PYTHON3)
195get_filename_component(PYTHON3_DIR ${PYTHON3} DIRECTORY)
196vcpkg_add_to_path(${PYTHON3_DIR})
197
198vcpkg_configure_cmake(
199 SOURCE_PATH ${SOURCE_PATH}/llvm
200 PREFER_NINJA
201 OPTIONS
202 ${FEATURE_OPTIONS}
203 -DLLVM_INCLUDE_EXAMPLES=OFF
204 -DLLVM_BUILD_EXAMPLES=OFF
205 -DLLVM_INCLUDE_TESTS=OFF
206 -DLLVM_BUILD_TESTS=OFF
207 # Disable optional dependencies to libxml2 and zlib.
208 -DLLVM_ENABLE_LIBXML2=OFF
209 -DLLVM_ENABLE_ZLIB=OFF
210 # Force TableGen to be built with optimization. This will significantly improve build time.
211 -DLLVM_OPTIMIZED_TABLEGEN=ON
212 "-DLLVM_ENABLE_PROJECTS=${LLVM_ENABLE_PROJECTS}"
213 "-DLLVM_TARGETS_TO_BUILD=${LLVM_TARGETS_TO_BUILD}"
214 -DPACKAGE_VERSION=${LLVM_VERSION}
215 # Limit the maximum number of concurrent link jobs to 1. This should fix low amount of memory issue for link.
216 -DLLVM_PARALLEL_LINK_JOBS=1
217 # Disable build LLVM-C.dll (Windows only) due to doesn't compile with CMAKE_DEBUG_POSTFIX
218 -DLLVM_BUILD_LLVM_C_DYLIB=OFF
219 # Path for binary subdirectory (defaults to 'bin')
220 -DLLVM_TOOLS_INSTALL_DIR=tools/llvm
221 OPTIONS_DEBUG
222 -DCMAKE_DEBUG_POSTFIX=d
223)
224
225vcpkg_install_cmake()
226
227vcpkg_fixup_cmake_targets(CONFIG_PATH "share/llvm" TARGET_PATH "share/llvm")
228file(INSTALL ${SOURCE_PATH}/llvm/LICENSE.TXT DESTINATION ${CURRENT_PACKAGES_DIR}/share/llvm RENAME copyright)
229file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/llvm_usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/llvm RENAME usage)
230
231if("clang" IN_LIST FEATURES)
232 vcpkg_fixup_cmake_targets(CONFIG_PATH "share/clang" TARGET_PATH "share/clang" DO_NOT_DELETE_PARENT_CONFIG_PATH)
233 file(INSTALL ${SOURCE_PATH}/clang/LICENSE.TXT DESTINATION ${CURRENT_PACKAGES_DIR}/share/clang RENAME copyright)
234 file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/clang_usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/clang RENAME usage)
235endif()
236
237if("clang-tools-extra" IN_LIST FEATURES)
238 # Remove empty include directory include/clang-tidy/plugin
239 file(GLOB_RECURSE INCLUDE_CLANG_TIDY_PLUGIN_FILES "${CURRENT_PACKAGES_DIR}/include/clang-tidy/plugin/*")
240 if(NOT INCLUDE_CLANG_TIDY_PLUGIN_FILES)
241 file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/clang-tidy/plugin")
242 endif()
243endif()
244
245if("flang" IN_LIST FEATURES)
246 vcpkg_fixup_cmake_targets(CONFIG_PATH "share/flang" TARGET_PATH "share/flang" DO_NOT_DELETE_PARENT_CONFIG_PATH)
247 file(INSTALL ${SOURCE_PATH}/flang/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/flang RENAME copyright)
248 file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/flang_usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/flang RENAME usage)
249 # Remove empty include directory /include/flang/Config
250 file(GLOB_RECURSE INCLUDE_FLANG_CONFIG_FILES "${CURRENT_PACKAGES_DIR}/include/flang/Config/*")
251 if(NOT INCLUDE_FLANG_CONFIG_FILES)
252 file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/flang/Config")
253 endif()
254endif()
255
256if("lld" IN_LIST FEATURES)
257 vcpkg_fixup_cmake_targets(CONFIG_PATH "share/lld" TARGET_PATH "share/lld" DO_NOT_DELETE_PARENT_CONFIG_PATH)
258 file(INSTALL ${SOURCE_PATH}/lld/LICENSE.TXT DESTINATION ${CURRENT_PACKAGES_DIR}/share/lld RENAME copyright)
259 file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/lld_usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/lld RENAME usage)
260endif()
261
262if("mlir" IN_LIST FEATURES)
263 vcpkg_fixup_cmake_targets(CONFIG_PATH "share/mlir" TARGET_PATH "share/mlir" DO_NOT_DELETE_PARENT_CONFIG_PATH)
264 file(INSTALL ${SOURCE_PATH}/mlir/LICENSE.TXT DESTINATION ${CURRENT_PACKAGES_DIR}/share/mlir RENAME copyright)
265 file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/mlir_usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/mlir RENAME usage)
266endif()
267
268if("polly" IN_LIST FEATURES)
269 vcpkg_fixup_cmake_targets(CONFIG_PATH "share/polly" TARGET_PATH "share/polly" DO_NOT_DELETE_PARENT_CONFIG_PATH)
270 file(INSTALL ${SOURCE_PATH}/polly/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/polly RENAME copyright)
271endif()
272
273if("pstl" IN_LIST FEATURES)
274 vcpkg_fixup_cmake_targets(CONFIG_PATH "share/ParallelSTL" TARGET_PATH "share/ParallelSTL" DO_NOT_DELETE_PARENT_CONFIG_PATH)
275 file(INSTALL ${SOURCE_PATH}/pstl/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/ParallelSTL RENAME copyright)
276endif()
277
278vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT})
279
280if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
281 file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
282 file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
283 file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/tools)
284endif()
285
286# LLVM still generates a few DLLs in the static build:
287# * libclang.dll
288# * LTO.dll
289# * Remarks.dll
290set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled)