Commit Graph

19 Commits

Author SHA1 Message Date
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
Khem Raj
92ce706e23 compile-rt: Fix building compiler-native on aarch64 build hosts.
Using target triple confuses the native system compiler to find
libgcc and C runtime during compiler-rt-native build

Fixes
|     /home/khem/yoe/build/tmp/hosttools/ld: cannot find crtbeginS.o: No such file or directory
|     /home/khem/yoe/build/tmp/hosttools/ld: cannot find -lgcc: No such file or directory
|     /home/khem/yoe/build/tmp/hosttools/ld: cannot find -lgcc_s: No such file or directory
|     clang: error: linker command failed with exit code 1 (use -v to see invocation)
|     ninja: build stopped: subcommand failed.

(From OE-Core rev: 1d4676d6b7c0fe40ab4f808dda436dc2f2915fd8)

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
Khem Raj
fa724e8745 compiler-rt: Exclude sync builtins from build when arm < v6
arm architecture < v6 does not have the dmb support, therefore do
not add the sync primitives to compiler-rt builtins build

(From OE-Core rev: e1b143860b221600f7dab5c08e5b187aefb851dd)

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
Khem Raj
a104d73d7a compiler-rt: Map the COMPILER_RT_DEFAULT_TARGET_ARCH
COMPILER_RT_DEFAULT_TARGET_ARCH is not 1 to 1 match with HOST_ARCH
especially for armv5/arm4

(From OE-Core rev: 71f7db2e5d264bc6ed50fae48567ae674af9a700)

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
Khem Raj
1b2edf474e clang: Upgrade to 20.1.4
Brings following fixes

