Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dunfell-clang14: Update from clang 12 to clang 14 #853

Merged
merged 166 commits into from
Sep 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
166 commits
Select commit Hold shift + click to select a range
a13f0bc
ghostscript: Fix build when using libc++
kraj May 27, 2021
ff67324
mesa: Do not StackAlignmentOverride on llvm >= 13
kraj Jun 12, 2021
951917d
libunwind: Hide when llvm runtime is used
kraj May 29, 2021
1edfa9a
clang: Upgrade to trunk/13.0 future series
kraj May 15, 2021
0e90a71
openmp: Fix building amdgcn files
kraj May 15, 2021
834efb7
spirv-llvm-translator: Upgrade to 13.0.0/trunk
kraj May 15, 2021
d1a5742
libclc: Pass -cl-no-stdinc to compiler and assembler
kraj May 17, 2021
f375d0e
compiler-rt: Fix sanitizer build on musl/x86_64
kraj May 20, 2021
1be8c74
clang: Fix x86 tuple for include search paths
kraj May 20, 2021
3b40eed
compiler-rt-sanitizers: Link with static C++ runtime when available
kraj May 20, 2021
8d025d5
compiler-rt-sanitizers: Limit to buildable arch/libc combinations
kraj May 20, 2021
cc878f9
compiler-rt-sanitizers: Fix build on mips
kraj May 21, 2021
fafa9bd
lldb: Do not build for mips as well
kraj May 21, 2021
df23a4c
compiler-rt-sanitizers: Do not package orc support lib
kraj May 22, 2021
980c8ba
libcxx: Build libunwind shared lib when enabled
kraj May 23, 2021
e9d1bee
scan-build.bbclass: Fix typo
kraj May 24, 2021
3d0d917
clang: Default to compiler-rt/libcxx/libunwind when RUNTIME = "llvm"
kraj May 26, 2021
d9e5a59
compiler-rt: Use gcc runtime to bootstrap
kraj May 26, 2021
2ab4ebb
compiler-rt-sanitizers: Use packageconfig to use static libcxx
kraj May 26, 2021
64c0a42
libcxx: Build undwinder when RUNTIME = "llvm"
kraj May 26, 2021
9aa02d5
clang.bbclass: Adjust for clang default changes
kraj May 26, 2021
96b0d07
layer.conf: Prefer llvm libunwind when RUNTIME = "llvm"
kraj May 26, 2021
40063f5
nss: Pass options to select runtime for native parts
kraj May 27, 2021
15f11d7
compiler-rt-native: Fix build with clang
kraj May 27, 2021
b42bbe1
clang.bbclass: Limit using clang to target recipes only
kraj May 27, 2021
09e40c3
libc-bench: It works fine with new way of choosing llvm runtime
kraj May 27, 2021
fce9cfd
libunwind: Install headers and pkgconfig file
kraj May 29, 2021
2f3f9d9
libunwind: Implement unw_backtrace
kraj May 29, 2021
562e0a5
Package libunwind independently
kraj May 29, 2021
b40b542
compiler-rt-sanitizers: Fix hwsan builds with llvm libunwind
kraj May 29, 2021
d12ec84
bcc: Update to master tip
kraj May 20, 2021
42cb4b9
mongodb: Use llvm runtime when using clang
kraj Jun 1, 2021
34a2eb0
nonclangable: pass -rtlib only when using clang with gnu runtime here
kraj Jun 1, 2021
b48d95b
poke: Do not use -O2 with clang
kraj Jun 2, 2021
49a6e88
clang: Update to latest on master branch
kraj May 30, 2021
9b1d53b
clang: Do not force libgcc libunwind in rv32 and rv64
kraj Jun 10, 2021
7c5c4e7
nonclangable: Use libgcc for unwinder as well when using for builtins
kraj Jun 10, 2021
3b704fb
aufs-util,libhugetlbfs,libc-bench: Use libgcc unwinder on glibc/arm
kraj Jun 10, 2021
a8d8a82
Use libgcc instead of compiler-rt on klibc apps
kraj Jun 11, 2021
11a7ccd
clang: Upgrade to latest on main/13.0 branch
kraj Jun 10, 2021
d8c5c7f
clang: Update to latest master/13.0
kraj Jun 15, 2021
817ff1b
spirv-llvm-translator: Remove a trailing slash from SRC_URI
robertlinux May 18, 2021
bc52c18
clang: Update to latest on main/13.0 line
kraj Jun 21, 2021
e374e9c
spirv-llvm-translator: Update to latest trunk
kraj Jun 23, 2021
7810c53
openmp: Fix build on non-x86 targets
kraj Jun 23, 2021
3659602
libcxx: Fix native build
kraj Jun 24, 2021
ec709d6
clang: drop git suffix from version variables
sandy-lcq Jun 24, 2021
4214c32
clang: Update to latest on 13.0.0/trunk
kraj Jun 28, 2021
870ede1
gnutls: Disable integrated assembler on aarch64
kraj Jun 30, 2021
c7c3af0
clang: fix do_package error when multilib enabled
sandy-lcq Jul 2, 2021
7aeb9c5
clang: Depend on clang runtime when using RUNTIME = "llvm" for native…
kraj Jul 8, 2021
831f7fe
clang: Upgrade to latest on trunk/13.0
kraj Jul 8, 2021
85e367c
libclc: Drop using -cl-no-stdinc
kraj Jul 16, 2021
9f64c50
mesa: Use gcc on aarch64
kraj Jul 17, 2021
d19595e
libcxx: Explicitly set LLVM_DEFAULT_TARGET_TRIPLE
kraj Jul 18, 2021
a752911
clang: Switch to 13.x branch
kraj Jul 22, 2021
d8bc58d
compiler-rt,libcxx: Fix native builds when using RUNTIME=llvm
kraj Jul 27, 2021
327daef
Revert "mesa: Use gcc on aarch64"
kraj Jul 29, 2021
26126fb
lvm2,libdevmapper: Use gcc to compile
kraj Aug 1, 2021
d1bfdd6
clang: Update to latest 13.x branch
kraj Aug 1, 2021
48ef88a
meta-clang: Convert to new override syntax
shr-project Aug 2, 2021
58c3155
Manually finish conversion
shr-project Jul 30, 2021
b86c7cb
recipes: Fix remaining override conversion
kraj Aug 3, 2021
34bb7d2
clang.bbclass: Convert libc-klibc override to new syntax
kraj Aug 5, 2021
7707e3a
nonclangable.conf: Convert remaining overrides to new syntax
kraj Aug 5, 2021
d15030d
jack: Use gcc to build for 32bit arches
kraj Aug 5, 2021
a312165
libc-bench: Link with libgcc when using llvm runtime
kraj Aug 7, 2021
7857e6f
clang: Update to latest on 13.x release branch
kraj Aug 7, 2021
4d6dad2
clang/compiler-rt: Convert to new override syntax
kraj Aug 10, 2021
fa309b3
clang: Update to latest on 13.x
kraj Aug 16, 2021
ae452b9
mpich: Use gcc runtime with clang for x86/x86_64
kraj Aug 18, 2021
2d983df
clang: Update towards 13.x RC2
kraj Aug 26, 2021
c27b829
spirv-llvm-translator: switch to release llvm_release_130 branch
saininav Sep 2, 2021
01486fb
clang: Fix llvm-link and opt dependency build failure in libomp
kraj Aug 28, 2021
3413cb7
clang: Update to latest 13.x
kraj Sep 9, 2021
32fcd0a
spirv-llvm-translator: Define explicit SRCREV_FORMAT
kraj Sep 11, 2021
0df0e75
clang: Update to latest 13.x
zboszor Sep 14, 2021
a544127
spirv-llvm-translator: Use the latest commit for SPIRV-Headers
zboszor Sep 14, 2021
7388b98
spirv-llvm-translator: Use latest revisions
zboszor Sep 25, 2021
157bc38
clang: use global multilib variants
dankm Apr 21, 2021
dd6fe50
clang: Update to 13.0.0-rc4
kraj Sep 25, 2021
f679ca9
nativesdk-clang: Fix build when using RUNTIME = llvm
kraj Sep 28, 2021
4649986
clang_git: disable LLD usage
Oct 21, 2021
555535c
clang: Add patch to handle RISCV multilibs
kraj Oct 21, 2021
7f966d3
clang: Update to latest on 13.x release
kraj Nov 1, 2021
3a19923
clang: don't use lnr
rossburton Nov 10, 2021
7b6b1c9
castxml: add branch and switch to using https
anujm1 Nov 16, 2021
54e2c2a
spirv-llvm-translator: add explicit branch
anujm1 Nov 16, 2021
621966f
glibc-tests: Pin compiler to gcc
kraj Nov 18, 2021
e60970a
libcxx: Set CMAKE_BUILD_WITH_INSTALL_RPATH
kraj Nov 24, 2021
85c11d3
clang: Update to 13.0.1-rc1
kraj Dec 3, 2021
f127d79
Use GCC runtime on ppc32 and armv5
kraj Dec 5, 2021
deb6007
clang: for x86_64, correct GCC install search path for OpenEmbedded Host
sandy-lcq Dec 7, 2021
330e3b1
clang: Update to latest on 13.x
kraj Dec 14, 2021
c0a364e
clang: Set CLANG_DEFAULT_PIE_ON_LINUX to ON
kraj Dec 14, 2021
4f1171f
clang: Add packageconfig for lldb lua support
kraj Dec 15, 2021
f91a11a
DEPENDS on virtual/${TARGET_PREFIX}binutils
guillaume-pais-siemens Oct 5, 2021
1519dcd
clang: support android runtime
Aug 4, 2021
f00fa0c
clang: Create cross symlinks for more binutils
kraj Dec 15, 2021
cfc36aa
clang: Update to latest 13.x relase
kraj Dec 27, 2021
71c6b6c
clang-tools-extra: apply upstream patch
Jan 9, 2022
a4e8310
nativesdk-clang-glue: delete spdx tasks
andresbeltranmsft Jan 10, 2022
f291c4d
clang: Update to 13.0.1-rc3
kraj Jan 27, 2022
4c79b3f
spirv-llvm-translator: Upgrade to latest master to support clang14
kraj Feb 4, 2022
21b8094
clang: Remove unintended dependency on gcc-runtime
esben Jan 18, 2022
51e3445
Remove chromium-browser-layer workarounds
rakuco Jul 27, 2023
aeefa94
nss: Add upstream patches to fix the build with clang
rakuco Jul 27, 2023
97e720c
harfbuzz: Add upstream patch to fix the build with clang
rakuco Jul 27, 2023
9edce5f
clang: Upgrade to upcoming clang14 release branch
kraj Feb 4, 2022
a586b64
libcxx: Install unwind_itanium.h and unwind_arm_ehabi.h
kraj Feb 5, 2022
2a4f5d0
castxml: bump to 0.4.4
dankm Nov 9, 2021
2c9d56e
clang.bbclass: Fix typo about big.LITTLE tune options
yangpeng1995 Feb 19, 2022
06db107
clang: Provide cross names for common llvm binutils
kraj Feb 18, 2022
820baa4
clang: Update to latest 14.x
kraj Feb 21, 2022
ab54994
nonclangable.conf: Disable llvm-objcopy/llvm-strip on selected recipes
kraj Feb 19, 2022
d96ffaa
clang.bbclass: Use llvm provided binutils when using toolchain-clang
kraj Feb 18, 2022
509b3e2
clang: set POPULATESYSROOTDEPS so that strip is present
rossburton Feb 23, 2022
12380d7
clang: Use GNU objdump on mips
kraj Feb 22, 2022
f8dc120
clang: Update to latest 14.x
kraj Feb 23, 2022
d14cb19
clang: Update to 14.0.0-rc2+
kraj Mar 3, 2022
2f58c20
clang: Upgrade to latest on 14.x
kraj Mar 10, 2022
5aa29b4
lldb: Disable builds for ppc32
kraj Mar 10, 2022
412e76d
clang: Use -mno-altivec for ppc 7400
kraj Mar 12, 2022
71e0e85
clang: Update to 14.0.0 RC4
kraj Mar 12, 2022
47e4a4d
clang.bbclass: Remove commented code
kraj Mar 13, 2022
81835f6
musl: Use gcc for ppc32 arch
kraj Mar 13, 2022
7f1f497
clang: Avoid double libcxx in BASE_DEFAULT_DEPS
esben Mar 16, 2022
de32e58
llvm-project-source: Emit all default MULTILIB_GLOBAL_VARIANTS
kraj Mar 18, 2022
961ae2a
clang.bbclass: Be mindful of multilibs when adding tools dependencies
kraj Mar 18, 2022
cb2c2a1
libcxx: Drop duplicate setting of LLVM_LIBDIR_SUFFIX
kraj Mar 22, 2022
895cac3
clang: Add env override for libdir
kraj Mar 22, 2022
ea213cc
llvm-config: Set YOCTO_ALTERNATE_LIBDIR and YOCTO_ALTERNATE_EXE_PATH
kraj Mar 22, 2022
5eb88a8
clang.bbclass: Export YOCTO_ALTERNATE_LIBDIR and YOCTO_ALTERNATE_EXE_…
kraj Mar 22, 2022
e1a0567
clang: Add a patch to fix llvm-objdump
kraj Mar 25, 2022
4af4572
clang.bbclass: Do not export llvm-config variables
kraj Mar 28, 2022
b5742a4
nonclangable: Enable clang for several packages pinned to gcc-only
kraj Apr 3, 2022
e6c6292
python3: Use gcc for riscv/aarch64 and all musl
kraj Apr 4, 2022
73fc59e
clang: Upgrade to latest on 14.x release branch
kraj Apr 9, 2022
d93cac3
libclc: Export YOCTO_ALTERNATE_EXE_PATH and YOCTO_ALTERNATE_LIBDIR
kraj Apr 9, 2022
783aede
compiler-rt: Build builtins only for the default target
esben Apr 12, 2022
41f3139
musl: Build with clang on ppc64
kraj Apr 24, 2022
fe0f223
clang: Enable altivec again for ppc32
kraj Apr 24, 2022
f4af35f
clang.bbclass: Use BASELIB instead of base_libdir in YOCTO_ALTERNATE_…
kraj Apr 24, 2022
43b4997
compiler-rt: Fix nativesdk building
esben Apr 7, 2022
05209da
libcxx: Fix nativesdk building
esben Apr 7, 2022
8186e84
clang: Upgrade to 14.0.3
kraj Apr 29, 2022
a87f974
compiler-rt: Build clang_rt.profile library when possible
esben May 25, 2022
6c42fe6
compiler-rt: backport a patch fixing ARMv5 cross-compile
liuming50 Jun 22, 2022
db1b7ad
clang: Fix native and nativesdk builds for hf targets
esben Jun 29, 2022
eb525a3
spirv-llvm-translator: fix branch name
anujm1 Aug 11, 2022
ad5f48d
compiler-rt-sanitizer: fix nativesdk-compiler-rt-sanitizers build
Sep 8, 2022
8ff1ebc
compiler-rt-sanitizers: fix multiple installations for orc lib
Sep 20, 2022
022f0f9
clang: Add compiler-rt and libcxx to build time depends for target
kraj Jul 28, 2022
b567501
nonclangable.conf: Add new exceptions
Dec 8, 2022
21782e0
linux-yocto: Use binutils provided strip
kraj Dec 15, 2022
7cd11b4
Fix OpenMP builds with thin LTO enabled.
jaskij Dec 19, 2022
36179c9
llvm-project-source: fix create-spdx handling
Jan 16, 2023
c2e73cd
common-source: fix create-spdx handling
Jan 16, 2023
406f811
llvm-project-source: Ensure deploy_source_date_epoch sstate hash does…
kraj Jan 11, 2023
d9dafd1
clang: Move .so symlinks to -dev package fixes multilib build
kraj Feb 14, 2023
7846d31
Add missing scan-build runtime dependencies
mzink89 Apr 21, 2023
a224d23
llvm-config: add --libfiles option
saininav May 12, 2023
3ba0e57
clang.bbclass: create lld symbolic link in sysroot when ld-is-lld is set
liuming50 May 13, 2023
98a2a4b
sanitizer: Fix build with glibc 2.36
kraj Jul 29, 2022
248d639
clang: fix build with yocto uninative gcc 13
quaresmajose Jun 22, 2023
0dc3caf
libclc: Define llvm tools needed during build
kraj Mar 12, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/yoe.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
echo BB_NUMBER_THREADS = \"16\" >> conf/local.conf
echo PARALLEL_MAKE = \"-j 32\" >> conf/local.conf
echo CLANGSDK = \"1\" >> conf/local.conf
echo IMAGE_INSTALL_append = \" clang \" >> conf/local.conf
echo IMAGE_INSTALL:append = \" clang \" >> conf/local.conf
echo XZ_DEFAULTS = \"--threads=8\" >> conf/local.conf
echo SDKMACHINE = \"aarch64\" >> conf/local.conf
/bin/bash -c "sed -i -e 's/PACKAGE_FEED_URI.*$//' conf/site.conf"
Expand All @@ -67,7 +67,7 @@ jobs:
run: |
cd yoe
export DISPLAY=":0"
echo TESTIMAGE_AUTO_qemuall = \"1\" >> conf/local.conf
echo TESTIMAGE_AUTO:qemuall = \"1\" >> conf/local.conf
/bin/bash -c ". ./qemuarm64-envsetup.sh && bitbake yoe-sdk-image"
- name: Prepare results
run: |
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ in `local.conf`.
You can select libstdc++ per package too by writing bbappends for them containing

