Commit Graph

67 Commits

Author SHA1 Message Date
Khem Raj
b7158ac865 clang: Fix GCS annotations in compiler-rt on aarch64
Fixes builds for Distros with

TC_CXX_RUNTIME = "llvm"

(From OE-Core rev: 44a550ef2a32eb00dcf5d7efd475d9916548e031)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-11 18:04:25 +01:00
Khem Raj
57a4230055 clang-cross: Create <cross>-clang binary copy instead of symlink
With clang cleanup in [1] we ended up removing this logic, which
is still required.

This ensures that search path for subsequent tools e.g. linker
assembler are searched in the same dir where <cross>-clang is
installed. If its a symlink to ../clang then the reference
installation dir is ../ and all cross-tools are not there
so clang will fail to find assembler/linker from cross staging
area and use /usr/bin/ld or /usr/bin/as  which we do not want

[1] https://git.openembedded.org/openembedded-core/commit/meta/recipes-devtools/clang/clang-cross_git.bb?id=5d96ed55acf7b9a908241222097ad809355de7cf

(From OE-Core rev: 3b0128fe6421e64674fd250e0b4e6afb1c8ce436)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-11 18:04:25 +01:00
Khem Raj
5b8fc98b57 libcxx: Create packageconfig for cross unwinder support
cross-unwinding can pass exception across runtimes e.g.
Multi-language applications ( nodejs native modules, python C extensions )

However, cross-unwinding is not default in libcxx for sometime [1]
it requires special handling at runtime by apps who use it
Switch recipe defaults to upstream defaults, which is to turn it off

This means native unwinding ( with in same runtime )
is build by default which is the most common case.

This also fixes libcxx/libunwind build errors
when enabling TC_CXX_RUNTIME = "llvm" on aarch64 particularly

[1] 85624c5de3

(From OE-Core rev: 88e1214e01c48b174aa9516c60e15a0dfb69e10f)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-11 18:04:25 +01:00
Khem Raj
3f941cbcb8 clang: Add packageconfig knob for opt-viewer
The optimization viewer is a web-based tool that helps developers visualize
and analyze LLVM's optimization passes. It generates reports showing
Which optimizations were applied to specific functions.
Why certain optimizations were or weren't performed.
Performance remarks and missed optimization opportunities
Interactive views of the optimization pipeline.

Its a nice add-on, keep it disabled by default.

(From OE-Core rev: 70c43e35fb7ce0b71f28a91a1864f02338545522)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-07 12:11:15 +01:00
Ross Burton
f7a6163d4f libclc: do native build of prepare_builtins in a fresh environment
The environment has variables like LDFLAGS set which CMake will try and
use, so until our cmake class is comprehensive enough to nuke those in
the native toolchain file (if that is possible) do a build inside a
clean (apart from PATH) environment to avoid cross-contamination.

As noticed by Khem Raj, this can fail in nativesdk builds as the target
flags will be passed to the native link resulting in failures like:

  Requesting program interpreter: /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-yoesdk-linux/lib/ld-linux-x86-64.so.2

(From OE-Core rev: 0013f501d1de01606b812d930ef6ca842633f551)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-07 12:11:15 +01:00
Richard Purdie
903710ab5c clang/meta-ide-support/meta-extsdk-toolchain: Add missing MLPREFIX
'cross' dependencies are hard, the code currently handles adding MLPREFIX
in these cases but may not in future depending upon implementation.

Add the correct value explictly.

(From OE-Core rev: 8393be1792cee0fbe76d75fd20a97dda41134880)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:04 +01:00
Ross Burton
844e2ebbfc clang: split lld into a separate lld recipe
The lld linker is a standalone project under the LLVM umbrella that just
depends on libLLVM and nothing else, such as clang.

To reduce the build time of clang if lld is not being used, split it out
into a separate recipe.

To ensure that lld is present if needed, the clang-cross recipe will
depend on lld-native if ld-is-lld is enable.