* ec28b8f9cc7f [libcxx] [test] Extend mingw workarounds for armv7/aarch64 too (#136419)
* 8c2dc1b5aa7f [clang-repl] Implement LoadDynamicLibrary for clang-repl wasm use cases (#133037)
* 02afcbf63fee [SystemZ] Fix compile time regression in adjustInliningThreshold(). (#137527)
* c877757659e8 [clang-repl] : Fix clang-repl crash with --cuda flag (#136404)
* f4779c389868 [InstCombine] Preserve signbit semantics of NaN with fold to fabs (#136648)
* 57a31e183dc8 [InstCombine] Do not fold logical is_finite test (#136851)
* 1cf8c7797d2b [GlobalOpt] Do not promote malloc if there are atomic loads/stores (#137158)
* 24805c2e0817 [lldb] Use correct path for lldb-server executable (#131519)
* 182e8b7f8a71 [clang-format] Correctly annotate kw_operator in using decls (#136545)
* 425d1aad294f [RISCV] Handle scalarized reductions in getArithmeticReductionCost
* 2d7ad98ec0a8 [clang][analyzer] Fix error path of builtin overflow (#136345)
* e7ae5532bc27 [clang-format] Fix mismatched break in BlockIndent (#124998)
* 8f288eb619db [lldb][test] Adjust TestTargetReadInstructionsFlavor skipIfs
* d76ec6a75d39 [lldb] Fix  SBTarget::ReadInstruction  with flavor (#134626)
* 62072e7f877e [clang][AST] Handle implicit first argument in CallExpr::getBeginLoc()
* 581772ed077e [LoongArch] Don't crash on instruction prefetch intrinsics (#135760)
* 89adc2d4f93b [HEXAGON] Fix corner cases for hwloops pass (#135439)
* 78f6719ca9b5 [GlobalMerge][PPC] Don't merge globals in llvm.metadata section (#131801)
* ab0074fe306f Bump version to 20.1.4

(From OE-Core rev: a94a08b86f08e4fbf038abbda6d210b11edb0dd6)

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-12 22:01:56 +01:00
Khem Raj
4f94b4b45d compiler-rt: Rename the rt libraries if compiled with arm hardfloat ABI
OE does not rely on tuple to deduce hardfloat ABI, but clang/llvm does
arm-yoe-linux-gnueabi is used for both soft and softfp and hardfp float
ABIs in OE, LLVM expects arm-yoe-linux-gnueabihf for it to be treated as
hardfloat ABI, and look for correct name for rt libraries.

We know when we compile them with Hard-float ABI so rename them in such
case so clang can find it when using -rtlib=compiler-rt it needs to
has 'armhf' suffix

(From OE-Core rev: b369e99cb27bd327ab244335b637f0ad3393d9b8)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-12 22:01:56 +01:00
Khem Raj
1cae6faf9d libcxx: Fix cflags and ldflags for using compiler runtime
-stdlib is needed in both cxxflags and ldflags since c++ compiler
will use these to chose the right c++ headers and libraries during link

-rtlib and -unwindlib are only needed during linking

Use LLVM_HOST_TRIPLE during cross compiling compiler-rt for target
this is used by cmake to compute target and compiler triples

Fix LLVM_RUNTIME_TARGETS to use HOST_ARCH, it does not need cross
compile triple which HOST_SYS is passing here

(From OE-Core rev: d1ae4087c548a78e90687b64764f621b070e3ec5)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-12 22:01:56 +01:00
Khem Raj
77c0cff6a7 compiler-rt: Consolidate and fix cmake arguments
Specify CMAKE_C_COMPILER_TARGET and COMPILER_RT_DEFAULT_TARGET_ARCH
in common for native/target/nativesdk

set COMPILER_RT_DEFAULT_TARGET_ARCH to use HOST_ARCH across all recipe
variants

It is not needed to set COMPILER_RT_DEFAULT_TARGET_ARCH for powerpc anymore
as it is already fixed by setting COMPILER_RT_DEFAULT_TARGET_ARCH to
HOST_ARCH

(From OE-Core rev: 945e9a799ddbb28c169155368f1998cb8e9f455f)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-12 22:01:56 +01:00
Alexander Kanavin
a9d45c0499 clang: fix upstream version check
(From OE-Core rev: 0dfdaca8405f4f1a9c188f736a99c39b7f8272b3)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-09 07:10:11 +01:00
Khem Raj
777bcd1a08 clang: Build limited targets for target clang recipe
On target its sufficient to build what mesa needs + one host target
It should speed up the build.

Fix bug in function mapping target architecture to LLVM backend

Reduces size of libLLVM

Before - 131M May  6 20:42 ./clang-libllvm/usr/lib/libLLVM.so.20.1
After  - 93M May  6 18:47 ./clang-libllvm/usr/lib/libLLVM.so.20.1

(From OE-Core rev: 0e1c55d2631200f8c9890eac8d26c404f28862d3)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-09 07:10:11 +01:00
Khem Raj
b741bca929 clang: Space optimize clang recipes
They can consume quite a bit of build space, we don't debug them as often

(From OE-Core rev: 107c344a627c29a2c6a1a47f57d3d63e74bbb112)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-09 07:10:11 +01:00
Khem Raj
6d0cb00c68 compiler-rt: Always use clang for compiler
This makes it build for all architectures e.g. riscv/mips/ppc etc.

Using clang-native to build all variants of recipe makes it easier to
handle compiling with various distros choosing different runtimes

(From OE-Core rev: 4df1f0da627e0985312ae4a330e7f0800c0c87a5)

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-08 10:28:19 +01:00
Khem Raj
afc01fd5d8 compiler-rt-sanitizers: Omit the musl architecture restrictions
sanitizers are working fine on arm/aarch64 as well. Remove the
compatible host restriction

(From OE-Core rev: 3ebe53ddc99643f96a87e751766f02f0b2203a07)

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-08 10:28:18 +01:00
Dmitry Baryshkov
251fd55c27 clang: split SPIRV-LLVM-Translator to its own recipe
The translator is not a part of the same source tree. As such it has
tendency to break on clang upgrades. Split it to its own recipe in order
to ease handling of clang.

This also makes it use SPIR-V headers provided by the spirv-headers
recipe instead of vendoring them in.

(From OE-Core rev: 4178fe97371bce0bd63b19f57b872ccefd1ec45c)

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-08 10:28:18 +01:00
Khem Raj
5219464cba libcxx,compiler-rt-sanitizers: Add cflags to build with clang compiler
We are using clang-native to build the native versions of these recipes
but we are missing the needed compiler flags to let it c/c++ runtime
appropriately. This also ensures that meta-clang does not have to worry
about the compiler settings for nativesdk/native pieces separately.

(From OE-Core rev: b3b97ff790f42c5844c9f6aaeab9e23d355febfa)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-05 18:02:48 +01:00
Khem Raj
84f6d5015c clang: Upgrade to 20.1.3
Brings following fixes

* 923a5c4f83d2 Revert "[ARM][ConstantIslands] Correct MinNoSplitDisp calculation (#114590)"
* 86f5891c5986 [llvm][Hexagon] Promote operand v2i1 to v2i32 (#135409)
* d55c3c20520a [libc++] Fix misplaced _LIBCPP_POP_MACROS (#134874)
* 9420327ad768 [Clang] Fix a lambda pattern comparison mismatch after ecc7e6ce4 (#133863)
* 4da7285e636e Silence -Wcast-function-type warnings on idiomatic Windows code (#135660)
* c5109be53b7e [LV] Disable epilogue vectorization for FindLastIV if start is poison.
* 91a3f14d9497 [LV] Add tests with FindLastIV and epilogue vectorization.
* 2131242240f7 [LLVM][MemCpyOpt] Unify alias tags if we optimize allocas (#129537)
* 86c98536380b [libc++] Fix deployment targets that were incorrectly bumped (#134278)
* dfd6f123362a [libc++] Guard additional headers with _LIBCPP_HAS_LOCALIZATION (#131921)
* dc9d4f9a7008 [lldb] Respect LaunchInfo::SetExecutable in ProcessLauncherPosixFork (#133093)
* 9c7d72869876 [LoongArch] Move fix-tle-le-sym-type test to test/MC. NFC (#133839)
* 0c30835a63db [X86][AVX10] Remove VAES and VPCLMULQDQ feature from AVX10.1 (#135489)
* 2e0966408283 [X86] Backport saturate-convert intrinsics renaming & YMM rounding intrinsics removal in AVX10.2
* 0dd4235473d4 [SCEV] Use ashr to adjust constant multipliers (#135534)
* a141e58685fd [llvm][CodeGen] avoid repeated interval calculation in window scheduler (#132352)
* d88cd35023b4 [llvm][CodeGen] Fix the empty interval issue in Window Scheduler (#129204)
* 73d1e8598eda [CodeGen] Avoid repeated hash lookups (NFC) (#130237)
* 7034995f1029 [clang] Handle Binary StingLiteral kind in one more place (#132201)
* 2e7710eaffdd [clang] Introduce "binary" StringLiteral for #embed data (#127629)
* e0db588f3db4 [IR] Fix assertion error in User new/delete edge case (#129914)
* d5bb7b866e59 Avoid a race condition in opt-viewer/optrecord (#131214)
* d15fef4209f1 [IndVarSimplify] Handle the case where both operands are the same when widening IV (#135207)
* 91647ae0dffe [X86][SSE] Don't emit SSE2 load instructions in SSE1-only mode (#134547)
* d05543ed0796 [clang-format] Keep the space between `not` and a unary operator (#135035)
* 81220e68a496 [fatlto] Add coroutine passes when using FatLTO with ThinLTO (#134434)
* edb54a7821fe Release/20.x: [clang-format] Set C11 instead of C17 for LK_C
* 4181e829d1db [LLDB][LoongArch] Fix build errors about NT_LOONGARCH_HW_{BREAK,WATCH} (#126020)
* 7436329bfee9 Revert "[clang] [ARM] Explicitly enable NEON for Windows/Darwin targets (#122095)"
* a0c8959cc880 [X86] When expanding LCMPXCHG16B_SAVE_RBX, substitute RBX in base (#134109)
* a8b5fe017a5e [libc++] Add missing release note for LLVM 20 about zip_view (#134144)
* 41aefdbebe64 cuda clang: Fix argument order for __reduce_max_sync (#132881)
* 19c2e1c12d47 [clang-tidy] Fix broken HeaderFilterRegex when read from config file (#133582)
* ac31db0463c0 [Sanitizers][Darwin][Test] XFAIL malloc_zone.cpp
* 53141e4e3c65 [clang] Do not infer lifetimebound for functions with void return type (#131997)
* cf7bb13f0c7f [TailDuplicator] Determine if computed gotos using `blockaddress` (#132536)
* 656289ffa0a6 Bump version to 20.1.3 (#134187)

(From OE-Core rev: 2199334354162a6304c4b0d4f35efb67e8e7d36b)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-05 18:02:48 +01:00
Khem Raj
5b7aaa505f clang: RPROVIDE spirv-llvm-translator and libclc
This paves the way to spin out these packages out of clang in future
specifically spirv-llvm-translator which is not yet part of llvm monorepo

(From OE-Core rev: fc58a1ee75737851d6e97be8a0b7ac739819efc8)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-05 18:02:48 +01:00
Khem Raj
79030cd4c4 clang: Merge llvm/clang family recipes from meta-clang
This can ensure that meta-clang does not carry them and can rely on core layer
while mesa can use them too.

Omit time stamps in openmp from generated files to improve
reproducibility

fix the issue that:
| file /usr/include/llvm/Config/llvm-config.h conflicts between attempted installs of lib32-llvm-dev-20.1.2-r0.core2_32 and llvm-dev-20.1.2-r0.core2_64

(From OE-Core rev: d77e398095228b34851762858a76640e3c2cb0ab)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-05-05 18:02:48 +01:00