```shell
LIBCPLUSPLUS_toolchain-clang_pn-<recipe> = "-stdlibc=libc++"
LIBCPLUSPLUS:toolchain-clang:pn-<recipe> = "-stdlibc=libc++"
```
Defaults are chosen to be GNU for maximum compatibility with existing GNU systems. Its always
good to use single runtime on a system, mixing runtimes can cause complications during
Expand Down Expand Up @@ -119,15 +119,15 @@ Few components do not build with clang, if you have a component to add to that l
simply add it to `conf/nonclangable.inc` e.g.

```shell
TOOLCHAIN_pn-<recipe> = "gcc"
TOOLCHAIN:pn-<recipe> = "gcc"
```

and OE will start using gcc to cross compile that recipe.

if a component does not build with libc++, you can add it to `conf/nonclangable.inc` e.g.

```shell
CXX_remove_pn-<recipe>_toolchain-clang = " -stdlib=libc++ "
CXX:remove:pn-<recipe>:toolchain-clang = " -stdlib=libc++ "
```

# compiler-rt failing in do_configure with custom TARGET_VENDOR
Expand Down
174 changes: 107 additions & 67 deletions classes/clang.bbclass
Original file line number Diff line number Diff line change
@@ -1,115 +1,155 @@
# Add the necessary override
CCACHE_COMPILERCHECK_toolchain-clang ?= "%compiler% -v"
HOST_CC_ARCH_prepend_toolchain-clang = "-target ${HOST_SYS} "
CC_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
CXX_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
CPP_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} -E"
CCLD_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
RANLIB_toolchain-clang = "${HOST_PREFIX}llvm-ranlib"
AR_toolchain-clang = "${HOST_PREFIX}llvm-ar"
NM_toolchain-clang = "${HOST_PREFIX}llvm-nm"