(From OE-Core rev: 5212b69f892af8c9b080fee2c21533a2bbdd2755)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:04 +01:00
Khem Raj
55c607068e clang: Remove dependency on swig-native
LLDB Uses SWIG to generate python bindings, however
LLDB is no longer part of clang anymore, its a
separate recipe.

(From OE-Core rev: deda1e227dbdcb04c7bfb0ad0afef6ff05674c4f)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:04 +01:00
Ross Burton
82e0770588 clang: remove bootstrap logic
We don't bootstrap clang, so remove the logic to do so as it just
complicates the recipe.

(From OE-Core rev: 8fc6dd715debb242cf22e60078039c81d4da7c13)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:04 +01:00
Ross Burton
329d1b4dbe clang: remove ninja-native DEPENDS
The cmake class depends on ninja-native already.

(From OE-Core rev: 8ed6ce66de1b54b8129a9895d8cfaf2bb3c3bbb2)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:04 +01:00
Ross Burton
455e89f658 clang: remove redundant python3native inherits
None of these recipes need a native build of Python as they don't depend
on native Python modules, nor build Python modules against the target.

(From OE-Core rev: e0da53fca5ec30d883216bfb0be7d96ad597aa69)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:04 +01:00
Ross Burton
361b6482c0 clang: no need to depend on python3native/python3targetconfig
Now that lldb has been split out of the clang recipe, there's no need
for the clang recipe to have Python integration beyond the current
Python major version for installing the libclang bindings, which can be
done by simply inheriting python3-dir.

The installation of six.py was done by lldb, and was removed in LLVM 16.

(From OE-Core rev: 5cbe58c604233a0d367e1bb1e3fce0492ae0e836)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:04 +01:00
Ross Burton
dc1dd78b70 clang: don't install c-index-test
Specifically, c-index-test is a 35MB binary which isn't needed if we're
not running the tests.

(From OE-Core rev: a61c3ab08039d382ec2216b8a5deaf256d7bf9c5)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:04 +01:00
Ross Burton
24540125e3 clang: remove obsolete OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM
This was added by a certain Mr Burton back in 2016[1] to avoid needing
to depend on perl-native or python3-native, and use the host perl and
python.

However, perl is no longer needed and python3-native is depended on
because the Python bindings are build, so this is now redundant.

[1] meta-clang: 2e003cc ("clang: don't depend on native perl or python")

(From OE-Core rev: 540b02e0fb168fade2afc1d657463c7e0248ae94)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:03 +01:00
Ross Burton
aa1c6f7519 clang-cross: trim the recipes
As a single clang-native build is a cross-compiler for all targets, this
recipe should simply create target-prefixed symlinks.

As such, it doesn't need to pull in the common clang include files, or
set TOOLCHAIN.

Unsetting PACKAGES isn't needed as cross inherits nopackages.

The sysroot preprocessing is used to stage bindir, but cross recipes
already stage this directory.

There doesn't appear to be a need to copy clang, so these are now linked
too.

SSTATE_SCAN_FILES only works on actual files not symlinks, so setting it
is pointless.

(From OE-Core rev: 5d96ed55acf7b9a908241222097ad809355de7cf)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-08-04 18:04:03 +01:00
Khem Raj
3e62ff66bc libclc: Point to native prepare_builtins binary for target and nativesdk
This is not needed for native version

This will be in utils/ directory starting with clang-22

(From OE-Core rev: c1880494a984ed582e873bbf24fc5f1c000d0bc9)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-31 10:48:35 +01:00
Khem Raj
94ec6a38c9 libcxx,compiler-rt: Remove use of non-existing runtime-llvm override
Provide libunwind based on TC_CXX_RUNTIME
When TC_CXX_RUNTIME is set to be 'llvm' distro wants
to use llvm provided runtime elements therefore provide
libunwind when TC_CXX_RUNTIME = "llvm"

