summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorSquallATF <squallatf@gmail.com>2022-05-26 20:33:16 +0800
committerKhem Raj <raj.khem@gmail.com>2022-07-05 09:26:54 -0400
commit2404761083de5644dccd064dc4d08b0a331a185f (patch)
treee0b3626fd085170e1defd824d5f3ebc90f2bbb88 /README.md
parent8995a0d05fc6ac0afba71d484f0efb71639d9843 (diff)
downloadmeta-clang-2404761083de5644dccd064dc4d08b0a331a185f.tar.gz
Add instructions for kernel build with clang
Diffstat (limited to 'README.md')
-rw-r--r--README.md40
1 files changed, 40 insertions, 0 deletions
diff --git a/README.md b/README.md
index c85b992..619b2f3 100644
--- a/README.md
+++ b/README.md
@@ -100,6 +100,46 @@ in `local.conf`
100CLANGSDK = "1" 100CLANGSDK = "1"
101``` 101```
102 102
103# Kernel build with clang
104Newer kernels and Android kernels support clang compilation, and even support LTO, The following takes [rockchip](https://github.com/JeffyCN/meta-rockchip)'s kernel as an example to configure clang compilation. x86, arm and arm64 kernel supported full LLVM toolchain, other arch only support clang. more info https://docs.kernel.org/kbuild/llvm.html
105
106- linux-rockchip_%bbappend
107```shell
108TOOLCHAIN:forcevariable = "clang"
109
110DEPENDS:append:toolchain-clang = " clang-cross-${TARGET_ARCH}"
111KERNEL_CC:toolchain-clang = "${CCACHE}clang ${HOST_CC_KERNEL_ARCH} -fuse-ld=lld ${DEBUG_PREFIX_MAP} -fdebug-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH}"
112KERNEL_LD:toolchain-clang = "${CCACHE}ld.lld"
113KERNEL_AR:toolchain-clang = "${CCACHE}llvm-ar"
114```
115if you want use LLVM integrated assembler for some older kernel, newer vesion is enabled default.
116```shell
117do_compile:prepend:toolchain-clang() {
118 export LLVM_IAS=1
119}
120
121do_compile_kernelmodules:prepend:toolchain-clang() {
122 export LLVM_IAS=1
123}
124```
125if you want enable LTO, append follow content.
126```
127FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
128SRC_URI:append:toolchain-clang = "\
129 file://lto.cfg \
130"
131```
132
133`CONFIG_LTO_CLANG`is need for some android based kernel, mainline kernel will do auto detect.
134
135- lto.cfg
136```
137CONFIG_LTO_CLANG=y
138CONFIG_LTO=y
139CONFIG_LTO_CLANG_THIN=y
140```
141
142
103# Building 143# Building
104 144
105Below we build for qemuarm machine as an example 145Below we build for qemuarm machine as an example