LTO_toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}"
PACKAGE_DEBUG_SPLIT_STYLE_toolchain-clang = "debug-without-src"

COMPILER_RT ??= "${@bb.utils.contains("RUNTIME", "llvm", "-rtlib=compiler-rt ${UNWINDLIB}", "", d)}"
COMPILER_RT_powerpc = "-rtlib=libgcc ${UNWINDLIB}"
COMPILER_RT_armeb = "-rtlib=libgcc ${UNWINDLIB}"

UNWINDLIB ??= "${@bb.utils.contains("RUNTIME", "llvm", "--unwindlib=libgcc", "", d)}"
UNWINDLIB_riscv64 = "--unwindlib=libgcc"
UNWINDLIB_riscv32 = "--unwindlib=libgcc"
UNWINDLIB_powerpc = "--unwindlib=libgcc"
UNWINDLIB_armeb = "--unwindlib=libgcc"

LIBCPLUSPLUS ??= "${@bb.utils.contains("RUNTIME", "llvm", "-stdlib=libc++", "", d)}"

TARGET_CXXFLAGS_append_toolchain-clang = " ${LIBCPLUSPLUS}"
TUNE_CCARGS_append_toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}"

TUNE_CCARGS_remove_toolchain-clang = "-meb"
TUNE_CCARGS_remove_toolchain-clang = "-mel"
TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}"
CCACHE_COMPILERCHECK:toolchain-clang ?= "%compiler% -v"
HOST_CC_ARCH:prepend:toolchain-clang = "-target ${HOST_SYS} "
CC:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
CXX:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
CPP:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} -E"
CCLD:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
RANLIB:toolchain-clang = "${HOST_PREFIX}llvm-ranlib"
AR:toolchain-clang = "${HOST_PREFIX}llvm-ar"
NM:toolchain-clang = "${HOST_PREFIX}llvm-nm"
OBJDUMP:toolchain-clang = "${HOST_PREFIX}llvm-objdump"
OBJCOPY:toolchain-clang = "${HOST_PREFIX}llvm-objcopy"
STRIP:toolchain-clang = "${HOST_PREFIX}llvm-strip"
STRINGS:toolchain-clang = "${HOST_PREFIX}llvm-strings"
READELF:toolchain-clang = "${HOST_PREFIX}llvm-readelf"
# see https://github.com/llvm/llvm-project/issues/53996
OBJDUMP:mips:toolchain-clang = "${HOST_PREFIX}objdump"
OBJDUMP:mipsel:toolchain-clang = "${HOST_PREFIX}objdump"

