summaryrefslogtreecommitdiffstats
path: root/recipes-devtools
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2019-07-30 22:57:19 -0700
committerKhem Raj <raj.khem@gmail.com>2019-08-12 22:00:22 -0700
commita932d6024a3500dd518176a8bb98fbb8ec9695c7 (patch)
tree9a6dcd2135d1b3d54579fbb998bf560842a3a00b /recipes-devtools
parent610a8e1a2ce02b77f905bac261e80b023450b573 (diff)
downloadmeta-clang-a932d6024a3500dd518176a8bb98fbb8ec9695c7.tar.gz
clang: Build lldb as part of clang unified package
This helps in building lldb which now needs build tree of llvm/clang to build itself (lldb-tblgen needs the build tree) Promote RISCV to first class citizen Package additional files and depend on libedit for lldb put python lldb files into own package Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'recipes-devtools')
-rw-r--r--recipes-devtools/clang/clang_git.bb30
-rw-r--r--recipes-devtools/clang/lldb_git.bb58
2 files changed, 15 insertions, 73 deletions
diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb
index 75b56ce..4f4af8f 100644
--- a/recipes-devtools/clang/clang_git.bb
+++ b/recipes-devtools/clang/clang_git.bb
@@ -24,7 +24,6 @@ OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
24def get_clang_experimental_arch(bb, d, arch_var): 24def get_clang_experimental_arch(bb, d, arch_var):
25 import re 25 import re
26 a = d.getVar(arch_var, True) 26 a = d.getVar(arch_var, True)
27 if re.match('riscv(32|64)$', a): return 'RISCV'
28 return "" 27 return ""
29 28
30def get_clang_arch(bb, d, arch_var): 29def get_clang_arch(bb, d, arch_var):
@@ -36,6 +35,7 @@ def get_clang_arch(bb, d, arch_var):
36 elif re.match('aarch64$', a): return 'AArch64' 35 elif re.match('aarch64$', a): return 'AArch64'
37 elif re.match('aarch64_be$', a): return 'AArch64' 36 elif re.match('aarch64_be$', a): return 'AArch64'
38 elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips' 37 elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips'
38 elif re.match('riscv(32|64)(eb|)$', a): return 'RISCV'
39 elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC' 39 elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC'
40 else: 40 else:
41 bb.note("'%s' is not a primary llvm architecture" % a) 41 bb.note("'%s' is not a primary llvm architecture" % a)
@@ -61,18 +61,16 @@ PACKAGECONFIG[full-lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGI
61PACKAGECONFIG[shared-libs] = "-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON,,," 61PACKAGECONFIG[shared-libs] = "-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON,,,"
62PACKAGECONFIG[terminfo] = "-DLLVM_ENABLE_TERMINFO=ON,-DLLVM_ENABLE_TERMINFO=OFF,ncurses," 62PACKAGECONFIG[terminfo] = "-DLLVM_ENABLE_TERMINFO=ON,-DLLVM_ENABLE_TERMINFO=OFF,ncurses,"
63PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm," 63PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm,"
64PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,libedit,"
65
66# 64#
67# Default to build all OE-Core supported target arches (user overridable). 65# Default to build all OE-Core supported target arches (user overridable).
68# 66#
69LLVM_TARGETS_TO_BUILD ?= "AArch64;ARM;BPF;Mips;PowerPC;X86" 67LLVM_TARGETS_TO_BUILD ?= "AArch64;ARM;BPF;Mips;PowerPC;RISCV;X86"
70LLVM_TARGETS_TO_BUILD_append = ";${@get_clang_host_arch(bb, d)};${@get_clang_target_arch(bb, d)}" 68LLVM_TARGETS_TO_BUILD_append = ";${@get_clang_host_arch(bb, d)};${@get_clang_target_arch(bb, d)}"
71 69
72LLVM_TARGETS_TO_BUILD_TARGET ?= "" 70LLVM_TARGETS_TO_BUILD_TARGET ?= ""
73LLVM_TARGETS_TO_BUILD_TARGET_append ?= "${@get_clang_target_arch(bb, d)}" 71LLVM_TARGETS_TO_BUILD_TARGET_append ?= "${@get_clang_target_arch(bb, d)}"
74 72
75LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ?= "RISCV" 73LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ?= ""
76LLVM_EXPERIMENTAL_TARGETS_TO_BUILD_append = ";${@get_clang_experimental_target_arch(bb, d)}" 74LLVM_EXPERIMENTAL_TARGETS_TO_BUILD_append = ";${@get_clang_experimental_target_arch(bb, d)}"
77 75
78HF = "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}" 76HF = "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}"
@@ -91,7 +89,7 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
91 -DCMAKE_SYSTEM_NAME=Linux \ 89 -DCMAKE_SYSTEM_NAME=Linux \
92 -DCMAKE_BUILD_TYPE=Release \ 90 -DCMAKE_BUILD_TYPE=Release \
93 -DBUILD_SHARED_LIBS=OFF \ 91 -DBUILD_SHARED_LIBS=OFF \
94 -DLLVM_ENABLE_PROJECTS='clang;lld' \ 92 -DLLVM_ENABLE_PROJECTS='clang;lld;lldb' \
95 -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \ 93 -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \
96 -G Ninja ${S}/llvm \ 94 -G Ninja ${S}/llvm \
97 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ 95 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
@@ -115,11 +113,13 @@ EXTRA_OECMAKE_append_class-nativesdk = "\
115 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \ 113 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \
116 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ 114 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
117 -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \ 115 -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \
116 -DLLDB_TABLEGEN=${STAGING_BINDIR_NATIVE}/lldb-tblgen \
118" 117"
119EXTRA_OECMAKE_append_class-target = "\ 118EXTRA_OECMAKE_append_class-target = "\
120 -DCMAKE_CROSSCOMPILING:BOOL=ON \ 119 -DCMAKE_CROSSCOMPILING:BOOL=ON \
121 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ 120 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
122 -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \ 121 -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \
122 -DLLDB_TABLEGEN=${STAGING_BINDIR_NATIVE}/lldb-tblgen \
123 -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD_TARGET}' \ 123 -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD_TARGET}' \
124 -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \ 124 -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \
125 -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \ 125 -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \
@@ -127,13 +127,8 @@ EXTRA_OECMAKE_append_class-target = "\
127 -DLLVM_TARGET_ARCH=${@get_clang_target_arch(bb, d)} \ 127 -DLLVM_TARGET_ARCH=${@get_clang_target_arch(bb, d)} \
128 -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_SYS}${HF} \ 128 -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_SYS}${HF} \
129" 129"
130EXTRA_OECMAKE_append_class-target_riscv64 = "\ 130
131 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \ 131DEPENDS = "binutils zlib libffi libxml2 libedit ninja-native swig-native"
132"
133EXTRA_OECMAKE_append_class-target_riscv32 = "\
134 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \
135"
136DEPENDS = "binutils zlib libffi libxml2 ninja-native"
137DEPENDS_append_class-nativesdk = " clang-crosssdk-${SDK_ARCH} virtual/${TARGET_PREFIX}binutils-crosssdk" 132DEPENDS_append_class-nativesdk = " clang-crosssdk-${SDK_ARCH} virtual/${TARGET_PREFIX}binutils-crosssdk"
138DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH}" 133DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH}"
139 134
@@ -165,6 +160,7 @@ do_install() {
165 160
166do_install_append_class-native () { 161do_install_append_class-native () {
167 install -Dm 0755 ${B}/bin/clang-tblgen ${D}${bindir}/clang-tblgen 162 install -Dm 0755 ${B}/bin/clang-tblgen ${D}${bindir}/clang-tblgen
163 install -Dm 0755 ${B}/tools/clang/stage2-bins/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen
168 for f in `find ${D}${bindir} -executable -type f -not -type l`; do 164 for f in `find ${D}${bindir} -executable -type f -not -type l`; do
169 test -n "`file $f|grep -i ELF`" && ${STRIP} $f 165 test -n "`file $f|grep -i ELF`" && ${STRIP} $f
170 echo "stripped $f" 166 echo "stripped $f"
@@ -173,6 +169,7 @@ do_install_append_class-native () {
173 169
174do_install_append_class-nativesdk () { 170do_install_append_class-nativesdk () {
175 install -Dm 0755 ${B}/bin/clang-tblgen ${D}${bindir}/clang-tblgen 171 install -Dm 0755 ${B}/bin/clang-tblgen ${D}${bindir}/clang-tblgen
172 install -Dm 0755 ${B}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen
176 for f in `find ${D}${bindir} -executable -type f -not -type l`; do 173 for f in `find ${D}${bindir} -executable -type f -not -type l`; do
177 test -n "`file $f|grep -i ELF`" && ${STRIP} $f 174 test -n "`file $f|grep -i ELF`" && ${STRIP} $f
178 done 175 done
@@ -182,15 +179,17 @@ do_install_append_class-nativesdk () {
182 179
183PACKAGE_DEBUG_SPLIT_STYLE_class-nativesdk = "debug-without-src" 180PACKAGE_DEBUG_SPLIT_STYLE_class-nativesdk = "debug-without-src"
184 181
185PACKAGES =+ "${PN}-libllvm libclang" 182PACKAGES =+ "${PN}-libllvm libclang python-lldb"
186 183
187BBCLASSEXTEND = "native nativesdk" 184BBCLASSEXTEND = "native nativesdk"
188 185
186FILES_python-lldb = "${libdir}/python3*/site-packages/lldb/*"
187
189FILES_${PN} += "\ 188FILES_${PN} += "\
190 ${libdir}/BugpointPasses.so \ 189 ${libdir}/BugpointPasses.so \
191 ${libdir}/LLVMHello.so \ 190 ${libdir}/LLVMHello.so \
192 ${libdir}/TestPlugin.so \
193 ${libdir}/LLVMgold.so \ 191 ${libdir}/LLVMgold.so \
192 ${libdir}/*Plugin.so \
194 ${datadir}/scan-* \ 193 ${datadir}/scan-* \
195 ${datadir}/opt-viewer/ \ 194 ${datadir}/opt-viewer/ \
196" 195"
@@ -212,6 +211,7 @@ FILES_${PN}-dev += "\
212 211
213INSANE_SKIP_${PN} += "already-stripped" 212INSANE_SKIP_${PN} += "already-stripped"
214INSANE_SKIP_${PN}-dev += "dev-elf" 213INSANE_SKIP_${PN}-dev += "dev-elf"
214INSANE_SKIP_python-lldb += "dev-so dev-deps"
215 215
216#Avoid SSTATE_SCAN_COMMAND running sed over llvm-config. 216#Avoid SSTATE_SCAN_COMMAND running sed over llvm-config.
217SSTATE_SCAN_FILES_remove = "*-config" 217SSTATE_SCAN_FILES_remove = "*-config"
diff --git a/recipes-devtools/clang/lldb_git.bb b/recipes-devtools/clang/lldb_git.bb
deleted file mode 100644
index 933aa44..0000000
--- a/recipes-devtools/clang/lldb_git.bb
+++ /dev/null
@@ -1,58 +0,0 @@
1# Copyright (C) 2017 Kai Ruhnau <kai.ruhnau@target-sg.com>
2# Released under the MIT license (see COPYING.MIT for the terms)
3
4DESCRIPTION = "Next generation, high-performance debugger"
5HOMEPAGE = "http://lldb.llvm.org/"
6SECTION = "devel"
7
8DEPENDS += "clang-native zlib libxml2 ninja-native"
9
10require clang.inc
11require common-source.inc
12
13inherit cmake pkgconfig
14
15LIC_FILES_CHKSUM = "file://llvm/LICENSE.TXT;md5=${LLVMMD5SUM}; \
16 file://clang/LICENSE.TXT;md5=${CLANGMD5SUM}; \
17 file://lldb/LICENSE.TXT;md5=${LLDBMD5SUM}; \
18"
19
20OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
21
22EXTRA_OECMAKE="\
23 -DCMAKE_CROSSCOMPILING=1 \
24 -DLLVM_ENABLE_CXX11=ON \
25 -DLLVM_BUILD_LLVM_DYLIB=ON \
26 -DBUILD_SHARED_LIBS=OFF \
27 -DLLVM_BUILD_LLVM_DYLIB=ON \
28 -DLLVM_ENABLE_PIC=ON \
29 -DLLDB_DISABLE_LIBEDIT=1 \
30 -DLLDB_DISABLE_CURSES=1 \
31 -DLLDB_DISABLE_PYTHON=1 \
32 -DLLVM_ENABLE_TERMINFO=0 \
33 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
34 -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \
35 -DLLVM_HOST_TRIPLE=${TARGET_SYS} \
36 -DLLDB_TEST_USE_CUSTOM_C_COMPILER=ON \
37 -DLLDB_TEST_USE_CUSTOM_CXX_COMPILER=ON \
38 -DLLDB_TEST_C_COMPILER='${CC}' \
39 -DLLDB_TEST_CXX_COMPILER='${CXX}' \
40 -DCMAKE_BUILD_TYPE=Release \
41 -DLLVM_ENABLE_PROJECTS='clang;lldb' \
42 -G Ninja ${S}/llvm \
43"
44
45EXTRA_OEMAKE = "VERBOSE=1"
46
47CXXFLAGS_append_toolchain-gcc = " -Wno-error=format-security"
48
49do_compile() {
50 ninja ${PARALLEL_MAKE} lldb
51}
52
53do_install() {
54 DESTDIR=${D} ninja ${PARALLEL_MAKE} tools/lldb/install
55}
56
57INSANE_SKIP_${PN}-dbg = "libdir"
58INSANE_SKIP_${PN} = "libdir"