(From OE-Core rev: 61cf402d5bf95094a02d4ea3b1a60cecc04aa0f4)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-31 10:48:35 +01:00
Khem Raj
4c42f1ee74 compiler-rt: Add missing VER_SUFFIX to installation directory name
This helps building, pre-release snapshots e.g. -rc1 etc.

(From OE-Core rev: 98990b73849e5dc8a8af53f21ef6b922ef74b0d7)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-31 10:48:35 +01:00
Khem Raj
f7735d5ee0 clang: Drop dependency on spirv-tools-native
spirv is now a separate recipe.

(From OE-Core rev: 3d0609be2240d728de27c27cbc2f17cfc264cca0)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-31 10:48:35 +01:00
Ross Burton
0747e2d25f clang: move get_clang_arch() functions to the common inc file
These functions are useful outside of just the clang recipe, so move
them to a common .inc file so they can be used by other clang-related
recipes.

Also make the function fail if it doesn't recognise the architecture,
instead of returning the empty string and causing mysterious fails later.

(From OE-Core rev: 1d5298533e97dab7636f885ddd740352782395b0)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-28 17:37:02 +01:00
Ross Burton
dd862931b5 lldb: don't build rpaths into binaries
LLDB defaults to adding rpaths into the binaries which are then stripped
by CMake on install.

However, this rpath removal is implemented by editing the binary instead
of relinking at install time, so the final binary will have an entry in
the dynstr section which is all nulls but is as long as the build path.

Obviously this breaks reproducibility, so disable the use of rpaths in
LLDB to remove this problem.

(From OE-Core rev: d96e0458b696a7359d310cbe112c5dc2fc60f97d)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-23 18:00:50 +01:00
Ross Burton
664fa0ede2 lldb: remove incorrect comment about llvm vs clang
LLDB links to clang libraries, so it really does need clang and not just
LLVM.

(From OE-Core rev: 1a37bb2f0bbdbd599e1d5967eae1ecde4eff6a80)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-23 18:00:50 +01:00
Ross Burton
c6671e2a78 clang: ensure the native-built tblgen binaries are used
Set LLVM_HEADERS_TBLGEN so that we don't build another copy of tblgen.

Also remove LLVM_OPTIMIZED_TABLEGEN, this is redundant as we're not
building a tablegen binary in this recipe anymore.

(From OE-Core rev: 259a3e9a8281c4e9ab73dee82738f359f029b78d)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-21 23:00:18 +01:00
Ross Burton
e25f19c253 clang: remove PYTHON_EXECUTABLE assignments
The cmake.bbclass already does this.

(From OE-Core rev: 85c1aecdf847b97409930d915a90ab850e92bc38)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-21 23:00:18 +01:00
Ross Burton
cdc1a949c0 clang: improve LLVM target selection logic
The GPU targets are incredibly slow to build, so if the DISTRO_FEATURES
doesn't include opengl or vulkan assume that the user will not be using
a GPU and disable them.

Alternatively, a distribution could state that they'll only be using
one of the backends, and set LLVM_TARGETS_GPU explicitly.

On my build machine, disabling the GPU targets reduces the build time of
clang-native from 21m to 16m.

(From OE-Core rev: 2273a0685757421f39541a352d77b67e5ba604d3)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-21 23:00:18 +01:00
Ross Burton
56e1ae0ccf libclc: split out of clang
Split the libclc subproject out of the clang recipe and into a dedicated
libclc recipe.

This is useful because libclc is the OpenCL runtime library and as such
isn't target-specific and needs a native clang to build, not a target
libllvm.

Verified that nothing is dropped by adding clang and libclc to an image
and verifying that the file list is the same before and after this
change.

We need to patch the libclc CMakeLists to allow it to use an out-of-tree
prepare_builtins binary, discussion is ongoing with upstream to resolve
this properly.

(From OE-Core rev: 33a8742a1280b4c6779a7aa487c2dd4a713babe6)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-21 23:00:18 +01:00
Khem Raj
1a1be57b2e clang: Default to use lld if ld-is-lld is in DISTRO_FEATURES
This ensures that default system linker is used correctly based upon
distro features, current default remain same i.e. uses BFD linker