LTO:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}"
PACKAGE_DEBUG_SPLIT_STYLE:toolchain-clang = "debug-without-src"

COMPILER_RT ??= ""
COMPILER_RT:class-native = "-rtlib=libgcc ${UNWINDLIB}"
COMPILER_RT:armeb = "-rtlib=libgcc ${UNWINDLIB}"
COMPILER_RT:libc-klibc = "-rtlib=libgcc ${UNWINDLIB}"

UNWINDLIB ??= ""
UNWINDLIB:class-native = "--unwindlib=libgcc"
UNWINDLIB:armeb = "--unwindlib=libgcc"
UNWINDLIB_libc-klibc = "--unwindlib=libgcc"

LIBCPLUSPLUS ??= ""
LIBCPLUSPLUS:armv5 = "-stdlib=libstdc++"

CXXFLAGS:append:toolchain-clang = " ${LIBCPLUSPLUS}"
LDFLAGS:append:toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}"

TUNE_CCARGS:remove:toolchain-clang = "-meb"
TUNE_CCARGS:remove:toolchain-clang = "-mel"
TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}"

# Clang does not yet support big.LITTLE performance tunes, so use the LITTLE for tunes
TUNE_CCARGS_remove_toolchain-clang = "-mtune=cortex-a57.cortex-a53 -mtune=cortex-a72.cortex-a53 -mtune=cortex-a15.cortex-a7 -mtune=cortex-a17.cortex-a7 -mtune=cortex-a72.cortex-a35 -mtune=cortex-a73.cortex-a53 -mtune=cortex-a75.cortex-a55 -mtune=cortex-a76.cortex-a55"
TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa53 cortexa57-cortexa53 cortexa73-cortexa53", " -mcpu=cortex-a53", "", d)}"
TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa15-cortexa7 cortexa17-cortexa7", " -mcpu=cortex-a7", "", d)}"
TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa35", " -mcpu=cortex-a35", "", d)}"
TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa75-cortex-a55 cortexa76-cortex-a55", " -mcpu=cortex-a55", "", d)}"
TUNE_CCARGS:remove:toolchain-clang = "-mtune=cortex-a57.cortex-a53 -mtune=cortex-a72.cortex-a53 -mtune=cortex-a15.cortex-a7 -mtune=cortex-a17.cortex-a7 -mtune=cortex-a72.cortex-a35 -mtune=cortex-a73.cortex-a53 -mtune=cortex-a75.cortex-a55 -mtune=cortex-a76.cortex-a55"
TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa53 cortexa57-cortexa53 cortexa73-cortexa53", " -mcpu=cortex-a53", "", d)}"
TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa15-cortexa7 cortexa17-cortexa7", " -mcpu=cortex-a7", "", d)}"
TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa35", " -mcpu=cortex-a35", "", d)}"
TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa75-cortexa55 cortexa76-cortexa55", " -mcpu=cortex-a55", "", d)}"

