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