(From OE-Core rev: 33e7c85e92ddbc35989e7afcaf5fe4c14efdefab)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-21 23:00:18 +01:00
Ross Burton
600aaa78c1 clang: remove obsolete 'terminfo' PACKAGECONFIG
Neither LLVM_ENABLE_TERMINFO or COMPILER_RT_TERMINFO_LIB are used in the
current CMakeLists.

(From OE-Core rev: 134880baa4a971660e0800f70404d15c758fb7db)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-17 10:41:18 +01:00
Ross Burton
88d2cceec0 lldb: fix typo in lzma PACKAGECONFIG
Accidentally duplicated the beginning of the variable name.

(From OE-Core rev: 1484e2cf36428fbe7f5095ec881fdd018eea344b)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-17 10:41:18 +01:00
Khem Raj
ac5f388cc8 clang: Upgrade to 20.1.8 release
Brings following fixes

* 87f0227cb601 [InstCombine] Avoid folding `select(umin(X, Y), X)` with min/max values in false arm (#143020)
* df43f93388b7 [PhaseOrdering] Add test for #139050 (NFC)
* 25bcf1145fd7 [RISCV] Fix assertion failure when using -fstack-clash-protection (#135248)
* 6fb913d3e2ec [RelLookupTableConverter] Drop unnamed_addr for GVs in entries to avoid generating GOTPCREL relocations (#146068)
* 0c9f909b7976 [AArch64][SME] Fix restoring callee-saves from FP with hazard padding (#143371)
* fa792cd4c630 [AsmPrinter] Always emit global equivalents if there is non-global uses (#145648)
* ce455b382c08 [objcopy][MachO] Revert special handling of encryptable binaries (#144058)
* 0de59a293f7a [X86] Ignore NSW when DstSVT is i32 (#131755)
* 9af763f038f7 [gtest] Fix building on OpenBSD/sparc64 (#145225)
* 1daceb20611f [LoongArch] Pass OptLevel to LoongArchDAGToDAGISel correctly
* b21155f97a0a [LoongArch] Precommit test case to show bug in LoongArchISelDagToDag
* da18fb9f04ce [LoongArch] Fix xvshuf instructions lowering (#145868)
* 65ce78f338cf [LoongArch] Pre-commit test for fixing xvshuf instructions. NFC
* 5532d5b745e4 [AArch64] Ensure the LR is preserved if we must call __arm_get_current_vg (#145760)
* 5ac3ce819688 [WebAssembly] Fix inline assembly with vector types (#146574)
* b83658b7e2c8 Bump version to 20.1.8

(From OE-Core rev: 4c6e132d6e5e49426c911d0fa9215957eb43f186)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-17 10:41:18 +01:00
Ross Burton
e3220f1648 clang: set CVE_PRODUCT
There are a number of recipes that are part of the LLVM Project, so set
CVE_PRODUCT to llvm:llvm in common.inc to ensure that all of the recipes
are covered.

Also add llvm:clang in the clang recipe, as there are a number of CVEs
with that product name.

(From OE-Core rev: 319e97643c1e342491931b6274996d1c8caa7d33)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-17 10:41:18 +01:00
Ross Burton
0b200483ae clang: remove clang-lldb-python package
v1 of the lldb patchset was accidentally merged, which didn't remove
this package from the clang recipe.

(From OE-Core rev: f389f14983cf87238f9a073b50837583596735ea)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-17 10:41:18 +01:00
Ross Burton
322fc2fc75 lldb: add new recipe, split out of clang
LLDB takes a reasonable amount of time to compile, but also isn't an
essential component of the LLVM suite.

Instead of always building it when we build clang, split it out into a
separate recipe.

On my build machine where clang takes 21 minutes to build with lldb, it
takes 19 minutes without lldb.

(From OE-Core rev: 9da4900aa5a37718bd42f277d5a1805ec897b1b4)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-14 17:49:48 +01:00
Ross Burton
bd3792a7ad llvm-tblgen-native: add new recipe
Building the LLVM projects often means using the TableGen tools
(llvm-tblgen etc).

We currently build them as part of clang-native, but I am teasing the
clang recipe into its component parts and having to build llvm-native
or lldb-native simply for one tool isn't ideal.

Instead, add a native recipe that simply builds the tablegen binaries
for llvm, clang, and lldb

(From OE-Core rev: fbf63e03fe09ca74022c9d06442b4f1021b71d57)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-14 17:49:48 +01:00
Ross Burton
728d87c9bd clang: move BPN assignment from common.inc
There's a BPN assignment in common.inc which means all recipes need to
either be called clang, or set BPN themselves.

Move the assignment to the clang recipes. For now I'm leaving the
existing BPN assignments in the other recipes, in case there are complex
multilib-related reasons to retain them.

(From OE-Core rev: fc7e8c3e5c19a1885bec564c8fc07df5a13c8bd4)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-14 17:49:48 +01:00
Khem Raj
5a8e96ed11 compiler-rt: Fix install location for native builds
Currently, clang when used for native builds and uses --rtlib=compiler-rt
does not find the LLVM runtime because its installed in different
directory than where compiler expects it to be. As a result, build fails
for packages using clang in both capacity ( native and cross )
e.g. qtwebengine

Make the build work across native sanitizers as well.

(From OE-Core rev: 4d55698330ce6720cab5dfe9b4e00efeb40ba6e6)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-14 17:49:48 +01:00
Khem Raj
ef31bc3074 compiler-rt: Use clang for native compile as well
(From OE-Core rev: 0c3ab984e72db424aa2684f5e2073a165b4b0910)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-14 17:49:48 +01:00
Khem Raj
582664d64d compiler-rt,libcxx: Use clang for native-libcxx and gcc for compiler-rt-native
compiler-rt configure calls for c++ compiler which can cause C++ runtime to
not be detected on some Yocto autobuilder workers running ubuntu 24.04
therefore let it use gcc for native version

Set TOOLCHAIN_NATIVE for using clang for libcxx

(From OE-Core rev: d54512c1c0a98516077b77d5414af47d8c2b8c39)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-04 14:56:41 +01:00
Khem Raj
4263516a5b clang: Upgrade to 20.1.7
Brings following fixes

* 6146a88f6049 [LoongArch] Fix '-mno-lsx' option not disabling LASX feature (#143821)
* 9ba132be8eea [clan-reply] Backport PTU error recovery to 20.x
* 199e02a36433 Disable clangd/test/module_dependencies.test on Windows
* 02aec86e4d0d [clangd] [Modules] Fix to correctly handle module dependencies (#142828)
* c4f257cb74b5 [llvm-rc] Allow ALT on non-virtkey accelerators (#143374)
* 6fa0cdf3720b release/20.x: [clang] Don't evaluate the initializer of constexpr-unknown parameters. (#142498)
* 337beb73abfe [libc++] Add _LIBCPP_NO_UNIQUE_ADDRESS to flat_{,multi}map::value_compare (#137594)
* b8e10ca59b6a [libc++] Fix check for _LIBCPP_HAS_NO_WIDE_CHARACTERS in features.py (#131675)
* 2da24c36c7df [libcxx] Provide locale conversions to tests through lit substitution (#105651)
* 253e9321c8b6 [release/20.x] Update release notes for SystemZ changes (#140060)
* acf86c5c4dbe [CVP] Keep `ReachableCaseCount` in sync with range of condition (#142302)
* 2481e590eec7 [AArch64][SME] Fix accessing the emergency spill slot with hazard padding (#142190)
* 22a3e6b19409 release/20.x: [AArch64] Handle XAR with v1i64 operand types (#141754)
* e5dd4f129454 [clangd] Guard against trivial FunctionProtoTypeLoc when creating inlay hints (#143087)
* f6532710ace8 [clang-format] Correctly annotate token-pasted function decl names (#142337)
* e0586e278f96 [RelLookupTableConverter] Drop unnamed_addr to avoid generating GOTPCREL relocations (#142304)
* 7759bb57c243 (origin/users/mizvekov/GH139019) [clang] Serialization: support hashing null template arguments
* 7cf14539b644 Bump version to 20.1.7

(From OE-Core rev: 293a471e0ee8c7f487b138d858c9b87a0e61c063)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-07-03 10:40:16 +01:00
Liu Yiding
ff5f8a4744 clang: multilib-header fix for llvm/Config/llvm-config.h and clang/Config/config.h
Error: Transaction test error:
  file /usr/include/clang/Config/config.h conflicts between attempted installs of
lib32-clang-dev-20.1.4-r0.core2_32 and clang-dev-20.1.4-r0.core2_64
  file /usr/include/llvm/Config/llvm-config.h conflicts between attempted
installs of lib32-clang-dev-20.1.4-r0.core2_32 and clang-dev-20.1.4-r0.core2_64

reproduce steps:
1. Add in local.conf the following lines:

  MACHINE ?= "qemux86-64"

  require conf/multilib.conf

  MULTILIBS ?= "multilib:lib32"

  DEFAULTTUNE:virtclass-multilib-lib32 ?= "core2-32"

2. add lib32-llvm-dev llvm-dev to core-image-minimal.bb

  IMAGE_INSTALL = "packagegroup-core-boot ${CORE_IMAGE_EXTRA_INSTALL} lib32-clang-dev clang-dev"

3. $ bitbake core-image-minimal

(From OE-Core rev: e2631fd1b47ed2d2b877426c4f253e6edea24ece)

Signed-off-by: Liu Yiding <liuyd.fnst@fujitsu.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-26 15:11:10 +01:00
Alexander Kanavin
dc9faa3cdc meta: remove consecutive blank lines
Some of them were introduced by mass-removal of S = WORKDIR/git assignments;
rather than try to fix up (or redo) just these, I've run this sed command over
the whole tree:

sed -i -z -E 's/([ \t\f\v\r]*\n){3,}/\n\n/g' `find . -name *.bb -o -name *.inc`

The rationale is that more than one empty line is wasting vertical screen space, and
does nothing for readability.

(From OE-Core rev: cedc4ff7c9bcfb22a20e43e47f9759f4007a4f1a)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-20 12:07:27 +01:00
Alexander Kanavin
910442fedc gcc/clang: set S to be in UNPACKDIR
This and some further commits allows removing the 'backwards
compatibility magic' in do_unpack that moves unpacked sources
to where S is set to.

(From OE-Core rev: 6b2f14cd2d110113f1065bdc818ec4e9dbd4b054)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-20 12:07:26 +01:00
Richard Purdie
5317a214c5 toolchain: Provide abstraction for recipe specific toolchain selection
This change implements a toolchain selection mechanism. Selection is
made using a set of variables, primarily PREFERRED_TOOLCHAIN_TARGET which
defaults to gcc.

It uses the familiar name for toolchain e.g. "gcc" which selects GNU
compiler + binutils as default C/C++ toolchain or "clang" which will
use LLVM/Clang Compiler. Layers an add their own toolchain definitions
too.

There are also PREFERRED_TOOLCHAIN_NATIVE and PREFERRED_TOOLCHAIN_SDK
which will ulitmately allow selection of the toolchain used for the
native/cross and nativesdk/crosssdk compilers. This currently isn't
functional but is essential to the patch to ensure things are set
to the existing gcc support in those cases.

Users would most commonly want to set:

PREFERRED_TOOLCHAIN_TARGET ?= "clang"

in local.conf or other distro specific global configuration metadata.

It is also selectable at recipe scope, since not all packages are
buildable with either clang or gcc, a recipe can explicitly require
a given toolchain using the TOOLCAHIN variable, e.g. glibc can not
be built with clang therefore glibc recipe sets:

TOOLCHAIN = "gcc"

The TOOLCHAIN variable is distinct from the user preference so recipes
with specific requirements can be identified. This also allows different
polcies to be be specified for native/SDK cases in the future.

(From OE-Core rev: 45bdedd213aff8df3214b95ef2a8551c0abd93a0)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-16 22:26:38 +01:00
Richard Purdie
99e842451f compiler-rt/libcxx: Use clang as compiler
(From OE-Core rev: e75b2dee39fc0a35f764caa6b72af2a0b9beb165)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-09 17:43:41 +01:00
Khem Raj
bf50c0ef77 clang: Upgrade to 20.1.6 minor release
Brings following commits

* 47addd4540b4 [libclc] Include isnan implementation for SPIR-V targets
* 4b6e5a286653 [clang-format] Handle Java text blocks (#141334)
* 0e1ef696f1fe [Driver] Fix _XOPEN_SOURCE definition on Solaris (#137141)
* 5d99a97583e1 [MachO] Improve bounds check (#141083)
* aa804fd3e624 [sanitizer_common] Remove interceptors for deprecated struct termio (#137403)
* 53393e26d5f4 [LoongArch] Prevent R0/R1 allocation for rj operand of [G]CSRXCHG (#140862)
* 6fcb1c127b40 [LoongArch] Fix assertion failure for annotate tablejump (#140907)
* 15ec590e389b release/20.x: [clang-format] Fix the indent of StartOfName after AttributeMacro (#140361)
* 802f4f75372e [clang-format] Handle raw string literals containing JSON code (#140666)
* 9b0832508ede [SDAG] Ensure load is included in output chain of sincos expansion (#140525)
* 8a36b8e3ab46 [clang][analyzer] Handle CXXParenInitListExpr alongside InitListExpr
* 070cf62530ea [Clang] Demote mixed enumeration arithmetic error to a warning (#131811)
* a169f5ca4e4f Correct position of CFI Instruction for Pointer Authentication"
* 5befd1fb3c97 [Clang][AST] Fix HandleLValueBase to deal with references (#140105)
* e3d2c00ccee4 [LLD][COFF] Allow -arm64xsameaddress in ARM64EC directives (#139631)
* 85e06a761483 [LoongArch] Fix fp_to_uint/fp_to_sint conversion errors for lasx (#137129)
* ff2e8f93f609 Fix test pfalse-v4i1.ll added in #138712 to require asserts.
* 1e4d39e07757 Bump version to 20.1.6

(From OE-Core rev: 84e4f1556e074e5b771c66dac8ba2ce47beb89d0)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-06-02 22:17:24 +01:00
Khem Raj
7d9036be35 clang: Upgrade to 20.1.5 release
Brings following fixes

* 7b09d7b44638 [analyzer] Workaround for slowdown spikes (unintended scope increase) (#136720)
* a708fb737a78 [RISCV] Allow `Zicsr`/`Zifencei` to duplicate with `g` (#136842)
* 1c0368417f55 [clang][analysis] Fix flaky clang/test/Analysis/live-stmts.cpp test (2nd attempt) (#127406)
* 0439d1d36312 [Clang] Fix handling of reference types in tryEvaluateBuiltinObjectSize (#138247)
* 74ed1ac61104 [sanitizer_common] Fix build on ppc64+musl (#120036)
* 2d079b96a5fb release/20.x: [clang-format] Fix a crash on formatting missing r_paren/r_brace (#138230)
* 2cacf46f35c8 [X86][TargetLowering] Avoid deleting temporary nodes in `getNegatedExpression` (#139029)
* f233430d977b [AArch64] Fix feature list for FUJITSU-MONAKA processor (#139212)
* 41c36d940804 [clang] Fix unused variable warning in MS mangler from constant matrix patch
* 72ad9be1e337 [Clang][MicrosoftMangle] Implement mangling for ConstantMatrixType (#134930)
* 0019b7d0ae0b [wasm-ld] Refactor WasmSym from static globals to per-link context (#134970)
* b7b834e2a20e [RTSan][Darwin] Adjust OSSpinLock/_os_nospin_lock interceptor and tests (#132867)
* f811c7df0a10 [rtsan][Apple] Add interceptor for _os_nospin_lock_lock (#131034)
* 4370072022e5 [clang] Forward TPL of NestedNameSpecifier
* d34d5296095b Support z17 processor name and scheduler description
* a7166c373946 release/20.x: [clang-format] RemoveParentheses shouldn't remove empty parentheses (#138229)
* 5429418cb064 [clang] Add support for Debian 14 Forky and Debian 15 Duke (#138460)
* be087ab35970 [libc++] Re-introduce _LIBCPP_DISABLE_AVAILABILITY (#134158)
* 2b34040173f7 [clang-repl] Fix destructor for interpreter for the cuda negation case (#138091)
* ae97a56d363f [Hexagon] Add missing patterns to select PFALSE and PTRUE (#138712)
* 2386c377db4f [BasicAA] Gracefully handle large LocationSize (#138528)
* 961ce35e2957 [OpenMP] Add pre sm_70 load hack back in (#138589)
* 009f3c10d1c1 [LLD][COFF] Don't dllimport from static libraries (#134443)
* 70eed33971d9 [InstCombine] Do not combine shuffle+bitcast if the bitcast is eliminable. (#135769)
* 6ddf2e5d10f8 [clang-tidy] Do not pass any file when listing checks in run_clang_ti… (#137286)
* 8272e451613d [flang] Exempt construct entities from SAVE check for PURE (#131383)
* 069ef671e0ab [AArch64][SME] Allow spills of ZT0 around SME ABI routines again (#136726)
* a38e1ae2041d [AArch64][SME2] Don't preserve ZT0 around SME ABI routines (#132722)
* be4097b6ee57 Fix crash lowering stack guard on OpenBSD/aarch64. (#125416)
* aecbb2364a7c [Clang] Fix the trailing comma regression (#136273)
* ebfae55af454 Bump version to 20.1.5

(From OE-Core rev: 07a1c1d765f220b1f75e503404d689524a8c14ef)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-27 09:01:17 +01:00
Khem Raj
2ee99d2ddc compiler-rt-sanitizers: Fix build on mips
uintptr_t size is not consistent between compiler-rt and clang
for mips

(From OE-Core rev: 7f2b80c8eaaf226d3c9faed93e9c93879de50b54)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-27 09:01:17 +01:00
Luca Fancellu
474a7b65e3 clang: Include the libclang python bindings in the build
Modify the clang recipe to provide also the python module
'clang' when building libclang.

(From OE-Core rev: 091fb8f51b5fdd3cb8e53e540d3c6feb8c40f8d5)

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-27 09:01:17 +01:00
Dmitry Baryshkov
14dc339f38 clang: build-depend on spirv-llvm-translator-native
Building of spirv-mesa and spirv64-mesa CLC targets (which are required
for Mesa to work) requires a working llvm-spirv tool (provided by the
spirv-llvm-translator-native package). Make clang build-depend on the
corresponding recipe in order to be able to build requried targets.

Fixes: 4178fe97371b ("clang: split SPIRV-LLVM-Translator to its own recipe")
(From OE-Core rev: 177aaa7912f317da4a17a57081eb4f5667ef2c02)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-22 14:36:49 +01:00
Khem Raj
697be95acd compiler-rt-sanitizers: Fix native builds on aarch64 build hosts
Add logic to deduce compiler-rt target architecture based on tune
features

Cleanup the cmake options for native/nativesdk/target recipes

(From OE-Core rev: 579d4d85574624e39140fb74f6d37dcd7bf363a6)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-15 10:55:26 +01:00