# Clang does not support octeontx2 processor
TUNE_CCARGS_remove_toolchain-clang = "-mcpu=octeontx2"
TUNE_CCARGS:remove:toolchain-clang = "-mcpu=octeontx2"

# LLD does not yet support relaxation for RISCV e.g. https://reviews.freebsd.org/D25210
TUNE_CCARGS_append_toolchain-clang_riscv32 = " -mno-relax"
TUNE_CCARGS_append_toolchain-clang_riscv64 = " -mno-relax"

TUNE_CCARGS_remove_toolchain-clang_powerpc = "-mhard-float"
TUNE_CCARGS_remove_toolchain-clang_powerpc = "-mno-spe"

TUNE_CCARGS_append_toolchain-clang = " -Qunused-arguments"
TUNE_CCARGS_append_toolchain-clang_libc-musl_powerpc64 = " -mlong-double-64"
TUNE_CCARGS_append_toolchain-clang_libc-musl_powerpc64le = " -mlong-double-64"
TUNE_CCARGS:append:toolchain-clang:riscv32 = " -mno-relax"
TUNE_CCARGS:append:toolchain-clang:riscv64 = " -mno-relax"

# Reconcile some ppc anamolies
TUNE_CCARGS:remove:toolchain-clang:powerpc = "-mhard-float -mno-spe"
TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc64 = " -mlong-double-64"
TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc64le = " -mlong-double-64"
TUNE_CCARGS:append:toolchain-clang:libc-musl:powerpc = " -mlong-double-64"
# usrmerge workaround
TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains("DISTRO_FEATURES", "usrmerge", " --dyld-prefix=/usr", "", d)}"
TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("DISTRO_FEATURES", "usrmerge", " --dyld-prefix=/usr", "", d)}"

TUNE_CCARGS:append:toolchain-clang = " -Qunused-arguments"

LDFLAGS_append_toolchain-clang_class-nativesdk_x86-64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-x86-64.so.2"
LDFLAGS_append_toolchain-clang_class-nativesdk_x86 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux.so.2"
LDFLAGS_append_toolchain-clang_class-nativesdk_aarch64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-aarch64.so.1"
LDFLAGS:append:toolchain-clang:class-nativesdk:x86-64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-x86-64.so.2"
LDFLAGS:append:toolchain-clang:class-nativesdk:x86 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux.so.2"
LDFLAGS:append:toolchain-clang:class-nativesdk:aarch64 = " -Wl,-dynamic-linker,${base_libdir}/ld-linux-aarch64.so.1"

LDFLAGS_toolchain-clang_class-nativesdk = "${BUILDSDK_LDFLAGS} \
LDFLAGS:toolchain-clang:class-nativesdk = "${BUILDSDK_LDFLAGS} \
-Wl,-rpath-link,${STAGING_LIBDIR}/.. \
-Wl,-rpath,${libdir}/.. "

# Enable lld globally"
LDFLAGS_append_toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=lld', '', d)}"
LDFLAGS:append:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=lld', '', d)}"

# choose between 'gcc' 'clang' an empty '' can be used as well
TOOLCHAIN ??= "gcc"
# choose between 'gnu' 'llvm'
RUNTIME ??= "gnu"
RUNTIME_toolchain-gcc = "gnu"
RUNTIME_armeb = "gnu"
#RUNTIME:toolchain-gcc = "gnu"
RUNTIME:armeb = "gnu"
RUNTIME:armv5 = "gnu"

TOOLCHAIN_class-native = "gcc"
TOOLCHAIN_class-nativesdk = "gcc"
TOOLCHAIN_class-cross-canadian = "gcc"
TOOLCHAIN_class-crosssdk = "gcc"
TOOLCHAIN_class-cross = "gcc"
TOOLCHAIN:class-native = "gcc"
TOOLCHAIN:class-nativesdk = "gcc"
TOOLCHAIN:class-cross-canadian = "gcc"
TOOLCHAIN:class-crosssdk = "gcc"
TOOLCHAIN:class-cross = "gcc"

OVERRIDES =. "${@['', 'toolchain-${TOOLCHAIN}:']['${TOOLCHAIN}' != '']}"
OVERRIDES =. "${@['', 'runtime-${RUNTIME}:']['${RUNTIME}' != '']}"
OVERRIDES[vardepsexclude] += "TOOLCHAIN RUNTIME"

#DEPENDS_append_toolchain-clang_class-target = " clang-cross-${TARGET_ARCH} "
#DEPENDS_remove_toolchain-clang_allarch = "clang-cross-${TARGET_ARCH}"

YOCTO_ALTERNATE_EXE_PATH:toolchain-clang:class-target = "${STAGING_BINDIR}/llvm-config"
YOCTO_ALTERNATE_LIBDIR:toolchain-clang:class-target = "/${BASELIB}"

#YOCTO_ALTERNATE_EXE_PATH:toolchain-clang:class-target[export] = "1"
#YOCTO_ALTERNATE_LIBDIR:toolchain-clang:class-target[export] = "1"

#DEPENDS:append:toolchain-clang:class-target = " clang-cross-${TARGET_ARCH} "
#DEPENDS:remove:toolchain-clang:allarch = "clang-cross-${TARGET_ARCH}"

def clang_base_deps(d):
if not d.getVar('INHIBIT_DEFAULT_DEPS', False):
if not oe.utils.inherits(d, 'allarch') :
ret = " clang-cross-${TARGET_ARCH} virtual/libc "
if (d.getVar('COMPILER_RT').find('-rtlib=compiler-rt') != -1):
ret = " ${MLPREFIX}clang-cross-${TARGET_ARCH} virtual/libc "
if (d.getVar('RUNTIME').find('android') != -1):
ret += " libcxx"
return ret
if (d.getVar('RUNTIME').find('llvm') != -1):
ret += " compiler-rt"
elif (d.getVar('COMPILER_RT').find('-rtlib=compiler-rt') != -1):
ret += " compiler-rt "
else:
ret += " libgcc "
if (d.getVar('COMPILER_RT').find('--unwindlib=libunwind') != -1):
if (d.getVar('RUNTIME').find('llvm') != -1):
ret += " libcxx"
elif (d.getVar('COMPILER_RT').find('--unwindlib=libunwind') != -1):
ret += " libcxx "
if (d.getVar('LIBCPLUSPLUS').find('-stdlib=libc++') != -1):
elif (d.getVar('LIBCPLUSPLUS').find('-stdlib=libc++') != -1):
ret += " libcxx "
else:
ret += " virtual/${TARGET_PREFIX}compilerlibs "
return ret
return ""

BASE_DEFAULT_DEPS_toolchain-clang_class-target = "${@clang_base_deps(d)}"
BASE_DEFAULT_DEPS:toolchain-clang:class-target = "${@clang_base_deps(d)}"
BASE_DEFAULT_DEPS:append:class-native:toolchain-clang:runtime-llvm = " libcxx-native compiler-rt-native"
BASE_DEFAULT_DEPS:append:class-nativesdk:toolchain-clang:runtime-llvm = " clang-native nativesdk-libcxx nativesdk-compiler-rt"

# do_populate_sysroot needs STRIP
POPULATESYSROOTDEPS:toolchain-clang:class-target = "${MLPREFIX}clang-cross-${TARGET_ARCH}:do_populate_sysroot"

cmake_do_generate_toolchain_file_append_toolchain-clang () {
cmake_do_generate_toolchain_file:append:toolchain-clang () {
cat >> ${WORKDIR}/toolchain.cmake <<EOF
set( CMAKE_CLANG_TIDY ${HOST_PREFIX}clang-tidy )
EOF
sed -i 's/ -mmusl / /g' ${WORKDIR}/toolchain.cmake
}

RECIPESYSROOTFUNCS = ""
RECIPESYSROOTFUNCS:toolchain-clang = "recipe_sysroot_check_ld_is_lld"

recipe_sysroot_check_ld_is_lld () {
if "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', 'true', 'false', d)}"; then
ln -srf ${RECIPE_SYSROOT_NATIVE}${bindir}/${TARGET_SYS}/${TARGET_PREFIX}ld.lld ${RECIPE_SYSROOT_NATIVE}${bindir}/${TARGET_SYS}/${TARGET_PREFIX}ld
fi
}
do_prepare_recipe_sysroot[postfuncs] += "${RECIPESYSROOTFUNCS}"
#
# dump recipes which still use gcc
#python __anonymous() {
Expand Down
16 changes: 8 additions & 8 deletions classes/scan-build.bbclass
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@
EXTRA_ANALYZER_OPTIONS += "-analyze-headers"
EXTRA_ANALYZER_OPTIONS += "--force-analyze-debug-code"
SCAN_BUILD ??= "1"
SCAN_BUILD_class-native = ""
SCAN_BUILD_class-nativesdk = ""
SCAN_BUILD_class-cross = ""
SCAN_BUILD_class-crosssdk = ""
SCAN_BUILD_class-cross-canadian = ""
SCAN_BUILD:class-native = ""
SCAN_BUILD:class-nativesdk = ""
SCAN_BUILD:class-cross = ""
SCAN_BUILD:class-crosssdk = ""
SCAN_BUILD:class-cross-canadian = ""

#CLANG_SCAN_SERVER_IP ??= "127.0.0.1"
CLANG_SCAN_SERVER_IP ??= "10.0.0.10"
CLANG_SCAN_PORT ??= "8181"
SCAN_RESULTS_DIR ?= "${TMPDIR}/static-scan/${PN}"

CCSCAN ?= "${HOST_PREFIX}${TOOLCHAIN}"
CXXSCAN_toolchain-clang ?= "${HOST_PREFIX}clang++"
CXXSCAN_toolchain-gcc ?= "${HOST_PREFIX}g++"
CXXSCAN:toolchain-clang ?= "${HOST_PREFIX}clang++"
CXXSCAN:toolchain-gcc ?= "${HOST_PREFIX}g++"

do_scanbuild() {
rm -rf ${SCAN_RESULTS_DIR}
Expand All @@ -26,7 +26,7 @@ do_scanbuild() {

do_scanview() {
bbplain "================================================================"
bbplain "Stating scan-view server at: http://${CLANG_SCAN_SERVER_IP}:${CLANG_SCAN_PORT}"
bbplain "Starting scan-view server at: http://${CLANG_SCAN_SERVER_IP}:${CLANG_SCAN_PORT}"
bbplain "Use Ctrl-C to exit"
bbplain "================================================================"
scan-view --host ${CLANG_SCAN_SERVER_IP} --port ${CLANG_SCAN_PORT} --allow-all-hosts ${SCAN_RESULTS_DIR}/*/
Expand Down
5 changes: 2 additions & 3 deletions conf/layer.conf
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ LAYERSERIES_COMPAT_clang-layer = "dunfell hardknott honister"
LAYERDEPENDS_clang-layer = "core"

BBFILES_DYNAMIC += " \
chromium-browser-layer:${LAYERDIR}/dynamic-layers/chromium-browser-layer/*/*.bb \
chromium-browser-layer:${LAYERDIR}/dynamic-layers/chromium-browser-layer/*/*.bbappend \
openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bb \
openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bbappend \
networking-layer:${LAYERDIR}/dynamic-layers/networking-layer/*/*/*.bb \
Expand All @@ -28,12 +26,13 @@ PREFERRED_PROVIDER_libgcc-initial = "libgcc-initial"
PREFERRED_PROVIDER_llvm = "clang"
PREFERRED_PROVIDER_llvm-native = "clang-native"
PREFERRED_PROVIDER_nativesdk-llvm = "nativesdk-clang"
PREFERRED_PROVIDER_libunwind = "${@bb.utils.contains_any("RUNTIME", "llvm android", "libcxx", "libunwind", d)}"
INHERIT += "clang"

# Do not include clang in SDK unless user wants to
CLANGSDK ??= "0"

LLVMVERSION = "12.0.0"
LLVMVERSION = "14.0.3"

require conf/nonclangable.conf
require conf/nonscanable.conf
Loading