xref: /OK3568_Linux_fs/yocto/meta-clang/recipes-devtools/clang/clang_git.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1# Copyright (C) 2014 Khem Raj <raj.khem@gmail.com>
2# Released under the MIT license (see COPYING.MIT for the terms)
3
4DESCRIPTION = "LLVM based C/C++ compiler"
5HOMEPAGE = "http://clang.llvm.org/"
6SECTION = "devel"
7
8require clang.inc
9require common-source.inc
10
11INHIBIT_DEFAULT_DEPS = "1"
12
13BUILD_CC:class-nativesdk = "clang"
14BUILD_CXX:class-nativesdk = "clang++"
15BUILD_AR:class-nativesdk = "llvm-ar"
16BUILD_RANLIB:class-nativesdk = "llvm-ranlib"
17BUILD_NM:class-nativesdk = "llvm-nm"
18LDFLAGS:remove:class-nativesdk = "-fuse-ld=lld"
19
20inherit cmake cmake-native pkgconfig python3native
21
22OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
23
24def get_clang_experimental_arch(bb, d, arch_var):
25    import re
26    a = d.getVar(arch_var, True)
27    return ""
28
29def get_clang_arch(bb, d, arch_var):
30    import re
31    a = d.getVar(arch_var, True)
32    if   re.match('(i.86|athlon|x86.64)$', a):         return 'X86'
33    elif re.match('arm$', a):                          return 'ARM'
34    elif re.match('armeb$', a):                        return 'ARM'
35    elif re.match('aarch64$', a):                      return 'AArch64'
36    elif re.match('aarch64_be$', a):                   return 'AArch64'
37    elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips'
38    elif re.match('riscv32$', a):                      return 'riscv32'
39    elif re.match('riscv64$', a):                      return 'riscv64'
40    elif re.match('p(pc|owerpc)(|64)', a):             return 'PowerPC'
41    else:
42        bb.note("'%s' is not a primary llvm architecture" % a)
43    return ""
44
45def get_clang_host_arch(bb, d):
46    return get_clang_arch(bb, d, 'HOST_ARCH')
47
48def get_clang_target_arch(bb, d):
49    return get_clang_arch(bb, d, 'TARGET_ARCH')
50
51def get_clang_experimental_target_arch(bb, d):
52    return get_clang_experimental_arch(bb, d, 'TARGET_ARCH')
53
54PACKAGECONFIG ??= "compiler-rt libcplusplus shared-libs lldb-wchar \
55                   ${@bb.utils.filter('DISTRO_FEATURES', 'thin-lto lto', d)} \
56                   ${@bb.utils.contains('RUNTIME', 'llvm', 'compiler-rt libcplusplus unwindlib libomp', '', d)} \
57                   rtti eh libedit terminfo \
58                   "
59PACKAGECONFIG:class-native = "rtti eh libedit shared-libs ${@bb.utils.contains('RUNTIME', 'llvm', 'compiler-rt libcplusplus unwindlib libomp', '', d)}"
60PACKAGECONFIG:class-nativesdk = "rtti eh libedit shared-libs ${@bb.utils.filter('DISTRO_FEATURES', 'thin-lto lto', d)} ${@bb.utils.contains('RUNTIME', 'llvm', 'compiler-rt libcplusplus unwindlib libomp', '', d)}"
61
62PACKAGECONFIG[compiler-rt] = "-DCLANG_DEFAULT_RTLIB=compiler-rt,,"
63PACKAGECONFIG[libcplusplus] = "-DCLANG_DEFAULT_CXX_STDLIB=libc++,,"
64PACKAGECONFIG[unwindlib] = "-DCLANG_DEFAULT_UNWINDLIB=libunwind,-DCLANG_DEFAULT_UNWINDLIB=libgcc,,"
65PACKAGECONFIG[libomp] = "-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp,,"
66PACKAGECONFIG[thin-lto] = "-DLLVM_ENABLE_LTO=Thin -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
67PACKAGECONFIG[lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
68PACKAGECONFIG[shared-libs] = "-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON,,,"
69PACKAGECONFIG[terminfo] = "-DLLVM_ENABLE_TERMINFO=ON -DCOMPILER_RT_TERMINFO_LIB=ON,-DLLVM_ENABLE_TERMINFO=OFF -DCOMPILER_RT_TERMINFO_LIB=OFF,ncurses,"
70PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm,"
71PACKAGECONFIG[lldb-wchar] = "-DLLDB_EDITLINE_USE_WCHAR=1,-DLLDB_EDITLINE_USE_WCHAR=0,"
72PACKAGECONFIG[lldb-lua] = "-DLLDB_ENABLE_LUA=ON,-DLLDB_ENABLE_LUA=OFF,lua"
73PACKAGECONFIG[bootstrap] = "-DCLANG_ENABLE_BOOTSTRAP=On -DCLANG_BOOTSTRAP_PASSTHROUGH='${PASSTHROUGH}' -DBOOTSTRAP_LLVM_ENABLE_LTO=Thin -DBOOTSTRAP_LLVM_ENABLE_LLD=ON,,,"
74PACKAGECONFIG[eh] = "-DLLVM_ENABLE_EH=ON,-DLLVM_ENABLE_EH=OFF,,"
75PACKAGECONFIG[rtti] = "-DLLVM_ENABLE_RTTI=ON,-DLLVM_ENABLE_RTTI=OFF,,"
76PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=OFF,,"
77PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON -DLLDB_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF -DLLDB_ENABLE_LIBEDIT=OFF,libedit libedit-native"
78
79OECMAKE_SOURCEPATH = "${S}/llvm"
80
81OECMAKE_TARGET_COMPILE = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2', 'all', d)}"
82OECMAKE_TARGET_INSTALL = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2-install', 'install', d)}"
83BINPATHPREFIX = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', '/tools/clang/stage2-bins/NATIVE', '', d)}"
84
85PASSTHROUGH = "\
86CLANG_DEFAULT_RTLIB;CLANG_DEFAULT_CXX_STDLIB;LLVM_BUILD_LLVM_DYLIB;LLVM_LINK_LLVM_DYLIB;\
87LLVM_ENABLE_ASSERTIONS;LLVM_ENABLE_EXPENSIVE_CHECKS;LLVM_ENABLE_PIC;\
88LLVM_BINDINGS_LIST;LLVM_ENABLE_FFI;FFI_INCLUDE_DIR;LLVM_OPTIMIZED_TABLEGEN;\
89LLVM_ENABLE_RTTI;LLVM_ENABLE_EH;LLVM_BUILD_EXTERNAL_COMPILER_RT;CMAKE_SYSTEM_NAME;\
90CMAKE_BUILD_TYPE;BUILD_SHARED_LIBS;LLVM_ENABLE_PROJECTS;LLVM_BINUTILS_INCDIR;\
91LLVM_TARGETS_TO_BUILD;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;PYTHON_EXECUTABLE;\
92PYTHON_LIBRARY;PYTHON_INCLUDE_DIR;LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN;LLDB_EDITLINE_USE_WCHAR;\
93LLVM_ENABLE_LIBEDIT;LLDB_ENABLE_LIBEDIT;LLDB_PYTHON_RELATIVE_PATH;LLDB_PYTHON_EXE_RELATIVE_PATH;\
94LLDB_PYTHON_EXT_SUFFIX;CMAKE_C_FLAGS_RELEASE;CMAKE_CXX_FLAGS_RELEASE;CMAKE_ASM_FLAGS_RELEASE;\
95CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;CLANG_DEFAULT_UNWINDLIB;\
96CLANG_DEFAULT_OPENMP_RUNTIME;\
97"
98#
99# Default to build all OE-Core supported target arches (user overridable).
100# Gennerally setting LLVM_TARGETS_TO_BUILD = "" in local.conf is ok in most simple situations
101# where only one target architecture is needed along with just one build arch (usually X86)
102#
103LLVM_TARGETS_TO_BUILD ?= "AMDGPU;AArch64;ARM;BPF;Mips;PowerPC;RISCV;X86"
104
105LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ?= ""
106LLVM_EXPERIMENTAL_TARGETS_TO_BUILD:append = ";${@get_clang_experimental_target_arch(bb, d)}"
107
108HF = ""
109HF:class-target = "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}"
110HF[vardepvalue] = "${HF}"
111
112LLVM_PROJECTS ?= "clang;clang-tools-extra;lld${LLDB}"
113LLDB ?= ";lldb"
114# LLDB support for RISCV/Mips32 does not work yet
115LLDB:riscv32 = ""
116LLDB:riscv64 = ""
117LLDB:mips = ""
118LLDB:mipsel = ""
119LLDB:powerpc = ""
120
121# linux hosts (.so) on Windows .pyd
122SOLIBSDEV:mingw32 = ".pyd"
123
124#CMAKE_VERBOSE = "VERBOSE=1"
125
126EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
127                  -DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \
128                  -DLLVM_ENABLE_PIC=ON \
129                  -DCLANG_DEFAULT_PIE_ON_LINUX=ON \
130                  -DLLVM_BINDINGS_LIST='' \
131                  -DLLVM_ENABLE_FFI=ON \
132                  -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \
133                  -DLLVM_OPTIMIZED_TABLEGEN=ON \
134                  -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \
135                  -DCMAKE_SYSTEM_NAME=Linux \
136                  -DCMAKE_BUILD_TYPE=Release \
137                  -DCMAKE_CXX_FLAGS_RELEASE='${CXXFLAGS} -DNDEBUG -g0' \
138                  -DCMAKE_C_FLAGS_RELEASE='${CFLAGS} -DNDEBUG -g0' \
139                  -DBUILD_SHARED_LIBS=OFF \
140                  -DLLVM_ENABLE_PROJECTS='${LLVM_PROJECTS}' \
141                  -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \
142                  -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
143                  -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \
144                  -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \
145"
146
147EXTRA_OECMAKE:append:class-native = "\
148                  -DPYTHON_EXECUTABLE='${PYTHON}' \
149"
150EXTRA_OECMAKE:append:class-nativesdk = "\
151                  -DCMAKE_CROSSCOMPILING:BOOL=ON \
152                  -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DLLDB_PYTHON_RELATIVE_PATH=${PYTHON_SITEPACKAGES_DIR} \
153                                                  -DLLDB_PYTHON_EXE_RELATIVE_PATH=${PYTHON} \
154                                                  -DLLDB_PYTHON_EXT_SUFFIX=${SOLIBSDEV} \
155                                                  -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \
156                  -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \
157                  -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \
158                  -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-nm \
159                  -DCMAKE_STRIP=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-strip \
160                  -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
161                  -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \
162                  -DLLDB_TABLEGEN=${STAGING_BINDIR_NATIVE}/lldb-tblgen \
163                  -DPYTHON_LIBRARY=${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so \
164                  -DLLDB_PYTHON_RELATIVE_PATH=${PYTHON_SITEPACKAGES_DIR} \
165                  -DLLDB_PYTHON_EXE_RELATIVE_PATH=${PYTHON} \
166                  -DLLDB_PYTHON_EXT_SUFFIX=${SOLIBSDEV} \
167                  -DPYTHON_INCLUDE_DIR=${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI} \
168                  -DPYTHON_EXECUTABLE='${PYTHON}' \
169"
170EXTRA_OECMAKE:append:class-target = "\
171                  -DCMAKE_CROSSCOMPILING:BOOL=ON \
172                  -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DLLDB_PYTHON_RELATIVE_PATH=${PYTHON_SITEPACKAGES_DIR} \
173                                                  -DLLDB_PYTHON_EXT_SUFFIX=${SOLIBSDEV} \
174                                                  -DLLDB_PYTHON_EXE_RELATIVE_PATH=${PYTHON}' \
175                  -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
176                  -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \
177                  -DLLDB_TABLEGEN=${STAGING_BINDIR_NATIVE}/lldb-tblgen \
178                  -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \
179                  -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \
180                  -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-nm \
181                  -DCMAKE_STRIP=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-strip \
182                  -DLLVM_TARGET_ARCH=${@get_clang_target_arch(bb, d)} \
183                  -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_SYS}${HF} \
184                  -DLLVM_HOST_TRIPLE=${TARGET_SYS}${HF} \
185                  -DLLDB_PYTHON_RELATIVE_PATH=${PYTHON_SITEPACKAGES_DIR} \
186                  -DLLDB_PYTHON_EXE_RELATIVE_PATH=${PYTHON} \
187                  -DLLDB_PYTHON_EXT_SUFFIX=${SOLIBSDEV} \
188                  -DPYTHON_LIBRARY=${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so \
189                  -DPYTHON_INCLUDE_DIR=${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI} \
190                  -DLLVM_LIBDIR_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
191                  -DPYTHON_EXECUTABLE='${PYTHON}' \
192"
193
194DEPENDS = "binutils zlib libffi libxml2 libxml2-native ninja-native swig-native"
195DEPENDS:append:class-nativesdk = " clang-crosssdk-${SDK_ARCH} virtual/${TARGET_PREFIX}binutils-crosssdk nativesdk-python3"
196DEPENDS:append:class-target = " clang-cross-${TARGET_ARCH} python3 compiler-rt libcxx"
197
198RRECOMMENDS:${PN} = "binutils"
199RRECOMMENDS:${PN}:append:class-target = " libcxx-dev"
200
201do_install:append() {
202    rm -rf ${D}${libdir}/python*/site-packages/six.py
203}
204
205do_install:append:class-target () {
206    # Allow bin path to change based on YOCTO_ALTERNATE_EXE_PATH
207    sed -i 's;${_IMPORT_PREFIX}/bin;${_IMPORT_PREFIX_BIN};g' ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake
208
209    # Insert function to populate Import Variables
210    sed -i "4i\
211if(DEFINED ENV{YOCTO_ALTERNATE_EXE_PATH})\n\
212  execute_process(COMMAND \"llvm-config\" \"--bindir\" OUTPUT_VARIABLE _IMPORT_PREFIX_BIN OUTPUT_STRIP_TRAILING_WHITESPACE)\n\
213else()\n\
214  set(_IMPORT_PREFIX_BIN \"\${_IMPORT_PREFIX}/bin\")\n\
215endif()\n" ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake
216
217    if [ -n "${LLVM_LIBDIR_SUFFIX}" ]; then
218        mkdir -p ${D}${nonarch_libdir}
219        mv ${D}${libdir}/clang ${D}${nonarch_libdir}/clang
220        ln -rs ${D}${nonarch_libdir}/clang ${D}${libdir}/clang
221        rmdir --ignore-fail-on-non-empty ${D}${libdir}
222    fi
223    for t in clang clang++ llvm-nm llvm-ar llvm-as llvm-ranlib llvm-strip llvm-objcopy llvm-objdump llvm-readelf \
224        llvm-addr2line llvm-dwp llvm-size llvm-strings llvm-cov; do
225        ln -sf $t ${D}${bindir}/${TARGET_PREFIX}$t
226    done
227}
228
229do_install:append:class-native () {
230    install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen
231    install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen
232    for f in `find ${D}${bindir} -executable -type f -not -type l`; do
233        test -n "`file -b $f|grep -i ELF`" && ${STRIP} $f
234        echo "stripped $f"
235    done
236    ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV}
237    ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV}
238    ln -sf llvm-config ${D}${bindir}/llvm-config${PV}
239}
240
241do_install:append:class-nativesdk () {
242    install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen
243    install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen
244    for f in `find ${D}${bindir} -executable -type f -not -type l`; do
245        test -n "`file -b $f|grep -i ELF`" && ${STRIP} $f
246    done
247    ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV}
248    ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV}
249    ln -sf llvm-config ${D}${bindir}/llvm-config${PV}
250    rm -rf ${D}${datadir}/llvm/cmake
251    rm -rf ${D}${datadir}/llvm
252}
253
254PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python libclang lldb lldb-server liblldb"
255
256PROVIDES += "llvm llvm${PV}"
257PROVIDES:append:class-native = " llvm-native"
258
259BBCLASSEXTEND = "native nativesdk"
260
261RDEPENDS:lldb += "${PN}-lldb-python"
262
263FILES:${PN}-lldb-python = "${libdir}/python*/site-packages/lldb/*"
264
265FILES:${PN} += "\
266  ${libdir}/BugpointPasses.so \
267  ${libdir}/LLVMHello.so \
268  ${libdir}/LLVMgold.so \
269  ${libdir}/*Plugin.so \
270  ${libdir}/${BPN} \
271  ${nonarch_libdir}/${BPN}/*/include/ \
272  ${datadir}/scan-* \
273  ${nonarch_libdir}/libscanbuild \
274  ${datadir}/opt-viewer/ \
275"
276
277FILES:lldb = "\
278  ${bindir}/lldb \
279"
280
281FILES:lldb-server = "\
282  ${bindir}/lldb-server \
283"
284
285FILES:liblldb = "\
286  ${libdir}/liblldbIntelFeatures.so* \
287  ${libdir}/liblldb.so* \
288"
289
290FILES:${PN}-libllvm =+ "\
291  ${libdir}/libLLVM-${MAJOR_VER}.${MINOR_VER}.so \
292  ${libdir}/libLLVM-${MAJOR_VER}.so \
293  ${libdir}/libLLVM-${MAJOR_VER}git.so \
294  ${libdir}/libLLVM-${MAJOR_VER}.${MINOR_VER}git.so \
295"
296
297FILES:libclang = "\
298  ${libdir}/libclang.so.${MAJOR_VER} \
299"
300
301FILES:${PN}-dev += "\
302  ${datadir}/llvm/cmake \
303  ${libdir}/cmake \
304  ${nonarch_libdir}/libear \
305  ${nonarch_libdir}/${BPN}/*.la \
306"
307
308FILES:${PN}-staticdev += "${nonarch_libdir}/${BPN}/*.a"
309
310FILES:${PN}-staticdev:remove = "${libdir}/${BPN}/*.a"
311FILES:${PN}-dev:remove = "${libdir}/${BPN}/*.la"
312FILES:${PN}:remove = "${libdir}/${BPN}/*"
313
314
315INSANE_SKIP:${PN} += "already-stripped"
316#INSANE_SKIP:${PN}-dev += "dev-elf"
317INSANE_SKIP:${PN}-lldb-python += "dev-so dev-deps"
318INSANE_SKIP:liblldb = "dev-so"
319
320#Avoid SSTATE_SCAN_COMMAND running sed over llvm-config.
321SSTATE_SCAN_FILES:remove = "*-config"
322
323TOOLCHAIN = "clang"
324TOOLCHAIN:class-native = "gcc"
325TOOLCHAIN:class-nativesdk = "clang"
326COMPILER_RT:class-nativesdk:toolchain-clang:runtime-llvm = "-rtlib=libgcc --unwindlib=libgcc"
327LIBCPLUSPLUS:class-nativesdk:toolchain-clang:runtime-llvm = "-stdlib=libstdc++"
328
329SYSROOT_DIRS:append:class-target = " ${nonarch_libdir}"
330
331SYSROOT_PREPROCESS_FUNCS:append:class-target = " clang_sysroot_preprocess"
332
333clang_sysroot_preprocess() {
334	install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
335	install -m 0755 ${S}/../llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
336	ln -sf llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV}
337	# LLDTargets.cmake references the lld executable(!) that some modules/plugins link to
338	install -d ${SYSROOT_DESTDIR}${bindir}
339	install -m 755 ${D}${bindir}/lld ${SYSROOT_DESTDIR}${bindir}/
340}
341