diff options
Diffstat (limited to 'recipes-devtools/clang/clang_git.bb')
-rw-r--r-- | recipes-devtools/clang/clang_git.bb | 499 |
1 files changed, 0 insertions, 499 deletions
diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb deleted file mode 100644 index 6e2817c..0000000 --- a/recipes-devtools/clang/clang_git.bb +++ /dev/null | |||
@@ -1,499 +0,0 @@ | |||
1 | # Copyright (C) 2014 Khem Raj <raj.khem@gmail.com> | ||
2 | # Released under the MIT license (see COPYING.MIT for the terms) | ||
3 | |||
4 | SUMMARY = "LLVM based C/C++ compiler" | ||
5 | DESCRIPTION = "Clang is an LLVM based C/C++/Objective-C compiler, \ | ||
6 | which aims to deliver amazingly fast compiles, \ | ||
7 | extremely useful error and warning messages and \ | ||
8 | to provide a platform for building great source \ | ||
9 | level tools. The Clang Static Analyzer and \ | ||
10 | clang-tidy are tools that automatically find bugs \ | ||
11 | in your code, and are great examples of the sort \ | ||
12 | of tools that can be built using the Clang frontend \ | ||
13 | as a library to parse C/C++ code" | ||
14 | HOMEPAGE = "http://clang.llvm.org/" | ||
15 | SECTION = "devel" | ||
16 | |||
17 | require clang.inc | ||
18 | require common-source.inc | ||
19 | |||
20 | INHIBIT_DEFAULT_DEPS = "1" | ||
21 | |||
22 | BUILD_CC:class-nativesdk = "clang" | ||
23 | BUILD_CXX:class-nativesdk = "clang++" | ||
24 | BUILD_AR:class-nativesdk = "llvm-ar" | ||
25 | BUILD_RANLIB:class-nativesdk = "llvm-ranlib" | ||
26 | BUILD_NM:class-nativesdk = "llvm-nm" | ||
27 | |||
28 | BUILDSDK_CPPFLAGS:append:class-nativesdk = "${@oe.utils.vartrue('DEBUG_BUILD', ' -Wno-error=unused-command-line-argument', '', d)}" | ||
29 | |||
30 | LDFLAGS:remove:class-nativesdk = "-fuse-ld=lld" | ||
31 | |||
32 | LDFLAGS:append:class-target:riscv32 = " -Wl,--no-as-needed -latomic -Wl,--as-needed" | ||
33 | LDFLAGS:append:class-target:mips = " -Wl,--no-as-needed -latomic -Wl,--as-needed" | ||
34 | |||
35 | inherit cmake cmake-native pkgconfig python3native python3targetconfig | ||
36 | |||
37 | OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH" | ||
38 | |||
39 | def get_clang_arch(bb, d, arch_var): | ||
40 | import re | ||
41 | a = d.getVar(arch_var) | ||
42 | if re.match('(i.86|athlon|x86.64)$', a): return 'X86' | ||
43 | elif re.match('arm$', a): return 'ARM' | ||
44 | elif re.match('armeb$', a): return 'ARM' | ||
45 | elif re.match('aarch64$', a): return 'AArch64' | ||
46 | elif re.match('aarch64_be$', a): return 'AArch64' | ||
47 | elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips' | ||
48 | elif re.match('riscv32$', a): return 'riscv32' | ||
49 | elif re.match('riscv64$', a): return 'riscv64' | ||
50 | elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC' | ||
51 | elif re.match('loongarch64$', a): return 'loongarch64' | ||
52 | else: | ||
53 | bb.note("'%s' is not a primary llvm architecture" % a) | ||
54 | return "" | ||
55 | |||
56 | def get_clang_host_arch(bb, d): | ||
57 | return get_clang_arch(bb, d, 'HOST_ARCH') | ||
58 | |||
59 | def get_clang_target_arch(bb, d): | ||
60 | return get_clang_arch(bb, d, 'TARGET_ARCH') | ||
61 | |||
62 | PACKAGECONFIG_CLANG_COMMON = "build-id eh libedit rtti shared-libs \ | ||
63 | ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcplusplus libomp unwindlib', '', d)} \ | ||
64 | " | ||
65 | |||
66 | PACKAGECONFIG ??= "compiler-rt libcplusplus lldb-wchar terminfo \ | ||
67 | ${PACKAGECONFIG_CLANG_COMMON} \ | ||
68 | ${@bb.utils.filter('DISTRO_FEATURES', 'lto thin-lto', d)} \ | ||
69 | " | ||
70 | PACKAGECONFIG:class-native = "clangd \ | ||
71 | ${PACKAGECONFIG_CLANG_COMMON} \ | ||
72 | " | ||
73 | PACKAGECONFIG:class-nativesdk = "clangd \ | ||
74 | ${PACKAGECONFIG_CLANG_COMMON} \ | ||
75 | ${@bb.utils.filter('DISTRO_FEATURES', 'lto thin-lto', d)} \ | ||
76 | " | ||
77 | |||
78 | PACKAGECONFIG[bootstrap] = "-DCLANG_ENABLE_BOOTSTRAP=On -DCLANG_BOOTSTRAP_PASSTHROUGH='${PASSTHROUGH}' -DBOOTSTRAP_LLVM_ENABLE_LTO=Thin -DBOOTSTRAP_LLVM_ENABLE_LLD=ON,,," | ||
79 | PACKAGECONFIG[build-id] = "-DENABLE_LINKER_BUILD_ID=ON,-DENABLE_LINKER_BUILD_ID=OFF,," | ||
80 | PACKAGECONFIG[clangd] = "-DCLANG_ENABLE_CLANGD=ON,-DCLANG_ENABLE_CLANGD=OFF,," | ||
81 | |||
82 | # Activate to build the dexp tool in clangd | ||
83 | # Disabled by default for -native since it is known to trigger compiler failure on Debian 11 | ||
84 | # See: https://bugzilla.yoctoproject.org/show_bug.cgi?id=15803 | ||
85 | PACKAGECONFIG[clangd-dexp] = "-DCLANGD_BUILD_DEXP=ON,-DCLANGD_BUILD_DEXP=OFF,," | ||
86 | |||
87 | PACKAGECONFIG[compiler-rt] = "-DCLANG_DEFAULT_RTLIB=compiler-rt,," | ||
88 | PACKAGECONFIG[eh] = "-DLLVM_ENABLE_EH=ON,-DLLVM_ENABLE_EH=OFF,," | ||
89 | PACKAGECONFIG[libcplusplus] = "-DCLANG_DEFAULT_CXX_STDLIB=libc++,," | ||
90 | PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON -DLLDB_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF -DLLDB_ENABLE_LIBEDIT=OFF,libedit libedit-native" | ||
91 | PACKAGECONFIG[libomp] = "-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp,," | ||
92 | PACKAGECONFIG[lld] = "-DCLANG_DEFAULT_LINKER=lld,," | ||
93 | PACKAGECONFIG[lldb-lua] = "-DLLDB_ENABLE_LUA=ON,-DLLDB_ENABLE_LUA=OFF,lua" | ||
94 | PACKAGECONFIG[lldb-wchar] = "-DLLDB_EDITLINE_USE_WCHAR=1,-DLLDB_EDITLINE_USE_WCHAR=0," | ||
95 | PACKAGECONFIG[lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils," | ||
96 | PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm," | ||
97 | PACKAGECONFIG[rtti] = "-DLLVM_ENABLE_RTTI=ON,-DLLVM_ENABLE_RTTI=OFF,," | ||
98 | PACKAGECONFIG[shared-libs] = "-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON,,," | ||
99 | PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=OFF,," | ||
100 | PACKAGECONFIG[terminfo] = "-DLLVM_ENABLE_TERMINFO=ON -DCOMPILER_RT_TERMINFO_LIB=ON,-DLLVM_ENABLE_TERMINFO=OFF -DCOMPILER_RT_TERMINFO_LIB=OFF,ncurses," | ||
101 | PACKAGECONFIG[thin-lto] = "-DLLVM_ENABLE_LTO=Thin -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils," | ||
102 | PACKAGECONFIG[unwindlib] = "-DCLANG_DEFAULT_UNWINDLIB=libunwind,-DCLANG_DEFAULT_UNWINDLIB=libgcc,," | ||
103 | |||
104 | OECMAKE_SOURCEPATH = "${S}/llvm" | ||
105 | |||
106 | OECMAKE_TARGET_COMPILE = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2', 'all', d)}" | ||
107 | OECMAKE_TARGET_INSTALL = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2-install', 'install', d)}" | ||
108 | BINPATHPREFIX = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', '/tools/clang/stage2-bins/NATIVE', '', d)}" | ||
109 | |||
110 | PASSTHROUGH = "\ | ||
111 | CLANG_DEFAULT_RTLIB;CLANG_DEFAULT_CXX_STDLIB;LLVM_BUILD_LLVM_DYLIB;LLVM_LINK_LLVM_DYLIB;\ | ||
112 | LLVM_ENABLE_ASSERTIONS;LLVM_ENABLE_EXPENSIVE_CHECKS;LLVM_ENABLE_PIC;\ | ||
113 | LLVM_BINDINGS_LIST;LLVM_ENABLE_FFI;FFI_INCLUDE_DIR;LLVM_OPTIMIZED_TABLEGEN;\ | ||
114 | LLVM_ENABLE_RTTI;LLVM_ENABLE_EH;LLVM_BUILD_EXTERNAL_COMPILER_RT;CMAKE_SYSTEM_NAME;\ | ||
115 | CMAKE_BUILD_TYPE;BUILD_SHARED_LIBS;LLVM_ENABLE_PROJECTS;LLVM_ENABLE_RUNTIMES;LLVM_BINUTILS_INCDIR;\ | ||
116 | LLVM_TARGETS_TO_BUILD;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;PYTHON_EXECUTABLE;\ | ||
117 | PYTHON_LIBRARY;PYTHON_INCLUDE_DIR;LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN;LLDB_EDITLINE_USE_WCHAR;\ | ||
118 | LLVM_ENABLE_LIBEDIT;LLDB_ENABLE_LIBEDIT;LLDB_PYTHON_RELATIVE_PATH;LLDB_PYTHON_EXE_RELATIVE_PATH;\ | ||
119 | LLDB_PYTHON_EXT_SUFFIX;CMAKE_C_FLAGS_RELEASE;CMAKE_CXX_FLAGS_RELEASE;CMAKE_ASM_FLAGS_RELEASE;\ | ||
120 | CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;CLANG_DEFAULT_UNWINDLIB;\ | ||
121 | CLANG_DEFAULT_OPENMP_RUNTIME;LLVM_ENABLE_PER_TARGET_RUNTIME_DIR;\ | ||
122 | LLVM_BUILD_TOOLS;LLVM_USE_HOST_TOOLS;LLVM_CONFIG_PATH;\ | ||
123 | " | ||
124 | # | ||
125 | # Default to build all OE-Core supported target arches (user overridable). | ||
126 | # Gennerally setting LLVM_TARGETS_TO_BUILD = "" in local.conf is ok in most simple situations | ||
127 | # where only one target architecture is needed along with just one build arch (usually X86) | ||
128 | # | ||
129 | LLVM_TARGETS_TO_BUILD ?= "AMDGPU;AArch64;ARM;BPF;Mips;PowerPC;RISCV;X86;LoongArch;NVPTX;SPIRV" | ||
130 | |||
131 | LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ?= "" | ||
132 | |||
133 | HF = "" | ||
134 | HF:class-target = "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}" | ||
135 | HF[vardepvalue] = "${HF}" | ||
136 | |||
137 | # Ensure that LLVM_PROJECTS does not contain compiler runtime components e.g. libcxx etc | ||
138 | # they are enabled via LLVM_ENABLE_RUNTIMES | ||
139 | LLVM_PROJECTS ?= "clang;clang-tools-extra;lld${LLDB}" | ||
140 | LLDB ?= ";lldb" | ||
141 | # LLDB support for RISCV32/Mips32 does not work yet | ||
142 | LLDB:riscv32 = "" | ||
143 | LLDB:mips = "" | ||
144 | LLDB:mipsel = "" | ||
145 | LLDB:powerpc = "" | ||
146 | |||
147 | # linux hosts (.so) on Windows .pyd | ||
148 | SOLIBSDEV:mingw32 = ".pyd" | ||
149 | |||
150 | #CMAKE_VERBOSE = "VERBOSE=1" | ||
151 | |||
152 | EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ | ||
153 | -DLLVM_APPEND_VC_REV=OFF \ | ||
154 | -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \ | ||
155 | -DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \ | ||
156 | -DLLVM_ENABLE_PIC=ON \ | ||
157 | -DCLANG_DEFAULT_PIE_ON_LINUX=ON \ | ||
158 | -DLLVM_BINDINGS_LIST='' \ | ||
159 | -DLLVM_ENABLE_FFI=ON \ | ||
160 | -DLLVM_ENABLE_ZSTD=ON \ | ||
161 | -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \ | ||
162 | -DLLVM_OPTIMIZED_TABLEGEN=ON \ | ||
163 | -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \ | ||
164 | -DCMAKE_SYSTEM_NAME=Linux \ | ||
165 | -DCMAKE_BUILD_TYPE=Release \ | ||
166 | -DCMAKE_CXX_FLAGS_RELEASE='${CXXFLAGS} -DNDEBUG -g0' \ | ||
167 | -DCMAKE_C_FLAGS_RELEASE='${CFLAGS} -DNDEBUG -g0' \ | ||
168 | -DBUILD_SHARED_LIBS=OFF \ | ||
169 | -DLLVM_ENABLE_PROJECTS='${LLVM_PROJECTS}' \ | ||
170 | -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \ | ||
171 | -DLLVM_VERSION_SUFFIX='${VER_SUFFIX}' \ | ||
172 | -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ | ||
173 | -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \ | ||
174 | -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \ | ||
175 | " | ||
176 | |||
177 | EXTRA_OECMAKE:append:class-native = "\ | ||
178 | -DPYTHON_EXECUTABLE='${PYTHON}' \ | ||
179 | " | ||
180 | EXTRA_OECMAKE:append:class-nativesdk = "\ | ||
181 | -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DLLDB_PYTHON_RELATIVE_PATH=${PYTHON_SITEPACKAGES_DIR} \ | ||
182 | -DLLDB_PYTHON_EXE_RELATIVE_PATH=${PYTHON_PN} \ | ||
183 | -DLLDB_PYTHON_EXT_SUFFIX=${SOLIBSDEV} \ | ||
184 | -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \ | ||
185 | -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \ | ||
186 | -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \ | ||
187 | -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-nm \ | ||
188 | -DCMAKE_STRIP=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-strip \ | ||
189 | -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \ | ||
190 | -DLLVM_HEADERS_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-min-tblgen \ | ||
191 | -DPYTHON_LIBRARY=${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so \ | ||
192 | -DLLDB_PYTHON_RELATIVE_PATH=${PYTHON_SITEPACKAGES_DIR} \ | ||
193 | -DLLDB_PYTHON_EXE_RELATIVE_PATH=${PYTHON_PN} \ | ||
194 | -DLLDB_PYTHON_EXT_SUFFIX=${SOLIBSDEV} \ | ||
195 | -DPYTHON_INCLUDE_DIR=${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI} \ | ||
196 | -DPYTHON_EXECUTABLE='${PYTHON}' \ | ||
197 | " | ||
198 | EXTRA_OECMAKE:append:class-target = "\ | ||
199 | -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \ | ||
200 | -DLLVM_HEADERS_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-min-tblgen \ | ||
201 | -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \ | ||
202 | -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \ | ||
203 | -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-nm \ | ||
204 | -DCMAKE_STRIP=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-strip \ | ||
205 | -DLLVM_TARGET_ARCH=${@get_clang_target_arch(bb, d)} \ | ||
206 | -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_SYS}${HF} \ | ||
207 | -DLLVM_HOST_TRIPLE=${TARGET_SYS}${HF} \ | ||
208 | -DPYTHON_LIBRARY=${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so \ | ||
209 | -DPYTHON_INCLUDE_DIR=${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI} \ | ||
210 | -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \ | ||
211 | -DLLDB_PYTHON_RELATIVE_PATH=${PYTHON_SITEPACKAGES_DIR} \ | ||
212 | -DLLDB_PYTHON_EXE_RELATIVE_PATH=${bindir} \ | ||
213 | -DLLDB_PYTHON_EXT_SUFFIX=${SOLIBSDEV} \ | ||
214 | " | ||
215 | |||
216 | DEPENDS = "binutils zlib zstd libffi libxml2 libxml2-native ninja-native swig-native" | ||
217 | DEPENDS:append:class-nativesdk = " clang-crosssdk-${SDK_SYS} virtual/nativesdk-cross-binutils nativesdk-python3" | ||
218 | DEPENDS:append:class-target = " clang-cross-${TARGET_ARCH} python3 compiler-rt libcxx" | ||
219 | |||
220 | RRECOMMENDS:${PN} = "binutils" | ||
221 | RRECOMMENDS:${PN}:append:class-target = " libcxx-dev" | ||
222 | |||
223 | # patch out build host paths for reproducibility | ||
224 | reproducible_build_variables() { | ||
225 | sed -i -e "s,${DEBUG_PREFIX_MAP},,g" \ | ||
226 | -e "s,--sysroot=${RECIPE_SYSROOT},,g" \ | ||
227 | -e "s,${STAGING_DIR_HOST},,g" \ | ||
228 | -e "s,${S}/llvm,,g" \ | ||
229 | -e "s,${B},,g" \ | ||
230 | ${B}/tools/llvm-config/BuildVariables.inc | ||
231 | } | ||
232 | |||
233 | do_configure:append:class-target() { | ||
234 | reproducible_build_variables | ||
235 | } | ||
236 | |||
237 | do_configure:append:class-nativesdk() { | ||
238 | reproducible_build_variables | ||
239 | } | ||
240 | |||
241 | do_install:append() { | ||
242 | rm -rf ${D}${libdir}/python*/site-packages/six.py | ||
243 | for t in clang-pseudo clang-pseudo-gen clang-rename; do | ||
244 | if [ -e ${B}${BINPATHPREFIX}/bin/$t ]; then | ||
245 | install -Dm 0755 ${B}${BINPATHPREFIX}/bin/$t ${D}${bindir}/$t | ||
246 | fi | ||
247 | done | ||
248 | } | ||
249 | |||
250 | do_install:append:class-target () { | ||
251 | # Allow bin path to change based on YOCTO_ALTERNATE_EXE_PATH | ||
252 | sed -i 's;${_IMPORT_PREFIX}/bin;${_IMPORT_PREFIX_BIN};g' ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake | ||
253 | |||
254 | # Insert function to populate Import Variables | ||
255 | sed -i "4i\ | ||
256 | if(DEFINED ENV{YOCTO_ALTERNATE_EXE_PATH})\n\ | ||
257 | execute_process(COMMAND \"llvm-config\" \"--bindir\" OUTPUT_VARIABLE _IMPORT_PREFIX_BIN OUTPUT_STRIP_TRAILING_WHITESPACE)\n\ | ||
258 | else()\n\ | ||
259 | set(_IMPORT_PREFIX_BIN \"\${_IMPORT_PREFIX}/bin\")\n\ | ||
260 | endif()\n" ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake | ||
261 | |||
262 | if [ -n "${LLVM_LIBDIR_SUFFIX}" ]; then | ||
263 | mkdir -p ${D}${nonarch_libdir} | ||
264 | mv ${D}${libdir}/clang ${D}${nonarch_libdir}/clang | ||
265 | ln -rs ${D}${nonarch_libdir}/clang ${D}${libdir}/clang | ||
266 | rmdir --ignore-fail-on-non-empty ${D}${libdir} | ||
267 | fi | ||
268 | for t in clang clang++ llvm-nm llvm-ar llvm-as llvm-ranlib llvm-strip llvm-objcopy llvm-objdump llvm-readelf \ | ||
269 | llvm-addr2line llvm-dwp llvm-size llvm-strings llvm-cov; do | ||
270 | ln -sf $t ${D}${bindir}/${TARGET_PREFIX}$t | ||
271 | done | ||
272 | |||
273 | # reproducibility | ||
274 | sed -i -e 's,${B},,g' ${D}${libdir}/cmake/llvm/LLVMConfig.cmake | ||
275 | } | ||
276 | |||
277 | do_install:append:class-native () { | ||
278 | if ${@bb.utils.contains('PACKAGECONFIG', 'clangd', 'true', 'false', d)}; then | ||
279 | install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clangd-indexer ${D}${bindir}/clangd-indexer | ||
280 | fi | ||
281 | install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tidy-confusable-chars-gen ${D}${bindir}/clang-tidy-confusable-chars-gen | ||
282 | install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen | ||
283 | install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen | ||
284 | install -Dm 0755 ${B}${BINPATHPREFIX}/bin/llvm-min-tblgen ${D}${bindir}/llvm-min-tblgen | ||
285 | for f in `find ${D}${bindir} -executable -type f -not -type l`; do | ||
286 | test -n "`file -b $f|grep -i ELF`" && ${STRIP} $f | ||
287 | echo "stripped $f" | ||
288 | done | ||
289 | ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV} | ||
290 | ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV} | ||
291 | ln -sf llvm-config ${D}${bindir}/llvm-config${PV} | ||
292 | |||
293 | if ${@ 'false' if 'llvm' in d.getVar('PROVIDES') or '' else 'true' } ; then | ||
294 | for f in bugpoint dsymutil llc lli opt reduce-chunk-list sancov sanstats verify-uselistorder ; do | ||
295 | rm -f ${D}${bindir}/$f | ||
296 | done | ||
297 | rm -f ${D}${bindir}/llvm-* | ||
298 | |||
299 | rm -rf ${D}${includedir}/llvm | ||
300 | rm -rf ${D}${includedir}/llvm-c | ||
301 | rm -rf ${D}${libdir}/cmake/llvm | ||
302 | rm -rf ${D}${libdir}/libLLVM* | ||
303 | rm -rf ${D}${libdir}/libLTO* | ||
304 | rm -rf ${D}${libdir}/libRemarks* | ||
305 | fi | ||
306 | } | ||
307 | |||
308 | do_install:append:class-nativesdk () { | ||
309 | if [ -e ${D}${libdir}/cmake/llvm/LLVMConfig.cmake ] ; then | ||
310 | sed -i -e "s|${B}/./bin/||g" ${D}${libdir}/cmake/llvm/LLVMConfig.cmake | ||
311 | fi | ||
312 | if ${@bb.utils.contains('PACKAGECONFIG', 'clangd', 'true', 'false', d)}; then | ||
313 | install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clangd-indexer ${D}${bindir}/clangd-indexer | ||
314 | fi | ||
315 | install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen | ||
316 | install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tidy-confusable-chars-gen ${D}${bindir}/clang-tidy-confusable-chars-gen | ||
317 | for f in `find ${D}${bindir} -executable -type f -not -type l`; do | ||
318 | test -n "`file -b $f|grep -i ELF`" && ${STRIP} $f | ||
319 | done | ||
320 | ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV} | ||
321 | ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV} | ||
322 | ln -sf llvm-config ${D}${bindir}/llvm-config${PV} | ||
323 | rm -rf ${D}${datadir}/llvm/cmake | ||
324 | rm -rf ${D}${datadir}/llvm | ||
325 | |||
326 | #reproducibility | ||
327 | if [ -e ${D}${libdir}/cmake/llvm/LLVMConfig.cmake ] ; then | ||
328 | sed -i -e 's,${B},,g' ${D}${libdir}/cmake/llvm/LLVMConfig.cmake | ||
329 | fi | ||
330 | } | ||
331 | |||
332 | PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools \ | ||
333 | libclang lldb lldb-server liblldb llvm-linker-tools" | ||
334 | |||
335 | BBCLASSEXTEND = "native nativesdk" | ||
336 | |||
337 | RDEPENDS:lldb += "${PN}-lldb-python lldb-server" | ||
338 | |||
339 | RDEPENDS:${PN}-tools += "\ | ||
340 | perl-module-digest-md5 \ | ||
341 | perl-module-file-basename \ | ||
342 | perl-module-file-copy \ | ||
343 | perl-module-file-find \ | ||
344 | perl-module-file-path \ | ||
345 | perl-module-findbin \ | ||
346 | perl-module-hash-util \ | ||
347 | perl-module-sys-hostname \ | ||
348 | perl-module-term-ansicolor \ | ||
349 | " | ||
350 | |||
351 | RRECOMMENDS:${PN}-tidy += "${PN}-tools" | ||
352 | |||
353 | FILES:llvm-linker-tools = "${libdir}/LLVMgold* ${libdir}/libLTO.so.* ${libdir}/LLVMPolly*" | ||
354 | |||
355 | FILES:${PN}-libclang-cpp = "${libdir}/libclang-cpp.so.*" | ||
356 | |||
357 | FILES:${PN}-lldb-python = "${libdir}/python*/site-packages/lldb/*" | ||
358 | |||
359 | FILES:${PN}-tidy = "${bindir}/*clang-tidy*" | ||
360 | FILES:${PN}-format = "${bindir}/*clang-format*" | ||
361 | |||
362 | FILES:${PN}-tools = "${bindir}/analyze-build \ | ||
363 | ${bindir}/c-index-test \ | ||
364 | ${bindir}/clang-apply-replacements \ | ||
365 | ${bindir}/clang-change-namespace \ | ||
366 | ${bindir}/clang-check \ | ||
367 | ${bindir}/clang-doc \ | ||
368 | ${bindir}/clang-extdef-mapping \ | ||
369 | ${bindir}/clang-include-fixer \ | ||
370 | ${bindir}/clang-linker-wrapper \ | ||
371 | ${bindir}/clang-move \ | ||
372 | ${bindir}/clang-nvlink-wrapper \ | ||
373 | ${bindir}/clang-offload-bundler \ | ||
374 | ${bindir}/clang-offload-packager \ | ||
375 | ${bindir}/clang-pseudo* \ | ||
376 | ${bindir}/clang-query \ | ||
377 | ${bindir}/clang-refactor \ | ||
378 | ${bindir}/clang-rename* \ | ||
379 | ${bindir}/clang-reorder-fields \ | ||
380 | ${bindir}/clang-repl \ | ||
381 | ${bindir}/clang-scan-deps \ | ||
382 | ${bindir}/diagtool \ | ||
383 | ${bindir}/find-all-symbols \ | ||
384 | ${bindir}/hmaptool \ | ||
385 | ${bindir}/hwasan_symbolize \ | ||
386 | ${bindir}/intercept-build \ | ||
387 | ${bindir}/modularize \ | ||
388 | ${bindir}/pp-trace \ | ||
389 | ${bindir}/sancov \ | ||
390 | ${bindir}/scan-build \ | ||
391 | ${bindir}/scan-build-py \ | ||
392 | ${bindir}/scan-view \ | ||
393 | ${bindir}/split-file \ | ||
394 | ${libdir}/libscanbuild/* \ | ||
395 | ${libdir}/libear/* \ | ||
396 | ${libexecdir}/analyze-c++ \ | ||
397 | ${libexecdir}/analyze-cc \ | ||
398 | ${libexecdir}/c++-analyzer \ | ||
399 | ${libexecdir}/ccc-analyzer \ | ||
400 | ${libexecdir}/intercept-c++ \ | ||
401 | ${libexecdir}/intercept-cc \ | ||
402 | ${datadir}/scan-build/* \ | ||
403 | ${datadir}/scan-view/* \ | ||
404 | ${datadir}/opt-viewer/* \ | ||
405 | ${datadir}/clang/* \ | ||
406 | " | ||
407 | |||
408 | FILES:${PN} += "\ | ||
409 | ${bindir}/clang-cl \ | ||
410 | ${libdir}/BugpointPasses.so \ | ||
411 | ${libdir}/LLVMHello.so \ | ||
412 | ${libdir}/*Plugin.so \ | ||
413 | ${libdir}/${BPN} \ | ||
414 | ${nonarch_libdir}/${BPN}/*/include/ \ | ||
415 | " | ||
416 | |||
417 | FILES:lldb = "\ | ||
418 | ${bindir}/lldb \ | ||
419 | ${bindir}/lldb-argdumper \ | ||
420 | ${bindir}/lldb-instr \ | ||
421 | ${bindir}/lldb-vscode \ | ||
422 | " | ||
423 | |||
424 | FILES:lldb-server = "\ | ||
425 | ${bindir}/lldb-server \ | ||
426 | " | ||
427 | |||
428 | FILES:liblldb = "\ | ||
429 | ${libdir}/liblldbIntelFeatures.so.* \ | ||
430 | ${libdir}/liblldb.so.* \ | ||
431 | " | ||
432 | |||
433 | FILES:${PN}-libllvm =+ "\ | ||
434 | ${libdir}/libLLVM.so.${MAJOR_VER}.${MINOR_VER} \ | ||
435 | ${libdir}/libLLVM-${MAJOR_VER}.so \ | ||
436 | ${libdir}/libRemarks.so.* \ | ||
437 | " | ||
438 | |||
439 | FILES:libclang = "\ | ||
440 | ${libdir}/libclang.so.* \ | ||
441 | " | ||
442 | |||
443 | FILES:${PN}-dev += "\ | ||
444 | ${datadir}/llvm/cmake \ | ||
445 | ${libdir}/cmake \ | ||
446 | ${nonarch_libdir}/libear \ | ||
447 | ${nonarch_libdir}/${BPN}/*.la \ | ||
448 | " | ||
449 | FILES:${PN}-doc += "${datadir}/clang-doc" | ||
450 | |||
451 | FILES:${PN}-staticdev += "${nonarch_libdir}/${BPN}/*.a" | ||
452 | |||
453 | FILES:${PN}-staticdev:remove = "${libdir}/${BPN}/*.a" | ||
454 | FILES:${PN}-dev:remove = "${libdir}/${BPN}/*.la" | ||
455 | FILES:${PN}:remove = "${libdir}/${BPN}/*" | ||
456 | |||
457 | |||
458 | INSANE_SKIP:${PN} += "already-stripped" | ||
459 | #INSANE_SKIP:${PN}-dev += "dev-elf" | ||
460 | INSANE_SKIP:${PN}-lldb-python += "dev-so dev-deps" | ||
461 | INSANE_SKIP:${MLPREFIX}liblldb = "dev-so" | ||
462 | INSANE_SKIP:${PN}-libllvm = "dev-so" | ||
463 | |||
464 | #Avoid SSTATE_SCAN_COMMAND running sed over llvm-config. | ||
465 | SSTATE_SCAN_FILES:remove = "*-config" | ||
466 | |||
467 | TOOLCHAIN = "clang" | ||
468 | TOOLCHAIN:class-native = "gcc" | ||
469 | TOOLCHAIN:class-nativesdk = "clang" | ||
470 | COMPILER_RT:class-nativesdk:toolchain-clang:runtime-llvm = "-rtlib=libgcc --unwindlib=libgcc" | ||
471 | LIBCPLUSPLUS:class-nativesdk:toolchain-clang:runtime-llvm = "-stdlib=libstdc++" | ||
472 | |||
473 | SYSROOT_DIRS:append:class-target = " ${nonarch_libdir}" | ||
474 | |||
475 | SYSROOT_PREPROCESS_FUNCS:append:class-target = " clang_sysroot_preprocess" | ||
476 | SYSROOT_PREPROCESS_FUNCS:append:class-nativesdk = " clang_sysroot_preprocess" | ||
477 | |||
478 | clang_sysroot_preprocess() { | ||
479 | install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/ | ||
480 | install -m 0755 ${S}/llvm/tools/llvm-config/llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/ | ||
481 | ln -sf llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV} | ||
482 | # LLDTargets.cmake references the lld executable(!) that some modules/plugins link to | ||
483 | install -d ${SYSROOT_DESTDIR}${bindir} | ||
484 | |||
485 | binaries="lld diagtool clang-${MAJOR_VER} clang-format clang-offload-packager | ||
486 | clang-offload-bundler clang-scan-deps clang-repl | ||
487 | clang-refactor clang-check clang-extdef-mapping clang-apply-replacements | ||
488 | clang-reorder-fields clang-tidy clang-change-namespace clang-doc clang-include-fixer | ||
489 | find-all-symbols clang-move clang-query pp-trace modularize" | ||
490 | |||
491 | if ${@bb.utils.contains('PACKAGECONFIG', 'clangd', 'true', 'false', d)}; then | ||
492 | binaries="${binaries} clangd" | ||
493 | fi | ||
494 | |||
495 | for f in ${binaries} | ||
496 | do | ||
497 | install -m 755 ${D}${bindir}/$f ${SYSROOT_DESTDIR}${bindir}/ | ||
498 | done | ||
499 | } | ||