* [PATCH 5/6] llvm: add recipe for just the LLVM libraries
2025-09-12 14:30 [PATCH 1/6] clang: improve opt-viewer PACKAGECONFIG Ross Burton
` (2 preceding siblings ...)
2025-09-12 14:30 ` [PATCH 4/6] clang: remove obsolete install steps Ross Burton
@ 2025-09-12 14:30 ` Ross Burton
2025-09-12 14:30 ` [PATCH 6/6] clang: use llvm recipe Ross Burton
2025-09-14 17:42 ` [OE-core] [PATCH 1/6] clang: improve opt-viewer PACKAGECONFIG Mathieu Dubois-Briand
5 siblings, 0 replies; 9+ messages in thread
From: Ross Burton @ 2025-09-12 14:30 UTC (permalink / raw)
To: openembedded-core
Whilst it's convenient to build all of the LLVM project in one big
recipe, that's not ideal when we may just need LLVM on target and not
the rest.
Bring back a LLVM recipe that can be used by both clang (shortly) and
Rust (in the future)
Signed-off-by: Ross Burton <ross.burton@arm.com>
---
meta/conf/distro/include/maintainers.inc | 1 +
meta/recipes-devtools/clang/llvm_git.bb | 128 +++++++++++++++++++++++
2 files changed, 129 insertions(+)
create mode 100644 meta/recipes-devtools/clang/llvm_git.bb
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 6cfa76e2a3d..9c1d38c7350 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -483,6 +483,7 @@ RECIPE_MAINTAINER:pn-lld = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-lldb = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-llvm-project-source-21.1.0 = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-llvm-tblgen-native = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-llvm = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-logrotate = "Yi Zhao <yi.zhao@windriver.com>"
RECIPE_MAINTAINER:pn-log4cplus = "Unassigned <unassigned@yoctoproject.org>"
RECIPE_MAINTAINER:pn-lrzsz = "Anuj Mittal <anuj.mittal@intel.com>"
diff --git a/meta/recipes-devtools/clang/llvm_git.bb b/meta/recipes-devtools/clang/llvm_git.bb
new file mode 100644
index 00000000000..dabdad5095e
--- /dev/null
+++ b/meta/recipes-devtools/clang/llvm_git.bb
@@ -0,0 +1,128 @@
+# Copyright (C) 2017 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "The LLVM Compiler Infrastructure"
+HOMEPAGE = "http://llvm.org"
+LICENSE = "Apache-2.0-with-LLVM-exception"
+SECTION = "devel"
+
+require common-clang.inc
+require common-source.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe"
+
+DEPENDS = "llvm-tblgen-native libffi libxml2 zlib zstd"
+
+inherit cmake pkgconfig lib_package
+
+OECMAKE_SOURCEPATH = "${S}/llvm"
+
+# By default we build all the supported CPU architectures, and the GPU targets
+# if the opengl or vulkan DISTRO_FEATURES are enabled.
+#
+# For target builds we default to building that specific architecture, BPF, and the GPU targets if required.
+#
+# The available target list can be seen in the source code
+# in the LLVM_ALL_TARGETS assignment:
+# https://github.com/llvm/llvm-project/blob/main/llvm/CMakeLists.txt
+LLVM_TARGETS_GPU ?= "${@bb.utils.contains_any('DISTRO_FEATURES', 'opengl vulkan', 'AMDGPU;NVPTX;SPIRV', '', d)}"
+LLVM_TARGETS_TO_BUILD ?= "AArch64;ARM;BPF;Mips;PowerPC;RISCV;X86;LoongArch;${LLVM_TARGETS_GPU}"
+LLVM_TARGETS_TO_BUILD:class-target ?= "${@get_clang_host_arch(bb, d)};BPF;${LLVM_TARGETS_GPU}"
+
+LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ?= ""
+
+HF = ""
+HF:class-target = "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}"
+HF[vardepvalue] = "${HF}"
+
+EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=Release \
+ -DLLVM_ENABLE_ASSERTIONS=OFF \
+ -DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \
+ -DLLVM_ENABLE_PIC=ON \
+ -DLLVM_ENABLE_BINDINGS=OFF \
+ -DLLVM_ENABLE_FFI=ON \
+ -DLLVM_ENABLE_RTTI=ON \
+ -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \
+ -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \
+ -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \
+ -DLLVM_VERSION_SUFFIX='${VER_SUFFIX}' \
+ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
+ -DLLVM_INCLUDE_TESTS=OFF \
+ -DLLVM_INCLUDE_EXAMPLES=OFF \
+ -DLLVM_TOOL_OBJ2YAML_BUILD=OFF \
+ -DLLVM_TOOL_YAML2OBJ_BUILD=OFF \
+ -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
+ "
+
+EXTRA_OECMAKE:append:class-target = "\
+ -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_SYS}${HF} \
+ -DLLVM_TARGET_ARCH=${HOST_ARCH} \
+ -DLLVM_HOST_TRIPLE=${TARGET_SYS}${HF} \
+ -DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config \
+ -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \
+ "
+
+EXTRA_OECMAKE:append:class-nativesdk = "\
+ -DLLVM_HOST_TRIPLE=${SDK_SYS} \
+ -DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config \
+ -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \
+ "
+
+PACKAGECONFIG ??= "eh rtti shared-libs ${@bb.utils.filter('DISTRO_FEATURES', 'lto thin-lto', d)}"
+PACKAGECONFIG:remove:class-native = "lto thin-lto"
+
+PACKAGECONFIG[eh] = "-DLLVM_ENABLE_EH=ON,-DLLVM_ENABLE_EH=OFF"
+PACKAGECONFIG[exegesis] = "-DLLVM_TOOL_LLVM_EXEGESIS_BUILD=ON,-DLLVM_TOOL_LLVM_EXEGESIS_BUILD=OFF"
+PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,libedit"
+PACKAGECONFIG[rtti] = "-DLLVM_ENABLE_RTTI=ON,-DLLVM_ENABLE_RTTI=OFF"
+PACKAGECONFIG[shared-libs] = "-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON,-DLLVM_BUILD_LLVM_DYLIB=OFF -DLLVM_LINK_LLVM_DYLIB=OFF"
+PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=OFF"
+PACKAGECONFIG[opt-viewer] = "-DLLVM_TOOL_OPT_VIEWER_BUILD=ON,-DLLVM_TOOL_OPT_VIEWER_BUILD=OFF, \
+ python3-pyyaml-native python3-pygments-native python3-pyyaml python3-pygments, \
+ python3-pyyaml python3-pygments,"
+PACKAGECONFIG[lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
+PACKAGECONFIG[thin-lto] = "-DLLVM_ENABLE_LTO=Thin -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
+
+reproducible_build_variables() {
+ sed -i -e "s,${DEBUG_PREFIX_MAP},,g" \
+ -e "s,--sysroot=${RECIPE_SYSROOT},,g" \
+ -e "s,${STAGING_DIR_HOST},,g" \
+ -e "s,${S}/llvm,,g" \
+ -e "s,${B},,g" \
+ ${B}/tools/llvm-config/BuildVariables.inc
+}
+
+do_configure:append:class-target() {
+ reproducible_build_variables
+}
+do_configure:append:class-nativesdk() {
+ reproducible_build_variables
+}
+
+do_install:append() {
+ # llvm hardcodes lib as install path, this corrects it to actual libdir.
+ # https://github.com/llvm/llvm-project/issues/152193
+ if [ -d ${D}/${prefix}/lib -a ! -d ${D}/${libdir} ]; then
+ mv ${D}/${prefix}/lib ${D}/${libdir}
+ fi
+
+ # Reproducibility fixes
+ sed -i -e 's,${WORKDIR},,g' ${D}/${libdir}/cmake/llvm/LLVMConfig.cmake
+}
+
+do_install:append:class-native() {
+ # These are provided by llvm-tblgen-native
+ rm ${D}${bindir}/*-tblgen
+}
+
+SYSROOT_PREPROCESS_FUNCS:append:class-target = " llvm_sysroot_preprocess"
+SYSROOT_PREPROCESS_FUNCS:append:class-nativesdk = " llvm_sysroot_preprocess"
+
+llvm_sysroot_preprocess() {
+ install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+ install -m 0755 ${S}/llvm/tools/llvm-config/llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+}
+
+FILES:${PN}-dev += "${libdir}/llvm-config"
+
+BBCLASSEXTEND = "native nativesdk"
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 6/6] clang: use llvm recipe
2025-09-12 14:30 [PATCH 1/6] clang: improve opt-viewer PACKAGECONFIG Ross Burton
` (3 preceding siblings ...)
2025-09-12 14:30 ` [PATCH 5/6] llvm: add recipe for just the LLVM libraries Ross Burton
@ 2025-09-12 14:30 ` Ross Burton
2025-09-14 17:42 ` [OE-core] [PATCH 1/6] clang: improve opt-viewer PACKAGECONFIG Mathieu Dubois-Briand
5 siblings, 0 replies; 9+ messages in thread
From: Ross Burton @ 2025-09-12 14:30 UTC (permalink / raw)
To: openembedded-core
Change this recipe to build just clang and clang-tools-extra, using the
LLVM provided by the llvm recipe.
This adds an 'extra-tools' PACKAGECONFIG (enabled by default) that
controls whether to build the clang-tools-extra project. This includes
clang-tidy and clangd, but the compile time and size for these
components is not insignificant.
Signed-off-by: Ross Burton <ross.burton@arm.com>
---
meta/recipes-devtools/clang/clang_git.bb | 163 ++++-------------------
1 file changed, 23 insertions(+), 140 deletions(-)
diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb
index 9a19cefc961..5069c8b75ba 100644
--- a/meta/recipes-devtools/clang/clang_git.bb
+++ b/meta/recipes-devtools/clang/clang_git.bb
@@ -28,72 +28,31 @@ LDFLAGS:append:class-target:mips = " -Wl,--no-as-needed -latomic -Wl,--as-needed
inherit cmake pkgconfig multilib_header python3-dir
-PACKAGECONFIG_CLANG_COMMON = "build-id eh libedit rtti shared-libs libclang-python \
- ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', 'lld', '', d)} \
- ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcplusplus libomp unwindlib', '', d)} \
- "
-
-PACKAGECONFIG ??= "${PACKAGECONFIG_CLANG_COMMON} \
+PACKAGECONFIG ??= "build-id extra-tools clangd libclang-python \
${@bb.utils.filter('DISTRO_FEATURES', 'lto thin-lto', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', 'lld', '', d)} \
+ ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcplusplus libomp unwindlib', '', d)} \
"
-PACKAGECONFIG:class-native = "clangd \
- ${PACKAGECONFIG_CLANG_COMMON} \
- "
-PACKAGECONFIG:class-nativesdk = "clangd \
- ${PACKAGECONFIG_CLANG_COMMON} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'lto thin-lto', d)} \
- "
+PACKAGECONFIG:remove:class-native = "lto thin-lto"
PACKAGECONFIG[build-id] = "-DENABLE_LINKER_BUILD_ID=ON,-DENABLE_LINKER_BUILD_ID=OFF,,"
PACKAGECONFIG[clangd] = "-DCLANG_ENABLE_CLANGD=ON,-DCLANG_ENABLE_CLANGD=OFF,,"
-
# Activate to build the dexp tool in clangd
# Disabled by default for -native since it is known to trigger compiler failure on Debian 11
# See: https://bugzilla.yoctoproject.org/show_bug.cgi?id=15803
PACKAGECONFIG[clangd-dexp] = "-DCLANGD_BUILD_DEXP=ON,-DCLANGD_BUILD_DEXP=OFF,,"
-
PACKAGECONFIG[compiler-rt] = "-DCLANG_DEFAULT_RTLIB=compiler-rt,,"
-PACKAGECONFIG[eh] = "-DLLVM_ENABLE_EH=ON,-DLLVM_ENABLE_EH=OFF,,"
-PACKAGECONFIG[exegesis] = "-DLLVM_TOOL_LLVM_EXEGESIS_BUILD=ON,-DLLVM_TOOL_LLVM_EXEGESIS_BUILD=OFF"
+PACKAGECONFIG[extra-tools] = "-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR=${S}/clang-tools-extra"
PACKAGECONFIG[libcplusplus] = "-DCLANG_DEFAULT_CXX_STDLIB=libc++,,"
-PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,libedit libedit-native"
PACKAGECONFIG[libomp] = "-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp,,"
PACKAGECONFIG[lld] = "-DCLANG_DEFAULT_LINKER=lld,,,"
PACKAGECONFIG[lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
-PACKAGECONFIG[opt-viewer] = "-DLLVM_TOOL_OPT_VIEWER_BUILD=ON,-DLLVM_TOOL_OPT_VIEWER_BUILD=OFF, \
- python3-pyyaml-native python3-pygments-native python3-pyyaml python3-pygments, \
- python3-pyyaml python3-pygments,"
-PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm,"
-PACKAGECONFIG[rtti] = "-DLLVM_ENABLE_RTTI=ON,-DLLVM_ENABLE_RTTI=OFF,,"
-PACKAGECONFIG[shared-libs] = "-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON,,,"
-PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=OFF,,"
PACKAGECONFIG[thin-lto] = "-DLLVM_ENABLE_LTO=Thin -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
PACKAGECONFIG[unwindlib] = "-DCLANG_DEFAULT_UNWINDLIB=libunwind,-DCLANG_DEFAULT_UNWINDLIB=libgcc,,"
PACKAGECONFIG[libclang-python] = "-DCLANG_PYTHON_BINDINGS_VERSIONS=${PYTHON_BASEVERSION},,"
-OECMAKE_SOURCEPATH = "${S}/llvm"
+OECMAKE_SOURCEPATH = "${S}/clang"
-# By default we build all the supported CPU architectures, and the GPU targets
-# if the opengl or vulkan DISTRO_FEATURES are enabled.
-#
-# For target builds we default to building that specific architecture, BPF, and the GPU targets if required.
-#
-# The available target list can be seen in the source code
-# in the LLVM_ALL_TARGETS assignment:
-# https://github.com/llvm/llvm-project/blob/main/llvm/CMakeLists.txt
-LLVM_TARGETS_GPU ?= "${@bb.utils.contains_any('DISTRO_FEATURES', 'opengl vulkan', 'AMDGPU;NVPTX;SPIRV', '', d)}"
-LLVM_TARGETS_TO_BUILD ?= "AArch64;ARM;BPF;Mips;PowerPC;RISCV;X86;LoongArch;${LLVM_TARGETS_GPU}"
-LLVM_TARGETS_TO_BUILD:class-target ?= "${@get_clang_host_arch(bb, d)};BPF;${LLVM_TARGETS_GPU}"
-
-LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ?= ""
-
-HF = ""
-HF:class-target = "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}"
-HF[vardepvalue] = "${HF}"
-
-# Ensure that LLVM_PROJECTS does not contain compiler runtime components e.g. libcxx etc
-# they are enabled via LLVM_ENABLE_RUNTIMES
-LLVM_PROJECTS ?= "clang;clang-tools-extra"
# linux hosts (.so) on Windows .pyd
SOLIBSDEV:mingw32 = ".pyd"
@@ -102,25 +61,18 @@ SOLIBSDEV:mingw32 = ".pyd"
EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_APPEND_VC_REV=OFF \
- -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \
+ -DLLVM_BUILD_LLVM_DYLIB=ON \
+ -DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \
-DLLVM_ENABLE_PIC=ON \
-DCLANG_DEFAULT_PIE_ON_LINUX=ON \
- -DLLVM_BINDINGS_LIST='' \
- -DLLVM_ENABLE_FFI=ON \
- -DLLVM_ENABLE_ZSTD=ON \
-DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS='${LLVM_PROJECTS}' \
- -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \
-DLLVM_VERSION_SUFFIX='${VER_SUFFIX}' \
- -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
- -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \
- -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \
- -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \
- -DLLVM_HEADERS_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-min-tblgen \
+ -DLLVM_CMAKE_DIR=${STAGING_LIBDIR}/cmake/llvm \
-DLLVM_INCLUDE_TESTS=OFF \
"
@@ -132,58 +84,27 @@ EXTRA_OECMAKE:append:class-nativesdk = "\
-DCMAKE_STRIP=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-strip \
"
EXTRA_OECMAKE:append:class-target = "\
+ -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \
+ -DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
-DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \
-DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \
-DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-nm \
-DCMAKE_STRIP=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-strip \
- -DLLVM_TARGET_ARCH=${HOST_ARCH} \
- -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_SYS}${HF} \
- -DLLVM_HOST_TRIPLE=${TARGET_SYS}${HF} \
-DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \
"
-DEPENDS = "binutils zlib zstd libffi libxml2 libxml2-native llvm-tblgen-native"
+DEPENDS = "llvm-tblgen-native llvm binutils zlib zstd libffi libxml2 libxml2-native"
DEPENDS:append:class-nativesdk = " clang-crosssdk-${SDK_SYS} virtual/nativesdk-cross-binutils"
DEPENDS:append:class-target = " ${MLPREFIX}clang-cross-${TARGET_ARCH} ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcxx', '', d)}"
RDEPENDS:${PN}:append:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' lld', '', d)}"
RRECOMMENDS:${PN}:append:class-target = "binutils ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', ' libcxx-dev', '', d)}"
-# patch out build host paths for reproducibility
-reproducible_build_variables() {
- sed -i -e "s,${DEBUG_PREFIX_MAP},,g" \
- -e "s,--sysroot=${RECIPE_SYSROOT},,g" \
- -e "s,${STAGING_DIR_HOST},,g" \
- -e "s,${S}/llvm,,g" \
- -e "s,${B},,g" \
- ${B}/tools/llvm-config/BuildVariables.inc
-}
-
-do_configure:append:class-target() {
- reproducible_build_variables
-}
-
-do_configure:append:class-nativesdk() {
- reproducible_build_variables
-}
-
do_install:append() {
- oe_multilib_header llvm/Config/llvm-config.h
oe_multilib_header clang/Config/config.h
}
do_install:append:class-target () {
- # Allow bin path to change based on YOCTO_ALTERNATE_EXE_PATH
- sed -i 's;${_IMPORT_PREFIX}/bin;${_IMPORT_PREFIX_BIN};g' ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake
-
- # Insert function to populate Import Variables
- sed -i "4i\
-if(DEFINED ENV{YOCTO_ALTERNATE_EXE_PATH})\n\
- execute_process(COMMAND \"llvm-config\" \"--bindir\" OUTPUT_VARIABLE _IMPORT_PREFIX_BIN OUTPUT_STRIP_TRAILING_WHITESPACE)\n\
-else()\n\
- set(_IMPORT_PREFIX_BIN \"\${_IMPORT_PREFIX}/bin\")\n\
-endif()\n" ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake
-
if [ -n "${LLVM_LIBDIR_SUFFIX}" ]; then
mkdir -p ${D}${nonarch_libdir}
mv ${D}${libdir}/clang ${D}${nonarch_libdir}/clang
@@ -194,44 +115,18 @@ endif()\n" ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake
llvm-addr2line llvm-dwp llvm-size llvm-strings llvm-cov; do
ln -sf $t ${D}${bindir}/${TARGET_PREFIX}$t
done
-
- # reproducibility
- sed -i -e 's,${B},,g' ${D}${libdir}/cmake/llvm/LLVMConfig.cmake
}
do_install:append:class-native () {
- if ${@bb.utils.contains('PACKAGECONFIG', 'clangd', 'true', 'false', d)}; then
- install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clangd-indexer ${D}${bindir}/clangd-indexer
+ if ${@bb.utils.contains('PACKAGECONFIG', 'extra-tools', 'true', 'false', d)}; then
+ install -Dm 0755 ${B}/bin/clang-tidy-confusable-chars-gen ${D}${bindir}/clang-tidy-confusable-chars-gen
fi
- install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tidy-confusable-chars-gen ${D}${bindir}/clang-tidy-confusable-chars-gen
-
- for f in `find ${D}${bindir} -executable -type f -not -type l`; do
- test -n "`file -b $f|grep -i ELF`" && ${STRIP} $f
- echo "stripped $f"
- done
- ln -sf llvm-config ${D}${bindir}/llvm-config${PV}
-
- # These are provided by llvm-tblgen-native
- rm ${D}${bindir}/*-tblgen
}
do_install:append:class-nativesdk () {
if [ -e ${D}${libdir}/cmake/llvm/LLVMConfig.cmake ] ; then
sed -i -e "s|${B}/./bin/||g" ${D}${libdir}/cmake/llvm/LLVMConfig.cmake
fi
- if ${@bb.utils.contains('PACKAGECONFIG', 'clangd', 'true', 'false', d)}; then
- install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clangd-indexer ${D}${bindir}/clangd-indexer
- fi
- install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen
- install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tidy-confusable-chars-gen ${D}${bindir}/clang-tidy-confusable-chars-gen
- for f in `find ${D}${bindir} -executable -type f -not -type l`; do
- test -n "`file -b $f|grep -i ELF`" && ${STRIP} $f
- done
- ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV}
- ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV}
- ln -sf llvm-config ${D}${bindir}/llvm-config${PV}
- rm -rf ${D}${datadir}/llvm/cmake
- rm -rf ${D}${datadir}/llvm
#reproducibility
if [ -e ${D}${libdir}/cmake/llvm/LLVMConfig.cmake ] ; then
@@ -239,12 +134,7 @@ do_install:append:class-nativesdk () {
fi
}
-PROVIDES:append:class-native = " llvm-native"
-PROVIDES:append:class-target = " llvm"
-PROVIDES:append:class-nativesdk = " nativesdk-llvm"
-
-PACKAGES =+ "${PN}-libllvm ${PN}-libclang-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools \
- libclang llvm-linker-tools"
+PACKAGES =+ "${PN}-libclang-python ${PN}-libclang-cpp ${PN}-tidy ${PN}-format ${PN}-tools libclang"
BBCLASSEXTEND = "native nativesdk"
@@ -262,8 +152,6 @@ RDEPENDS:${PN}-tools += "\
RRECOMMENDS:${PN}-tidy += "${PN}-tools"
-FILES:llvm-linker-tools = "${libdir}/LLVMgold* ${libdir}/libLTO.so.* ${libdir}/LLVMPolly*"
-
FILES:${PN}-libclang-cpp = "${libdir}/libclang-cpp.so.*"
FILES:${PN}-libclang-python = "${PYTHON_SITEPACKAGES_DIR}/clang/*"
@@ -326,12 +214,6 @@ FILES:${PN} += "\
${nonarch_libdir}/${BPN}/*/include/ \
"
-FILES:${PN}-libllvm =+ "\
- ${libdir}/libLLVM.so.${MAJOR_VER}.${MINOR_VER} \
- ${libdir}/libLLVM-${MAJOR_VER}.so \
- ${libdir}/libRemarks.so.* \
-"
-
FILES:libclang = "\
${libdir}/libclang.so.* \
"
@@ -352,7 +234,6 @@ FILES:${PN}:remove = "${libdir}/${BPN}/*"
INSANE_SKIP:${PN} += "already-stripped"
#INSANE_SKIP:${PN}-dev += "dev-elf"
-INSANE_SKIP:${PN}-libllvm = "dev-so"
#Avoid SSTATE_SCAN_COMMAND running sed over llvm-config.
SSTATE_SCAN_FILES:remove = "*-config"
@@ -366,15 +247,17 @@ SYSROOT_PREPROCESS_FUNCS:append:class-target = " clang_sysroot_preprocess"
SYSROOT_PREPROCESS_FUNCS:append:class-nativesdk = " clang_sysroot_preprocess"
clang_sysroot_preprocess() {
- install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
- install -m 0755 ${S}/llvm/tools/llvm-config/llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
- ln -sf llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV}
+ install -d ${SYSROOT_DESTDIR}${bindir}/
binaries="diagtool clang-${MAJOR_VER} clang-format clang-offload-packager
clang-offload-bundler clang-scan-deps clang-repl
- clang-refactor clang-check clang-extdef-mapping clang-apply-replacements
- clang-reorder-fields clang-tidy clang-change-namespace clang-doc clang-include-fixer
- find-all-symbols clang-move clang-query pp-trace modularize"
+ clang-refactor clang-check clang-extdef-mapping"
+
+ if ${@bb.utils.contains('PACKAGECONFIG', 'extra-tools', 'true', 'false', d)}; then
+ binaries="${binaries} clang-apply-replacements clang-reorder-fields
+ clang-tidy clang-change-namespace clang-doc clang-include-fixer
+ find-all-symbols clang-move clang-query pp-trace modularize"
+ fi
if ${@bb.utils.contains('PACKAGECONFIG', 'clangd', 'true', 'false', d)}; then
binaries="${binaries} clangd"
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread