llvm: Add recipe for 5.0
v3 cover llvm: Add recipe for 5.0
Create a recipe just for building llvm, which is needed by many other packages e.g. mesa can use it for llvmpipe
Fix mesa to work with llvm 5.0.0
Add supporting recipes needed to build llvm
The following changes since commit 28fc6ba761ed4a47efa7c43e7f7dff5e2fe72b5e:
core-image-minimal-initramfs: use initramfs-framework by default (2017-07-27 22:20:16 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib kraj/llvm
http://cgit.openembedded.org/openembedded-core-contrib/log/?h=kraj/llvm
Khem Raj (4):
ninja: Add recipe
re2c: Transfer recipe from meta-oe and upgrade to 0.16
llvm: Add recipe for 5.0
mesa: Fix build when building with llvmpipe
...LibraryInfo-Undefine-libc-functions-if-th.patch | 93 ++++++++++++ .../0002-llvm-allow-env-override-of-exe-path.patch | 39 +++++ meta/recipes-devtools/llvm/llvm_git.bb | 166 +++++++++++++++++++++ meta/recipes-devtools/ninja/ninja_1.7.2.bb | 29 ++++ ...1-ac-fix-build-after-LLVM-5.0-SVN-r300718.patch | 40 +++++ ...allivm-Fix-build-against-LLVM-SVN-r302589.patch | 49 ++++++ .../mesa/files/llvm-config-version.patch | 23 +++ meta/recipes-graphics/mesa/mesa.inc | 7 +- meta/recipes-graphics/mesa/mesa_17.1.5.bb | 3 + meta/recipes-support/re2c/re2c_0.16.bb | 15 ++ 10 files changed, 462 insertions(+), 2 deletions(-) create mode 100644 meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch create mode 100644 meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch create mode 100644 meta/recipes-devtools/llvm/llvm_git.bb create mode 100644 meta/recipes-devtools/ninja/ninja_1.7.2.bb create mode 100644 meta/recipes-graphics/mesa/files/0001-ac-fix-build-after-LLVM-5.0-SVN-r300718.patch create mode 100644 meta/recipes-graphics/mesa/files/0002-gallivm-Fix-build-against-LLVM-SVN-r302589.patch create mode 100644 meta/recipes-graphics/mesa/files/llvm-config-version.patch create mode 100644 meta/recipes-support/re2c/re2c_0.16.bb
Signature · 1 line
2.13.3
PATCH v3 1/4 ninja: Add recipe
llvm is using it, therefore move it from meta-oe
--- meta/recipes-devtools/ninja/ninja_1.7.2.bb | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 meta/recipes-devtools/ninja/ninja_1.7.2.bb
meta/recipes-devtools/ninja/ninja_1.7.2.bb new file +29 -0
@@ -0,0 +1,29 @@ +SUMMARY = "Ninja is a small build system with a focus on speed." +HOMEPAGE = "http://martine.github.com/ninja/" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=a81586a64ad4e476c791cda7e2f2c52e" + +DEPENDS = "re2c-native ninja-native" + +SRCREV = "717b7b4a31db6027207588c0fb89c3ead384747b" + +SRC_URI = "git://github.com/martine/ninja.git;branch=release" + +S = "${WORKDIR}/git" + +do_configure[noexec] = "1" + +do_compile_class-native() { + ./configure.py --bootstrap +} + +do_compile() { + ./configure.py + ninja +} + +do_install() { + install -D -m 0755 ${S}/ninja ${D}${bindir}/ninja +} + +BBCLASSEXTEND = "native nativesdk"
Signature · 1 line
2.13.3
PATCH v3 2/4 re2c: Transfer recipe from meta-oe and upgrade to 0.16
In reply to Khem Rajninja needs it.
--- meta/recipes-support/re2c/re2c_0.16.bb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 meta/recipes-support/re2c/re2c_0.16.bb
meta/recipes-support/re2c/re2c_0.16.bb new file +15 -0
@@ -0,0 +1,15 @@ +SUMMARY = "Tool for writing very fast and very flexible scanners" +HOMEPAGE = "http://re2c.sourceforge.net/" +AUTHOR = "Marcus Börger <[email protected]>" +SECTION = "devel" +LICENSE = "PD" +LIC_FILES_CHKSUM = "file://README;beginline=146;md5=881056c9add17f8019ccd8c382ba963a" + +SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \ +" +SRC_URI[md5sum] = "3bf508fabd52ed7334647d0ccb956e8d" +SRC_URI[sha256sum] = "48c12564297641cceb5ff05aead57f28118db6277f31e2262437feba89069e84" + +BBCLASSEXTEND = "native" + +inherit autotools
Signature · 1 line
2.13.3
PATCH v3 3/4 llvm: Add recipe for 5.0
In reply to Khem RajBased on recipe from meta-oe and clang recipe from meta-clang Needed by mesa
Fixes
[YOCTO #11529]
--- ...LibraryInfo-Undefine-libc-functions-if-th.patch | 93 ++++++++++++ .../0002-llvm-allow-env-override-of-exe-path.patch | 39 +++++ meta/recipes-devtools/llvm/llvm_git.bb | 166 +++++++++++++++++++++ 3 files changed, 298 insertions(+) create mode 100644 meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch create mode 100644 meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch create mode 100644 meta/recipes-devtools/llvm/llvm_git.bb
meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch new file +93 -0
@@ -0,0 +1,93 @@ +From 28293e48cf1a52004c6a78de448718441f9e05f9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <[email protected]> +Date: Sat, 21 May 2016 00:33:20 +0000 +Subject: [PATCH 1/2] llvm: TargetLibraryInfo: Undefine libc functions if they + are macros + +musl defines some functions as macros and not inline functions +if this is the case then make sure to undefine them + +Signed-off-by: Khem Raj <[email protected]> +--- +Upstream-Status: Pending + + include/llvm/Analysis/TargetLibraryInfo.def | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.def b/include/llvm/Analysis/TargetLibraryInfo.def +index 9cbe917c146..aff8419cf54 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.def ++++ b/include/llvm/Analysis/TargetLibraryInfo.def +@@ -656,6 +656,9 @@ TLI_DEFINE_STRING_INTERNAL("fmodl") + TLI_DEFINE_ENUM_INTERNAL(fopen) + TLI_DEFINE_STRING_INTERNAL("fopen") + /// FILE *fopen64(const char *filename, const char *opentype) ++#ifdef fopen64 ++#undef fopen64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fopen64) + TLI_DEFINE_STRING_INTERNAL("fopen64") + /// int fprintf(FILE *stream, const char *format, ...); +@@ -691,6 +694,9 @@ TLI_DEFINE_STRING_INTERNAL("fseek") + /// int fseeko(FILE *stream, off_t offset, int whence); + TLI_DEFINE_ENUM_INTERNAL(fseeko) + TLI_DEFINE_STRING_INTERNAL("fseeko") ++#ifdef fseeko64 ++#undef fseeko64 ++#endif + /// int fseeko64(FILE *stream, off64_t offset, int whence) + TLI_DEFINE_ENUM_INTERNAL(fseeko64) + TLI_DEFINE_STRING_INTERNAL("fseeko64") +@@ -701,6 +707,9 @@ TLI_DEFINE_STRING_INTERNAL("fsetpos") + TLI_DEFINE_ENUM_INTERNAL(fstat) + TLI_DEFINE_STRING_INTERNAL("fstat") + /// int fstat64(int filedes, struct stat64 *buf) ++#ifdef fstat64 ++#undef fstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fstat64) + TLI_DEFINE_STRING_INTERNAL("fstat64") + /// int fstatvfs(int fildes, struct statvfs *buf); +@@ -716,6 +725,9 @@ TLI_DEFINE_STRING_INTERNAL("ftell") + TLI_DEFINE_ENUM_INTERNAL(ftello) + TLI_DEFINE_STRING_INTERNAL("ftello") + /// off64_t ftello64(FILE *stream) ++#ifdef ftello64 ++#undef ftello64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(ftello64) + TLI_DEFINE_STRING_INTERNAL("ftello64") + /// int ftrylockfile(FILE *file); +@@ -836,6 +848,9 @@ TLI_DEFINE_STRING_INTERNAL("logl") + TLI_DEFINE_ENUM_INTERNAL(lstat) + TLI_DEFINE_STRING_INTERNAL("lstat") + /// int lstat64(const char *path, struct stat64 *buf); ++#ifdef lstat64 ++#undef lstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(lstat64) + TLI_DEFINE_STRING_INTERNAL("lstat64") + /// void *malloc(size_t size); +@@ -1055,6 +1070,9 @@ TLI_DEFINE_STRING_INTERNAL("sscanf") + TLI_DEFINE_ENUM_INTERNAL(stat) + TLI_DEFINE_STRING_INTERNAL("stat") + /// int stat64(const char *path, struct stat64 *buf); ++#ifdef stat64 ++#undef stat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(stat64) + TLI_DEFINE_STRING_INTERNAL("stat64") + /// int statvfs(const char *path, struct statvfs *buf); +@@ -1184,6 +1202,9 @@ TLI_DEFINE_STRING_INTERNAL("times") + TLI_DEFINE_ENUM_INTERNAL(tmpfile) + TLI_DEFINE_STRING_INTERNAL("tmpfile") + /// FILE *tmpfile64(void) ++#ifdef tmpfile64 ++#undef tmpfile64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(tmpfile64) + TLI_DEFINE_STRING_INTERNAL("tmpfile64") + /// int toascii(int c); +-- +2.13.1 +
meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch new file +39 -0
@@ -0,0 +1,39 @@ +From d776487bac17650704614248d19d1e6b35775001 Mon Sep 17 00:00:00 2001 +From: Martin Kelly <[email protected]> +Date: Fri, 19 May 2017 00:22:57 -0700 +Subject: [PATCH 2/2] llvm: allow env override of exe path + +When using a native llvm-config from inside a sysroot, we need llvm-config to +return the libraries, include directories, etc. from inside the sysroot rather +than from the native sysroot. Thus provide an env override for calling +llvm-config from a target sysroot. + +Signed-off-by: Martin Kelly <[email protected]> +Signed-off-by: Khem Raj <[email protected]> +--- +Upstream-Status: Pending + + tools/llvm-config/llvm-config.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp +index 08b096afb05..d8d7742744e 100644 +--- a/tools/llvm-config/llvm-config.cpp ++++ b/tools/llvm-config/llvm-config.cpp +@@ -225,6 +225,13 @@ Typical components:\n\ + + /// \brief Compute the path to the main executable. + std::string GetExecutablePath(const char *Argv0) { ++ // Hack for Yocto: we need to override the root path when we are using ++ // llvm-config from within a target sysroot. ++ const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH"); ++ if (Sysroot != nullptr) { ++ return Sysroot; ++ } ++ + // This just needs to be some symbol in the binary; C++ doesn't + // allow taking the address of ::main however. + void *P = (void *)(intptr_t)GetExecutablePath; +-- +2.13.1 +
meta/recipes-devtools/llvm/llvm_git.bb new file +166 -0
166 lines not on this page · raw message
Signature · 1 line
2.13.3
Fails like this for me:
| FAILED: tools/llvm-cvtres/Opts.inc.tmp
| cd
/data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build && /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -gen-opt-parser-defs -I /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/tools/llvm-cvtres -I
/data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/include /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/tools/llvm-cvtres/Opts.td -o tools/llvm-cvtres/Opts.inc.tmp -d tools/llvm-cvtres/Opts.inc.d
| /bin/sh: 1:
/data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen:
not found
It is there though:
$ ls -l /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -rwxr-xr-x 1 ross ross 49807224 Jul 29 12:25 /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen
$ /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -bash:
/data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen:
No such file or directory
Might be related to having uninative enabled?
Ross
Quoted 382 lines · Khem Raj
Based on recipe from meta-oe and clang recipe from meta-clang Needed by mesa
Fixes
[YOCTO #11529]Signed-off-by Khem Raj <[email protected]>--- ...LibraryInfo-Undefine-libc-functions-if-th.patch | 93 ++++++++++++ .../0002-llvm-allow-env-override-of-exe-path.patch | 39 +++++ meta/recipes-devtools/llvm/llvm_git.bb | 166 +++++++++++++++++++++ 3 files changed, 298 insertions(+) create mode 100644 meta/recipes-devtools/llvm/llvm/0001-llvm- TargetLibraryInfo-Undefine-libc-functions-if-th.patch create mode 100644 meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env- override-of-exe-path.patch create mode 100644 meta/recipes-devtools/llvm/llvm_git.bb(quoted diff) +0
-0TargetLibraryInfo-Undefine-libc-functions-if-th.patch b/meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine- libc-functions-if-th.patch
new file mode 100644
index 0000000000..e251799259meta/recipes-devtools/llvm/llvm/0001-llvm- new file +0
-0TargetLibraryInfo-Undefine-libc-functions-if-th.patch
meta/recipes-devtools/llvm/llvm/0001-llvm- new file +4
-0@@ -0,0 +1,93 @@ +From 28293e48cf1a52004c6a78de448718441f9e05f9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <[email protected]> +Date: Sat, 21 May 2016 00:33:20 +0000 +Subject: [PATCH 1/2] llvm: TargetLibraryInfo: Undefine libc functions ifthey
+ are macrosmeta/recipes-devtools/llvm/llvm/0001-llvm- new file +12
-0+ +musl defines some functions as macros and not inline functions +if this is the case then make sure to undefine them + +Signed-off-by: Khem Raj <[email protected]> +--- +Upstream-Status: Pending + + include/llvm/Analysis/TargetLibraryInfo.def | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.defb/include/llvm/Analysis/TargetLibraryInfo.def
meta/recipes-devtools/llvm/llvm/0001-llvm- new file +76
-0+index 9cbe917c146..aff8419cf54 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.def ++++ b/include/llvm/Analysis/TargetLibraryInfo.def +@@ -656,6 +656,9 @@ TLI_DEFINE_STRING_INTERNAL("fmodl") + TLI_DEFINE_ENUM_INTERNAL(fopen) + TLI_DEFINE_STRING_INTERNAL("fopen") + /// FILE *fopen64(const char *filename, const char *opentype) ++#ifdef fopen64 ++#undef fopen64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fopen64) + TLI_DEFINE_STRING_INTERNAL("fopen64") + /// int fprintf(FILE *stream, const char *format, ...); +@@ -691,6 +694,9 @@ TLI_DEFINE_STRING_INTERNAL("fseek") + /// int fseeko(FILE *stream, off_t offset, int whence); + TLI_DEFINE_ENUM_INTERNAL(fseeko) + TLI_DEFINE_STRING_INTERNAL("fseeko") ++#ifdef fseeko64 ++#undef fseeko64 ++#endif + /// int fseeko64(FILE *stream, off64_t offset, int whence) + TLI_DEFINE_ENUM_INTERNAL(fseeko64) + TLI_DEFINE_STRING_INTERNAL("fseeko64") +@@ -701,6 +707,9 @@ TLI_DEFINE_STRING_INTERNAL("fsetpos") + TLI_DEFINE_ENUM_INTERNAL(fstat) + TLI_DEFINE_STRING_INTERNAL("fstat") + /// int fstat64(int filedes, struct stat64 *buf) ++#ifdef fstat64 ++#undef fstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fstat64) + TLI_DEFINE_STRING_INTERNAL("fstat64") + /// int fstatvfs(int fildes, struct statvfs *buf); +@@ -716,6 +725,9 @@ TLI_DEFINE_STRING_INTERNAL("ftell") + TLI_DEFINE_ENUM_INTERNAL(ftello) + TLI_DEFINE_STRING_INTERNAL("ftello") + /// off64_t ftello64(FILE *stream) ++#ifdef ftello64 ++#undef ftello64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(ftello64) + TLI_DEFINE_STRING_INTERNAL("ftello64") + /// int ftrylockfile(FILE *file); +@@ -836,6 +848,9 @@ TLI_DEFINE_STRING_INTERNAL("logl") + TLI_DEFINE_ENUM_INTERNAL(lstat) + TLI_DEFINE_STRING_INTERNAL("lstat") + /// int lstat64(const char *path, struct stat64 *buf); ++#ifdef lstat64 ++#undef lstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(lstat64) + TLI_DEFINE_STRING_INTERNAL("lstat64") + /// void *malloc(size_t size); +@@ -1055,6 +1070,9 @@ TLI_DEFINE_STRING_INTERNAL("sscanf") + TLI_DEFINE_ENUM_INTERNAL(stat) + TLI_DEFINE_STRING_INTERNAL("stat") + /// int stat64(const char *path, struct stat64 *buf); ++#ifdef stat64 ++#undef stat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(stat64) + TLI_DEFINE_STRING_INTERNAL("stat64") + /// int statvfs(const char *path, struct statvfs *buf); +@@ -1184,6 +1202,9 @@ TLI_DEFINE_STRING_INTERNAL("times") + TLI_DEFINE_ENUM_INTERNAL(tmpfile) + TLI_DEFINE_STRING_INTERNAL("tmpfile") + /// FILE *tmpfile64(void) ++#ifdef tmpfile64 ++#undef tmpfile64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(tmpfile64) + TLI_DEFINE_STRING_INTERNAL("tmpfile64") + /// int toascii(int c); +-- +2.13.1 +meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env- renamed from meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch +0
-0override-of-exe-path.patch
new file mode 100644
index 0000000000..832bd729efmeta/recipes-devtools/llvm/llvm/0002-llvm-allow-env- new file +0
-0override-of-exe-path.patch
meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env- new file +6
-0@@ -0,0 +1,39 @@ +From d776487bac17650704614248d19d1e6b35775001 Mon Sep 17 00:00:00 2001 +From: Martin Kelly <[email protected]> +Date: Fri, 19 May 2017 00:22:57 -0700 +Subject: [PATCH 2/2] llvm: allow env override of exe path + +When using a native llvm-config from inside a sysroot, we needllvm-config to
+return the libraries, include directories, etc. from inside the sysroot rathermeta/recipes-devtools/llvm/llvm/0002-llvm-allow-env- new file +12
-0+than from the native sysroot. Thus provide an env override for calling +llvm-config from a target sysroot. + +Signed-off-by: Martin Kelly <[email protected]> +Signed-off-by: Khem Raj <[email protected]> +--- +Upstream-Status: Pending + + tools/llvm-config/llvm-config.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env- new file +20
-0+index 08b096afb05..d8d7742744e 100644 +--- a/tools/llvm-config/llvm-config.cpp ++++ b/tools/llvm-config/llvm-config.cpp +@@ -225,6 +225,13 @@ Typical components:\n\ + + /// \brief Compute the path to the main executable. + std::string GetExecutablePath(const char *Argv0) { ++ // Hack for Yocto: we need to override the root path when we are using ++ // llvm-config from within a target sysroot. ++ const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH"); ++ if (Sysroot != nullptr) { ++ return Sysroot; ++ } ++ + // This just needs to be some symbol in the binary; C++ doesn't + // allow taking the address of ::main however. + void *P = (void *)(intptr_t)GetExecutablePath; +-- +2.13.1 +meta/recipes-devtools/llvm/llvm_git.bb new file +9
-0@@ -0,0 +1,166 @@ +# Copyright (C) 2017 Khem Raj <[email protected]> +# Released under the MIT license (see COPYING.MIT for the terms) + +DESCRIPTION = "The LLVM Compiler Infrastructure" +HOMEPAGE = "http://llvm.org" +LICENSE = "NCSA" +SECTION = "devel" + +LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=e825e017edc35cfd58e26116e5251771"
meta/recipes-devtools/llvm/llvm_git.bb new file +16
-0+ +DEPENDS = "libffi libxml2-native zlib ninja-native" + +RDEPENDS_${PN}_append_class-target = " ncurses-terminfo" + +inherit perlnative pythonnative cmake pkgconfig + +PROVIDES += "llvm${PV}" + +LLVM_RELEASE = "${PV}" +LLVM_DIR = "llvm${LLVM_RELEASE}" + +SRCREV = "9a5c333388cbb54a0ce3a67c4f539f5e590a089b" +PV = "5.0" +PATCH_VERSION = "0" +SRC_URI = "git://github.com/llvm-mirror/llvm.git;branch=release_50;protocol=http \
+ file://0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch
\meta/recipes-devtools/llvm/llvm_git.bb new file +35
-0+ file://0002-llvm-allow-env-override-of-exe-path.patch \ + " +S = "${WORKDIR}/git" + +LLVM_INSTALL_DIR = "${WORKDIR}/llvm-install" +def get_llvm_arch(bb, d, arch_var): + import re + a = d.getVar(arch_var, True) + if re.match('(i.86|athlon|x86.64)$', a): return 'X86' + elif re.match('arm$', a): return 'ARM' + elif re.match('armeb$', a): return 'ARM' + elif re.match('aarch64$', a): return 'AArch64' + elif re.match('aarch64_be$', a): return 'AArch64' + elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips' + elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC' + else: + bb.error("cannot map '%s' to a supported llvm architecture" % a) + return "" + +def get_llvm_target_arch(bb, d): + return get_llvm_arch(bb, d, 'TARGET_ARCH') +# +# Default to build all OE-Core supported target arches (user overridable). +# +LLVM_TARGETS ?= "${@get_llvm_target_arch(bb, d)}" +LLVM_TARGETS_prepend_x86 = "AMDGPU;" +LLVM_TARGETS_prepend_x86-64 = "AMDGPU;" + +EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ + -DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \ + -DLLVM_ENABLE_PIC=ON \ + -DLLVM_BINDINGS_LIST='' \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_ENABLE_FFI=ON \ + -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedirlibffi) \
meta/recipes-devtools/llvm/llvm_git.bb new file +10
-0+ -DLLVM_OPTIMIZED_TABLEGEN=ON \ + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS}" \ + -DCMAKE_CROSSCOMPILING:BOOL=ON \ + -G Ninja \ + " +EXTRA_OECMAKE_remove_class-native = "-DCMAKE_CROSSCOMPILING:BOOL=ON" + +do_configure_prepend() { +# Fix paths in llvm-config + sed -i "s|sys::path::parent_path(CurrentPath))\.str()|sys::path::parent_path(sys::path::parent_path(CurrentPath))).str()|g" ${S}/tools/llvm-config/llvm-config.cpp
+ sed -ri "s#/(bin|include|lib)(/?\")#/\1/${LLVM_DIR}\2#g"
${S}/tools/llvm-config/llvm-config.cpp
+ sed -ri "s#lib/${LLVM_DIR}#${baselib}/${LLVM_DIR}#g"
${S}/tools/llvm-config/llvm-config.cppmeta/recipes-devtools/llvm/llvm_git.bb new file +9
-0+} + +do_compile() { + NINJA_STATUS="[%p] " ninja -v ${PARALLEL_MAKE} +} + +do_install() { + NINJA_STATUS="[%p] " DESTDIR=${LLVM_INSTALL_DIR} ninja -v install + install -D -m 0755 ${B}/NATIVE/bin/llvm-config${D}${libdir}/${LLVM_DIR}/llvm-config-host
meta/recipes-devtools/llvm/llvm_git.bb new file +6
-0+ + install -d ${D}${bindir}/${LLVM_DIR} + cp -r ${LLVM_INSTALL_DIR}${bindir}/* ${D}${bindir}/${LLVM_DIR}/ + + install -d ${D}${includedir}/${LLVM_DIR} + cp -r ${LLVM_INSTALL_DIR}${includedir}/*${D}${includedir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +4
-0+ + install -d ${D}${libdir}/${LLVM_DIR} + + # The LLVM sources have "/lib" embedded and so we cannotcompletely rely on the ${libdir} variable
meta/recipes-devtools/llvm/llvm_git.bb new file +2
-0+ if [ -d ${LLVM_INSTALL_DIR}${libdir}/ ]; then + cp -r ${LLVM_INSTALL_DIR}${libdir}/*${D}${libdir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +2
-0+ elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib ]; then + cp -r ${LLVM_INSTALL_DIR}${prefix}/lib/*${D}${libdir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +2
-0+ elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib64 ]; then + cp -r ${LLVM_INSTALL_DIR}${prefix}/lib64/*${D}${libdir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +6
-0+ fi + + # Remove unnecessary cmake files + rm -rf ${D}${libdir}/${LLVM_DIR}/cmake + + ln -s ${LLVM_DIR}/libLLVM-${PV}${SOLIBSDEV}${D}${libdir}/libLLVM-${PV}${SOLIBSDEV}
meta/recipes-devtools/llvm/llvm_git.bb new file +45
-0+ + # We'll have to delete the libLLVM.so due to multiple reasons... + rm -rf ${D}${libdir}/${LLVM_DIR}/libLLVM.so + rm -rf ${D}${libdir}/${LLVM_DIR}/libLTO.so +} + +PACKAGES += "${PN}-bugpointpasses ${PN}-llvmhello" +ALLOW_EMPTY_${PN} = "1" +ALLOW_EMPTY_${PN}-staticdev = "1" +FILES_${PN} = "" +FILES_${PN}-staticdev = "" +FILES_${PN}-dbg = " \ + ${bindir}/${LLVM_DIR}/.debug \ + ${libdir}/${LLVM_DIR}/.debug/BugpointPasses.so \ + ${libdir}/${LLVM_DIR}/.debug/LLVMHello.so \ + ${libdir}/${LLVM_DIR}/.debug/libLTO.so* \ + ${libdir}/${LLVM_DIR}/.debug/llvm-config-host \ + /usr/src/debug \ +" + +FILES_${PN}-dev = " \ + ${bindir}/${LLVM_DIR} \ + ${includedir}/${LLVM_DIR} \ + ${libdir}/${LLVM_DIR}/llvm-config-host \ +" + +RRECOMMENDS_${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello" + +FILES_${PN}-bugpointpasses = "\ + ${libdir}/${LLVM_DIR}/BugpointPasses.so \ +" +FILES_${PN} += "\ + ${libdir}/${LLVM_DIR}/libLTO.so.* \ +" + +FILES_${PN}-llvmhello = "\ + ${libdir}/${LLVM_DIR}/LLVMHello.so \ +" + +PACKAGES_DYNAMIC = "^libllvm${LLVM_RELEASE}-.*$" +NOAUTOPACKAGEDEBUG = "1" + +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE}.${PATCH_VERSION} += "dev-so" +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE} +="dev-so"
meta/recipes-devtools/llvm/llvm_git.bb new file +6
-0+INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm += "dev-so" + +python llvm_populate_packages() { + libdir = bb.data.expand('${libdir}', d) + libllvm_libdir = bb.data.expand('${libdir}/${LLVM_DIR}', d) + split_dbg_packages = do_split_packages(d, libllvm_libdir+'/.debug','^lib(.*)\.so$', 'libllvm${LLVM_RELEASE}-%s-dbg', 'Split debug package for %s', allow_dirs=True)
+split_packages= do_split_packages(d, libdir, '^lib(.*)\.so$',
'libllvm${LLVM_RELEASE}-%s', 'Split package for %s', allow_dirs=True, allow_links=True, recursive=True)
+split_staticdev_packages= do_split_packages(d,libllvm_libdir,
'^lib(.*)\.a$', 'libllvm${LLVM_RELEASE}-%s-staticdev', 'Split staticdev package for %s', allow_dirs=True)meta/recipes-devtools/llvm/llvm_git.bb new file +4
-0+ if split_packages: + pn = d.getVar('PN', True) + d.appendVar('RDEPENDS_' + pn, ' '+' '.join(split_packages)) + d.appendVar('RDEPENDS_' + pn + '-dbg', ' '+''.join(split_dbg_packages))
+ d.appendVar('RDEPENDS_' + pn + '-staticdev', ' '+'
'.join(split_staticdev_packages))meta/recipes-devtools/llvm/llvm_git.bb new file +5
-1+} + +PACKAGESPLITFUNCS_prepend = "llvm_populate_packages " + +BBCLASSEXTEND = "native nativesdk" --2.13.3
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Replicated without uninative, so it's not that.
Ross
Quoted 418 lines · Ross
Fails like this for me:
| FAILED:
tools/llvm-cvtres/Opts.inc.tmp
| cd /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build && /data/poky-tmp/master/build/work/corei7-64-poky-linux/ llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -gen-opt-parser-defs -I /data/poky-tmp/master/build/work/corei7-64-poky-linux/ llvm/5.0-r0/git/tools/llvm-cvtres -I /data/poky-tmp/master/build/ work/corei7-64-poky-linux/llvm/5.0-r0/git/include /data/poky-tmp/master/build/work/corei7-64-poky-linux/ llvm/5.0-r0/git/tools/llvm-cvtres/Opts.td -otools/llvm-cvtres/Opts.inc.tmp-dtools/llvm-cvtres/Opts.inc.d
|/bin/sh: 1: /data/poky-tmp/master/build/work/corei7-64-poky-linux/ llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen: not foundIt is there though:
$ ls -l /data/poky-tmp/master/build/work/corei7-64-poky-linux/ llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -rwxr-xr-x 1 ross ross 49807224 Jul 29 12:25 /data/poky-tmp/master/build/ work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen$ /data/poky-tmp/master/build/work/corei7-64-poky-linux/ llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -bash: /data/poky-tmp/master/build/work/corei7-64-poky-linux/ llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen: No such file or directoryMight be related to having uninative enabled?
Ross
Quoted 382 lines · Khem Raj
Based on recipe from meta-oe and clang recipe from meta-clang Needed by mesa
Fixes
[YOCTO #11529]Signed-off-by Khem Raj <[email protected]>--- ...LibraryInfo-Undefine-libc-functions-if-th.patch | 93 ++++++++++++ .../0002-llvm-allow-env-override-of-exe-path.patch | 39 +++++ meta/recipes-devtools/llvm/llvm_git.bb | 166 +++++++++++++++++++++ 3 files changed, 298 insertions(+) create mode 100644 meta/recipes-devtools/llvm/llv m/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch create mode 100644 meta/recipes-devtools/llvm/llv m/0002-llvm-allow-env-override-of-exe-path.patch create mode 100644 meta/recipes-devtools/llvm/llvm_git.bb(quoted diff) +0
-0o-Undefine-libc-functions-if-th.patch b/meta/recipes-devtools/llvm/l
lvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patchnew file mode 100644
index 0000000000..e251799259meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInf new file +0
-0o-Undefine-libc-functions-if-th.patch
meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInf new file +4
-0@@ -0,0 +1,93 @@ +From 28293e48cf1a52004c6a78de448718441f9e05f9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <[email protected]> +Date: Sat, 21 May 2016 00:33:20 +0000 +Subject: [PATCH 1/2] llvm: TargetLibraryInfo: Undefine libc functions ifthey
+ are macrosmeta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInf new file +12
-0+ +musl defines some functions as macros and not inline functions +if this is the case then make sure to undefine them + +Signed-off-by: Khem Raj <[email protected]> +--- +Upstream-Status: Pending + + include/llvm/Analysis/TargetLibraryInfo.def | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.defb/include/llvm/Analysis/TargetLibraryInfo.def
meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInf new file +76
-0+index 9cbe917c146..aff8419cf54 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.def ++++ b/include/llvm/Analysis/TargetLibraryInfo.def +@@ -656,6 +656,9 @@ TLI_DEFINE_STRING_INTERNAL("fmodl") + TLI_DEFINE_ENUM_INTERNAL(fopen) + TLI_DEFINE_STRING_INTERNAL("fopen") + /// FILE *fopen64(const char *filename, const char *opentype) ++#ifdef fopen64 ++#undef fopen64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fopen64) + TLI_DEFINE_STRING_INTERNAL("fopen64") + /// int fprintf(FILE *stream, const char *format, ...); +@@ -691,6 +694,9 @@ TLI_DEFINE_STRING_INTERNAL("fseek") + /// int fseeko(FILE *stream, off_t offset, int whence); + TLI_DEFINE_ENUM_INTERNAL(fseeko) + TLI_DEFINE_STRING_INTERNAL("fseeko") ++#ifdef fseeko64 ++#undef fseeko64 ++#endif + /// int fseeko64(FILE *stream, off64_t offset, int whence) + TLI_DEFINE_ENUM_INTERNAL(fseeko64) + TLI_DEFINE_STRING_INTERNAL("fseeko64") +@@ -701,6 +707,9 @@ TLI_DEFINE_STRING_INTERNAL("fsetpos") + TLI_DEFINE_ENUM_INTERNAL(fstat) + TLI_DEFINE_STRING_INTERNAL("fstat") + /// int fstat64(int filedes, struct stat64 *buf) ++#ifdef fstat64 ++#undef fstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fstat64) + TLI_DEFINE_STRING_INTERNAL("fstat64") + /// int fstatvfs(int fildes, struct statvfs *buf); +@@ -716,6 +725,9 @@ TLI_DEFINE_STRING_INTERNAL("ftell") + TLI_DEFINE_ENUM_INTERNAL(ftello) + TLI_DEFINE_STRING_INTERNAL("ftello") + /// off64_t ftello64(FILE *stream) ++#ifdef ftello64 ++#undef ftello64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(ftello64) + TLI_DEFINE_STRING_INTERNAL("ftello64") + /// int ftrylockfile(FILE *file); +@@ -836,6 +848,9 @@ TLI_DEFINE_STRING_INTERNAL("logl") + TLI_DEFINE_ENUM_INTERNAL(lstat) + TLI_DEFINE_STRING_INTERNAL("lstat") + /// int lstat64(const char *path, struct stat64 *buf); ++#ifdef lstat64 ++#undef lstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(lstat64) + TLI_DEFINE_STRING_INTERNAL("lstat64") + /// void *malloc(size_t size); +@@ -1055,6 +1070,9 @@ TLI_DEFINE_STRING_INTERNAL("sscanf") + TLI_DEFINE_ENUM_INTERNAL(stat) + TLI_DEFINE_STRING_INTERNAL("stat") + /// int stat64(const char *path, struct stat64 *buf); ++#ifdef stat64 ++#undef stat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(stat64) + TLI_DEFINE_STRING_INTERNAL("stat64") + /// int statvfs(const char *path, struct statvfs *buf); +@@ -1184,6 +1202,9 @@ TLI_DEFINE_STRING_INTERNAL("times") + TLI_DEFINE_ENUM_INTERNAL(tmpfile) + TLI_DEFINE_STRING_INTERNAL("tmpfile") + /// FILE *tmpfile64(void) ++#ifdef tmpfile64 ++#undef tmpfile64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(tmpfile64) + TLI_DEFINE_STRING_INTERNAL("tmpfile64") + /// int toascii(int c); +-- +2.13.1 +meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-overri renamed from meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch +0
-0de-of-exe-path.patch
new file mode 100644
index 0000000000..832bd729efmeta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-overri new file +0
-0de-of-exe-path.patch
meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-overri new file +6
-0@@ -0,0 +1,39 @@ +From d776487bac17650704614248d19d1e6b35775001 Mon Sep 17 00:00:00 2001 +From: Martin Kelly <[email protected]> +Date: Fri, 19 May 2017 00:22:57 -0700 +Subject: [PATCH 2/2] llvm: allow env override of exe path + +When using a native llvm-config from inside a sysroot, we needllvm-config to
+return the libraries, include directories, etc. from inside the sysroot rathermeta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-overri new file +12
-0+than from the native sysroot. Thus provide an env override for calling +llvm-config from a target sysroot. + +Signed-off-by: Martin Kelly <[email protected]> +Signed-off-by: Khem Raj <[email protected]> +--- +Upstream-Status: Pending + + tools/llvm-config/llvm-config.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/tools/llvm-config/llvm-config.cppb/tools/llvm-config/llvm-config.cpp
meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-overri new file +20
-0+index 08b096afb05..d8d7742744e 100644 +--- a/tools/llvm-config/llvm-config.cpp ++++ b/tools/llvm-config/llvm-config.cpp +@@ -225,6 +225,13 @@ Typical components:\n\ + + /// \brief Compute the path to the main executable. + std::string GetExecutablePath(const char *Argv0) { ++ // Hack for Yocto: we need to override the root path when we are using ++ // llvm-config from within a target sysroot. ++ const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH"); ++ if (Sysroot != nullptr) { ++ return Sysroot; ++ } ++ + // This just needs to be some symbol in the binary; C++ doesn't + // allow taking the address of ::main however. + void *P = (void *)(intptr_t)GetExecutablePath; +-- +2.13.1 +meta/recipes-devtools/llvm/llvm_git.bb new file +9
-0@@ -0,0 +1,166 @@ +# Copyright (C) 2017 Khem Raj <[email protected]> +# Released under the MIT license (see COPYING.MIT for the terms) + +DESCRIPTION = "The LLVM Compiler Infrastructure" +HOMEPAGE = "http://llvm.org" +LICENSE = "NCSA" +SECTION = "devel" + +LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=e825e0
17edc35cfd58e26116e5251771"meta/recipes-devtools/llvm/llvm_git.bb new file +16
-0+ +DEPENDS = "libffi libxml2-native zlib ninja-native" + +RDEPENDS_${PN}_append_class-target = " ncurses-terminfo" + +inherit perlnative pythonnative cmake pkgconfig + +PROVIDES += "llvm${PV}" + +LLVM_RELEASE = "${PV}" +LLVM_DIR = "llvm${LLVM_RELEASE}" + +SRCREV = "9a5c333388cbb54a0ce3a67c4f539f5e590a089b" +PV = "5.0" +PATCH_VERSION = "0" +SRC_URI = "git://github.com/llvm-mirror/llvm.git;branch=release_50;protocol=http \
+ file://0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch
\meta/recipes-devtools/llvm/llvm_git.bb new file +23
-0+ file://0002-llvm-allow-env-override-of-exe-path.patch \ + " +S = "${WORKDIR}/git" + +LLVM_INSTALL_DIR = "${WORKDIR}/llvm-install" +def get_llvm_arch(bb, d, arch_var): + import re + a = d.getVar(arch_var, True) + if re.match('(i.86|athlon|x86.64)$', a): return 'X86' + elif re.match('arm$', a): return 'ARM' + elif re.match('armeb$', a): return 'ARM' + elif re.match('aarch64$', a): return 'AArch64' + elif re.match('aarch64_be$', a): return 'AArch64' + elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips' + elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC' + else: + bb.error("cannot map '%s' to a supported llvm architecture" % a) + return "" + +def get_llvm_target_arch(bb, d): + return get_llvm_arch(bb, d, 'TARGET_ARCH') +# +# Default to build all OE-Core supported target arches (useroverridable).
meta/recipes-devtools/llvm/llvm_git.bb new file +12
-0+# +LLVM_TARGETS ?= "${@get_llvm_target_arch(bb, d)}" +LLVM_TARGETS_prepend_x86 = "AMDGPU;" +LLVM_TARGETS_prepend_x86-64 = "AMDGPU;" + +EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ + -DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \ + -DLLVM_ENABLE_PIC=ON \ + -DLLVM_BINDINGS_LIST='' \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_ENABLE_FFI=ON \ + -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedirlibffi) \
meta/recipes-devtools/llvm/llvm_git.bb new file +10
-0+ -DLLVM_OPTIMIZED_TABLEGEN=ON \ + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS}" \ + -DCMAKE_CROSSCOMPILING:BOOL=ON \ + -G Ninja \ + " +EXTRA_OECMAKE_remove_class-native = "-DCMAKE_CROSSCOMPILING:BOOL=ON" + +do_configure_prepend() { +# Fix paths in llvm-config + sed -i "s|sys::path::parent_path(CurrentPath))\.str()|sys::path::parent_path(sys::path::parent_path(CurrentPath))).str()|g" ${S}/tools/llvm-config/llvm-config.cpp
+ sed -ri "s#/(bin|include|lib)(/?\")#/\1/${LLVM_DIR}\2#g"
${S}/tools/llvm-config/llvm-config.cpp
+ sed -ri "s#lib/${LLVM_DIR}#${baselib}/${LLVM_DIR}#g"
${S}/tools/llvm-config/llvm-config.cppmeta/recipes-devtools/llvm/llvm_git.bb new file +9
-0+} + +do_compile() { + NINJA_STATUS="[%p] " ninja -v ${PARALLEL_MAKE} +} + +do_install() { + NINJA_STATUS="[%p] " DESTDIR=${LLVM_INSTALL_DIR} ninja -v install + install -D -m 0755 ${B}/NATIVE/bin/llvm-config${D}${libdir}/${LLVM_DIR}/llvm-config-host
meta/recipes-devtools/llvm/llvm_git.bb new file +6
-0+ + install -d ${D}${bindir}/${LLVM_DIR} + cp -r ${LLVM_INSTALL_DIR}${bindir}/* ${D}${bindir}/${LLVM_DIR}/ + + install -d ${D}${includedir}/${LLVM_DIR} + cp -r ${LLVM_INSTALL_DIR}${includedir}/*${D}${includedir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +4
-0+ + install -d ${D}${libdir}/${LLVM_DIR} + + # The LLVM sources have "/lib" embedded and so we cannotcompletely rely on the ${libdir} variable
meta/recipes-devtools/llvm/llvm_git.bb new file +2
-0+ if [ -d ${LLVM_INSTALL_DIR}${libdir}/ ]; then + cp -r ${LLVM_INSTALL_DIR}${libdir}/*${D}${libdir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +2
-0+ elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib ]; then + cp -r ${LLVM_INSTALL_DIR}${prefix}/lib/*${D}${libdir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +2
-0+ elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib64 ]; then + cp -r ${LLVM_INSTALL_DIR}${prefix}/lib64/*${D}${libdir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +6
-0+ fi + + # Remove unnecessary cmake files + rm -rf ${D}${libdir}/${LLVM_DIR}/cmake + + ln -s ${LLVM_DIR}/libLLVM-${PV}${SOLIBSDEV}${D}${libdir}/libLLVM-${PV}${SOLIBSDEV}
meta/recipes-devtools/llvm/llvm_git.bb new file +45
-0+ + # We'll have to delete the libLLVM.so due to multiple reasons... + rm -rf ${D}${libdir}/${LLVM_DIR}/libLLVM.so + rm -rf ${D}${libdir}/${LLVM_DIR}/libLTO.so +} + +PACKAGES += "${PN}-bugpointpasses ${PN}-llvmhello" +ALLOW_EMPTY_${PN} = "1" +ALLOW_EMPTY_${PN}-staticdev = "1" +FILES_${PN} = "" +FILES_${PN}-staticdev = "" +FILES_${PN}-dbg = " \ + ${bindir}/${LLVM_DIR}/.debug \ + ${libdir}/${LLVM_DIR}/.debug/BugpointPasses.so \ + ${libdir}/${LLVM_DIR}/.debug/LLVMHello.so \ + ${libdir}/${LLVM_DIR}/.debug/libLTO.so* \ + ${libdir}/${LLVM_DIR}/.debug/llvm-config-host \ + /usr/src/debug \ +" + +FILES_${PN}-dev = " \ + ${bindir}/${LLVM_DIR} \ + ${includedir}/${LLVM_DIR} \ + ${libdir}/${LLVM_DIR}/llvm-config-host \ +" + +RRECOMMENDS_${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello" + +FILES_${PN}-bugpointpasses = "\ + ${libdir}/${LLVM_DIR}/BugpointPasses.so \ +" +FILES_${PN} += "\ + ${libdir}/${LLVM_DIR}/libLTO.so.* \ +" + +FILES_${PN}-llvmhello = "\ + ${libdir}/${LLVM_DIR}/LLVMHello.so \ +" + +PACKAGES_DYNAMIC = "^libllvm${LLVM_RELEASE}-.*$" +NOAUTOPACKAGEDEBUG = "1" + +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE}.${PATCH_VERSION} += "dev-so" +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE} +="dev-so"
meta/recipes-devtools/llvm/llvm_git.bb new file +6
-0+INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm += "dev-so" + +python llvm_populate_packages() { + libdir = bb.data.expand('${libdir}', d) + libllvm_libdir = bb.data.expand('${libdir}/${LLVM_DIR}', d) + split_dbg_packages = do_split_packages(d, libllvm_libdir+'/.debug','^lib(.*)\.so$', 'libllvm${LLVM_RELEASE}-%s-dbg', 'Split debug package for %s', allow_dirs=True)
+split_packages= do_split_packages(d, libdir, '^lib(.*)\.so$',
'libllvm${LLVM_RELEASE}-%s', 'Split package for %s', allow_dirs=True, allow_links=True, recursive=True)
+split_staticdev_packages= do_split_packages(d,libllvm_libdir,
'^lib(.*)\.a$', 'libllvm${LLVM_RELEASE}-%s-staticdev', 'Split staticdev package for %s', allow_dirs=True)meta/recipes-devtools/llvm/llvm_git.bb new file +4
-0+ if split_packages: + pn = d.getVar('PN', True) + d.appendVar('RDEPENDS_' + pn, ' '+' '.join(split_packages)) + d.appendVar('RDEPENDS_' + pn + '-dbg', ' '+''.join(split_dbg_packages))
+ d.appendVar('RDEPENDS_' + pn + '-staticdev', ' '+'
'.join(split_staticdev_packages))meta/recipes-devtools/llvm/llvm_git.bb new file +5
-1+} + +PACKAGESPLITFUNCS_prepend = "llvm_populate_packages " + +BBCLASSEXTEND = "native nativesdk" --2.13.3
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Quoted 29 lines · Ross
Replicated without uninative, so it's not that.
Ross
Quoted 24 lines · Ross
Fails like this for me:
| FAILED:
tools/llvm-cvtres/Opts.inc.tmp
| cd
/data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build && /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -gen-opt-parser-defs -I /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/tools/llvm-cvtres -I
/data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/include /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/tools/llvm-cvtres/Opts.td -otools/llvm-cvtres/Opts.inc.tmp-dtools/llvm-cvtres/Opts.inc.d
|/bin/sh: 1:
/data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen:
not foundIt is there though:
$ ls -l /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -rwxr-xr-x 1 ross ross 49807224 Jul 29 12:25 /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen
Quoted 7 lines
Quoted 7 lines
$ /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -bash:
/data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen:
No such file or directoryMight be related to having uninative enabled?
Not really, I think it could be build race. I will take a look
Quoted 392 lines
Quoted 391 lines
Ross
Quoted 384 lines · Khem Raj
Based on recipe from meta-oe and clang recipe from meta-clang Needed by mesa
Fixes
[YOCTO #11529]Signed-off-by Khem Raj <[email protected]>--- ...LibraryInfo-Undefine-libc-functions-if-th.patch | 93 ++++++++++++ .../0002-llvm-allow-env-override-of-exe-path.patch | 39 +++++ meta/recipes-devtools/llvm/llvm_git.bb | 166 +++++++++++++++++++++ 3 files changed, 298 insertions(+) create mode 100644 meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch create mode 100644 meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch create mode 100644 meta/recipes-devtools/llvm/llvm_git.bbdiff --git
a/meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patchb/meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patchnew file mode 100644
index 0000000000..e251799259
---/dev/null
+++b/meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patchmeta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch new file +4
-0@@ -0,0 +1,93 @@ +From 28293e48cf1a52004c6a78de448718441f9e05f9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <[email protected]> +Date: Sat, 21 May 2016 00:33:20 +0000 +Subject: [PATCH 1/2] llvm: TargetLibraryInfo: Undefine libc functions ifthey
+ are macrosmeta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch new file +12
-0+ +musl defines some functions as macros and not inline functions +if this is the case then make sure to undefine them + +Signed-off-by: Khem Raj <[email protected]> +--- +Upstream-Status: Pending + + include/llvm/Analysis/TargetLibraryInfo.def | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.defb/include/llvm/Analysis/TargetLibraryInfo.def
meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch new file +76
-0+index 9cbe917c146..aff8419cf54 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.def ++++ b/include/llvm/Analysis/TargetLibraryInfo.def +@@ -656,6 +656,9 @@ TLI_DEFINE_STRING_INTERNAL("fmodl") + TLI_DEFINE_ENUM_INTERNAL(fopen) + TLI_DEFINE_STRING_INTERNAL("fopen") + /// FILE *fopen64(const char *filename, const char *opentype) ++#ifdef fopen64 ++#undef fopen64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fopen64) + TLI_DEFINE_STRING_INTERNAL("fopen64") + /// int fprintf(FILE *stream, const char *format, ...); +@@ -691,6 +694,9 @@ TLI_DEFINE_STRING_INTERNAL("fseek") + /// int fseeko(FILE *stream, off_t offset, int whence); + TLI_DEFINE_ENUM_INTERNAL(fseeko) + TLI_DEFINE_STRING_INTERNAL("fseeko") ++#ifdef fseeko64 ++#undef fseeko64 ++#endif + /// int fseeko64(FILE *stream, off64_t offset, int whence) + TLI_DEFINE_ENUM_INTERNAL(fseeko64) + TLI_DEFINE_STRING_INTERNAL("fseeko64") +@@ -701,6 +707,9 @@ TLI_DEFINE_STRING_INTERNAL("fsetpos") + TLI_DEFINE_ENUM_INTERNAL(fstat) + TLI_DEFINE_STRING_INTERNAL("fstat") + /// int fstat64(int filedes, struct stat64 *buf) ++#ifdef fstat64 ++#undef fstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fstat64) + TLI_DEFINE_STRING_INTERNAL("fstat64") + /// int fstatvfs(int fildes, struct statvfs *buf); +@@ -716,6 +725,9 @@ TLI_DEFINE_STRING_INTERNAL("ftell") + TLI_DEFINE_ENUM_INTERNAL(ftello) + TLI_DEFINE_STRING_INTERNAL("ftello") + /// off64_t ftello64(FILE *stream) ++#ifdef ftello64 ++#undef ftello64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(ftello64) + TLI_DEFINE_STRING_INTERNAL("ftello64") + /// int ftrylockfile(FILE *file); +@@ -836,6 +848,9 @@ TLI_DEFINE_STRING_INTERNAL("logl") + TLI_DEFINE_ENUM_INTERNAL(lstat) + TLI_DEFINE_STRING_INTERNAL("lstat") + /// int lstat64(const char *path, struct stat64 *buf); ++#ifdef lstat64 ++#undef lstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(lstat64) + TLI_DEFINE_STRING_INTERNAL("lstat64") + /// void *malloc(size_t size); +@@ -1055,6 +1070,9 @@ TLI_DEFINE_STRING_INTERNAL("sscanf") + TLI_DEFINE_ENUM_INTERNAL(stat) + TLI_DEFINE_STRING_INTERNAL("stat") + /// int stat64(const char *path, struct stat64 *buf); ++#ifdef stat64 ++#undef stat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(stat64) + TLI_DEFINE_STRING_INTERNAL("stat64") + /// int statvfs(const char *path, struct statvfs *buf); +@@ -1184,6 +1202,9 @@ TLI_DEFINE_STRING_INTERNAL("times") + TLI_DEFINE_ENUM_INTERNAL(tmpfile) + TLI_DEFINE_STRING_INTERNAL("tmpfile") + /// FILE *tmpfile64(void) ++#ifdef tmpfile64 ++#undef tmpfile64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(tmpfile64) + TLI_DEFINE_STRING_INTERNAL("tmpfile64") + /// int toascii(int c); +-- +2.13.1 +diff --git
a/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patchb/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patchnew file mode 100644
index 0000000000..832bd729ef
---/dev/null
+++b/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patchmeta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch new file +6
-0@@ -0,0 +1,39 @@ +From d776487bac17650704614248d19d1e6b35775001 Mon Sep 17 00:00:00 2001 +From: Martin Kelly <[email protected]> +Date: Fri, 19 May 2017 00:22:57 -0700 +Subject: [PATCH 2/2] llvm: allow env override of exe path + +When using a native llvm-config from inside a sysroot, we needllvm-config to
+return the libraries, include directories, etc. from inside the sysroot rathermeta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch new file +12
-0+than from the native sysroot. Thus provide an env override for calling +llvm-config from a target sysroot. + +Signed-off-by: Martin Kelly <[email protected]> +Signed-off-by: Khem Raj <[email protected]> +--- +Upstream-Status: Pending + + tools/llvm-config/llvm-config.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/tools/llvm-config/llvm-config.cppb/tools/llvm-config/llvm-config.cpp
meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch new file +8
-0+index 08b096afb05..d8d7742744e 100644 +--- a/tools/llvm-config/llvm-config.cpp ++++ b/tools/llvm-config/llvm-config.cpp +@@ -225,6 +225,13 @@ Typical components:\n\ + + /// \brief Compute the path to the main executable. + std::string GetExecutablePath(const char *Argv0) { ++ // Hack for Yocto: we need to override the root path when we areusing
++ // llvm-config from within a target sysroot. ++ const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH"); ++ if (Sysroot != nullptr) {++ return Sysroot;
++ }
++meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch new file +6
-0+ // This just needs to be some symbol in the binary; C++ doesn't + // allow taking the address of ::main however. + void *P = (void *)(intptr_t)GetExecutablePath; +-- +2.13.1 +meta/recipes-devtools/llvm/llvm_git.bb new file +9
-0@@ -0,0 +1,166 @@ +# Copyright (C) 2017 Khem Raj <[email protected]> +# Released under the MIT license (see COPYING.MIT for the terms) + +DESCRIPTION = "The LLVM Compiler Infrastructure" +HOMEPAGE = "http://llvm.org" +LICENSE = "NCSA" +SECTION = "devel" + +LIC_FILES_CHKSUM ="file://LICENSE.TXT;md5=e825e017edc35cfd58e26116e5251771"
meta/recipes-devtools/llvm/llvm_git.bb new file +16
-0+ +DEPENDS = "libffi libxml2-native zlib ninja-native" + +RDEPENDS_${PN}_append_class-target = " ncurses-terminfo" + +inherit perlnative pythonnative cmake pkgconfig + +PROVIDES += "llvm${PV}" + +LLVM_RELEASE = "${PV}" +LLVM_DIR = "llvm${LLVM_RELEASE}" + +SRCREV = "9a5c333388cbb54a0ce3a67c4f539f5e590a089b" +PV = "5.0" +PATCH_VERSION = "0" +SRC_URI ="
git://github.com/llvm-mirror/llvm.git;branch=release_50;protocol=http\
+ file://0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch \meta/recipes-devtools/llvm/llvm_git.bb new file +23
-0+ file://0002-llvm-allow-env-override-of-exe-path.patch \ + " +S = "${WORKDIR}/git" + +LLVM_INSTALL_DIR = "${WORKDIR}/llvm-install" +def get_llvm_arch(bb, d, arch_var): + import re + a = d.getVar(arch_var, True) + if re.match('(i.86|athlon|x86.64)$', a): return 'X86' + elif re.match('arm$', a): return 'ARM' + elif re.match('armeb$', a): return 'ARM' + elif re.match('aarch64$', a): return 'AArch64' + elif re.match('aarch64_be$', a): return 'AArch64' + elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips' + elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC' + else: + bb.error("cannot map '%s' to a supported llvm architecture" % a) + return "" + +def get_llvm_target_arch(bb, d): + return get_llvm_arch(bb, d, 'TARGET_ARCH') +# +# Default to build all OE-Core supported target arches (useroverridable).
meta/recipes-devtools/llvm/llvm_git.bb new file +12
-0+# +LLVM_TARGETS ?= "${@get_llvm_target_arch(bb, d)}" +LLVM_TARGETS_prepend_x86 = "AMDGPU;" +LLVM_TARGETS_prepend_x86-64 = "AMDGPU;" + +EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ + -DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \ + -DLLVM_ENABLE_PIC=ON \ + -DLLVM_BINDINGS_LIST='' \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_ENABLE_FFI=ON \ + -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedirlibffi) \
meta/recipes-devtools/llvm/llvm_git.bb new file +10
-0+ -DLLVM_OPTIMIZED_TABLEGEN=ON \ + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS}" \ + -DCMAKE_CROSSCOMPILING:BOOL=ON \ + -G Ninja \ + " +EXTRA_OECMAKE_remove_class-native = "-DCMAKE_CROSSCOMPILING:BOOL=ON" + +do_configure_prepend() { +# Fix paths in llvm-config + sed -i"s|sys::path::parent_path(CurrentPath))\.str()|sys::path::parent_path(sys::path::parent_path(CurrentPath))).str()|g" ${S}/tools/llvm-config/llvm-config.cpp
+ sed -ri "s#/(bin|include|lib)(/?\")#/\1/${LLVM_DIR}\2#g"
${S}/tools/llvm-config/llvm-config.cpp
+ sed -ri "s#lib/${LLVM_DIR}#${baselib}/${LLVM_DIR}#g"
${S}/tools/llvm-config/llvm-config.cppmeta/recipes-devtools/llvm/llvm_git.bb new file +9
-0+} + +do_compile() { + NINJA_STATUS="[%p] " ninja -v ${PARALLEL_MAKE} +} + +do_install() { + NINJA_STATUS="[%p] " DESTDIR=${LLVM_INSTALL_DIR} ninja -v install + install -D -m 0755 ${B}/NATIVE/bin/llvm-config${D}${libdir}/${LLVM_DIR}/llvm-config-host
meta/recipes-devtools/llvm/llvm_git.bb new file +6
-0+ + install -d ${D}${bindir}/${LLVM_DIR} + cp -r ${LLVM_INSTALL_DIR}${bindir}/* ${D}${bindir}/${LLVM_DIR}/ + + install -d ${D}${includedir}/${LLVM_DIR} + cp -r ${LLVM_INSTALL_DIR}${includedir}/*${D}${includedir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +4
-0+ + install -d ${D}${libdir}/${LLVM_DIR} + + # The LLVM sources have "/lib" embedded and so we cannotcompletely rely on the ${libdir} variable
meta/recipes-devtools/llvm/llvm_git.bb new file +2
-0+ if [ -d ${LLVM_INSTALL_DIR}${libdir}/ ]; then + cp -r ${LLVM_INSTALL_DIR}${libdir}/*${D}${libdir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +2
-0+ elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib ]; then + cp -r ${LLVM_INSTALL_DIR}${prefix}/lib/*${D}${libdir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +2
-0+ elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib64 ]; then + cp -r ${LLVM_INSTALL_DIR}${prefix}/lib64/*${D}${libdir}/${LLVM_DIR}/
meta/recipes-devtools/llvm/llvm_git.bb new file +6
-0+ fi + + # Remove unnecessary cmake files + rm -rf ${D}${libdir}/${LLVM_DIR}/cmake + + ln -s ${LLVM_DIR}/libLLVM-${PV}${SOLIBSDEV}${D}${libdir}/libLLVM-${PV}${SOLIBSDEV}
meta/recipes-devtools/llvm/llvm_git.bb new file +45
-0+ + # We'll have to delete the libLLVM.so due to multiple reasons... + rm -rf ${D}${libdir}/${LLVM_DIR}/libLLVM.so + rm -rf ${D}${libdir}/${LLVM_DIR}/libLTO.so +} + +PACKAGES += "${PN}-bugpointpasses ${PN}-llvmhello" +ALLOW_EMPTY_${PN} = "1" +ALLOW_EMPTY_${PN}-staticdev = "1" +FILES_${PN} = "" +FILES_${PN}-staticdev = "" +FILES_${PN}-dbg = " \ + ${bindir}/${LLVM_DIR}/.debug \ + ${libdir}/${LLVM_DIR}/.debug/BugpointPasses.so \ + ${libdir}/${LLVM_DIR}/.debug/LLVMHello.so \ + ${libdir}/${LLVM_DIR}/.debug/libLTO.so* \ + ${libdir}/${LLVM_DIR}/.debug/llvm-config-host \ + /usr/src/debug \ +" + +FILES_${PN}-dev = " \ + ${bindir}/${LLVM_DIR} \ + ${includedir}/${LLVM_DIR} \ + ${libdir}/${LLVM_DIR}/llvm-config-host \ +" + +RRECOMMENDS_${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello" + +FILES_${PN}-bugpointpasses = "\ + ${libdir}/${LLVM_DIR}/BugpointPasses.so \ +" +FILES_${PN} += "\ + ${libdir}/${LLVM_DIR}/libLTO.so.* \ +" + +FILES_${PN}-llvmhello = "\ + ${libdir}/${LLVM_DIR}/LLVMHello.so \ +" + +PACKAGES_DYNAMIC = "^libllvm${LLVM_RELEASE}-.*$" +NOAUTOPACKAGEDEBUG = "1" + +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE}.${PATCH_VERSION} += "dev-so" +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE} +="dev-so"
meta/recipes-devtools/llvm/llvm_git.bb new file +6
-0+INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm += "dev-so" + +python llvm_populate_packages() { + libdir = bb.data.expand('${libdir}', d) + libllvm_libdir = bb.data.expand('${libdir}/${LLVM_DIR}', d) + split_dbg_packages = do_split_packages(d, libllvm_libdir+'/.debug','^lib(.*)\.so$', 'libllvm${LLVM_RELEASE}-%s-dbg', 'Split debug package for %s', allow_dirs=True)
+split_packages= do_split_packages(d, libdir, '^lib(.*)\.so$',
'libllvm${LLVM_RELEASE}-%s', 'Split package for %s', allow_dirs=True, allow_links=True, recursive=True)
+split_staticdev_packages= do_split_packages(d,libllvm_libdir,
'^lib(.*)\.a$', 'libllvm${LLVM_RELEASE}-%s-staticdev', 'Split staticdev package for %s', allow_dirs=True)meta/recipes-devtools/llvm/llvm_git.bb new file +4
-0+ if split_packages: + pn = d.getVar('PN', True) + d.appendVar('RDEPENDS_' + pn, ' '+' '.join(split_packages)) + d.appendVar('RDEPENDS_' + pn + '-dbg', ' '+''.join(split_dbg_packages))
+ d.appendVar('RDEPENDS_' + pn + '-staticdev', ' '+'
'.join(split_staticdev_packages))meta/recipes-devtools/llvm/llvm_git.bb new file +5
-1+} + +PACKAGESPLITFUNCS_prepend = "llvm_populate_packages " + +BBCLASSEXTEND = "native nativesdk" --2.13.3
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Ross
I have refreshed the pull branch which should hopefully address mesa configure issue you are seeing along with llvm fix to adjust with clang layer
Quoted 458 lines · Ross
Replicated without uninative, so it's not that.
Ross
On 29 July 2017 at 12:39, Burton, Ross <[email protected] <mailto:[email protected]>> wrote:
Fails like this for me: | FAILED: tools/llvm-cvtres/Opts.inc.tmp | cd /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build && /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -gen-opt-parser-defs -I /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/tools/llvm-cvtres -I /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/include /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/tools/llvm-cvtres/Opts.td -o tools/llvm-cvtres/Opts.inc.tmp -d tools/llvm-cvtres/Opts.inc.d | /bin/sh: 1: /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen: not found It is there though: $ ls -l /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -rwxr-xr-x 1 ross ross 49807224 Jul 29 12:25 /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen $ /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -bash: /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen: No such file or directory Might be related to having uninative enabled? Ross On 29 July 2017 at 09:35, Khem Raj <[email protected] <mailto:[email protected]>> wrote: Based on recipe from meta-oe and clang recipe from meta-clang Needed by mesa Fixes [YOCTO #11529] Signed-off-by: Khem Raj <[email protected] <mailto:[email protected]>> --- ...LibraryInfo-Undefine-libc-functions-if-th.patch | 93 ++++++++++++ .../0002-llvm-allow-env-override-of-exe-path.patch | 39 +++++ meta/recipes-devtools/llvm/llvm_git.bb <http://llvm_git.bb> | 166 +++++++++++++++++++++ 3 files changed, 298 insertions(+) create mode 100644 meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch create mode 100644 meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch create mode 100644 meta/recipes-devtools/llvm/llvm_git.bb <http://llvm_git.bb> diff --git a/meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch b/meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch new file mode 100644 index 0000000000..e251799259 --- /dev/null +++ b/meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch @@ -0,0 +1,93 @@ +From 28293e48cf1a52004c6a78de448718441f9e05f9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <[email protected] <mailto:[email protected]>> +Date: Sat, 21 May 2016 00:33:20 +0000 +Subject: [PATCH 1/2] llvm: TargetLibraryInfo: Undefine libc functions if they + are macros + +musl defines some functions as macros and not inline functions +if this is the case then make sure to undefine them + +Signed-off-by: Khem Raj <[email protected] <mailto:[email protected]>> +--- +Upstream-Status: Pending + + include/llvm/Analysis/TargetLibraryInfo.def | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.def b/include/llvm/Analysis/TargetLibraryInfo.def +index 9cbe917c146..aff8419cf54 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.def ++++ b/include/llvm/Analysis/TargetLibraryInfo.def +@@ -656,6 +656,9 @@ TLI_DEFINE_STRING_INTERNAL("fmodl") + TLI_DEFINE_ENUM_INTERNAL(fopen) + TLI_DEFINE_STRING_INTERNAL("fopen") + /// FILE *fopen64(const char *filename, const char *opentype) ++#ifdef fopen64 ++#undef fopen64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fopen64) + TLI_DEFINE_STRING_INTERNAL("fopen64") + /// int fprintf(FILE *stream, const char *format, ...); +@@ -691,6 +694,9 @@ TLI_DEFINE_STRING_INTERNAL("fseek") + /// int fseeko(FILE *stream, off_t offset, int whence); + TLI_DEFINE_ENUM_INTERNAL(fseeko) + TLI_DEFINE_STRING_INTERNAL("fseeko") ++#ifdef fseeko64 ++#undef fseeko64 ++#endif + /// int fseeko64(FILE *stream, off64_t offset, int whence) + TLI_DEFINE_ENUM_INTERNAL(fseeko64) + TLI_DEFINE_STRING_INTERNAL("fseeko64") +@@ -701,6 +707,9 @@ TLI_DEFINE_STRING_INTERNAL("fsetpos") + TLI_DEFINE_ENUM_INTERNAL(fstat) + TLI_DEFINE_STRING_INTERNAL("fstat") + /// int fstat64(int filedes, struct stat64 *buf) ++#ifdef fstat64 ++#undef fstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fstat64) + TLI_DEFINE_STRING_INTERNAL("fstat64") + /// int fstatvfs(int fildes, struct statvfs *buf); +@@ -716,6 +725,9 @@ TLI_DEFINE_STRING_INTERNAL("ftell") + TLI_DEFINE_ENUM_INTERNAL(ftello) + TLI_DEFINE_STRING_INTERNAL("ftello") + /// off64_t ftello64(FILE *stream) ++#ifdef ftello64 ++#undef ftello64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(ftello64) + TLI_DEFINE_STRING_INTERNAL("ftello64") + /// int ftrylockfile(FILE *file); +@@ -836,6 +848,9 @@ TLI_DEFINE_STRING_INTERNAL("logl") + TLI_DEFINE_ENUM_INTERNAL(lstat) + TLI_DEFINE_STRING_INTERNAL("lstat") + /// int lstat64(const char *path, struct stat64 *buf); ++#ifdef lstat64 ++#undef lstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(lstat64) + TLI_DEFINE_STRING_INTERNAL("lstat64") + /// void *malloc(size_t size); +@@ -1055,6 +1070,9 @@ TLI_DEFINE_STRING_INTERNAL("sscanf") + TLI_DEFINE_ENUM_INTERNAL(stat) + TLI_DEFINE_STRING_INTERNAL("stat") + /// int stat64(const char *path, struct stat64 *buf); ++#ifdef stat64 ++#undef stat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(stat64) + TLI_DEFINE_STRING_INTERNAL("stat64") + /// int statvfs(const char *path, struct statvfs *buf); +@@ -1184,6 +1202,9 @@ TLI_DEFINE_STRING_INTERNAL("times") + TLI_DEFINE_ENUM_INTERNAL(tmpfile) + TLI_DEFINE_STRING_INTERNAL("tmpfile") + /// FILE *tmpfile64(void) ++#ifdef tmpfile64 ++#undef tmpfile64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(tmpfile64) + TLI_DEFINE_STRING_INTERNAL("tmpfile64") + /// int toascii(int c); +-- +2.13.1 + diff --git a/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch b/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch new file mode 100644 index 0000000000..832bd729ef --- /dev/null +++ b/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch @@ -0,0 +1,39 @@ +From d776487bac17650704614248d19d1e6b35775001 Mon Sep 17 00:00:00 2001 +From: Martin Kelly <[email protected] <mailto:[email protected]>> +Date: Fri, 19 May 2017 00:22:57 -0700 +Subject: [PATCH 2/2] llvm: allow env override of exe path + +When using a native llvm-config from inside a sysroot, we need llvm-config to +return the libraries, include directories, etc. from inside the sysroot rather +than from the native sysroot. Thus provide an env override for calling +llvm-config from a target sysroot. + +Signed-off-by: Martin Kelly <[email protected] <mailto:[email protected]>> +Signed-off-by: Khem Raj <[email protected] <mailto:[email protected]>> +--- +Upstream-Status: Pending + + tools/llvm-config/llvm-config.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp +index 08b096afb05..d8d7742744e 100644 +--- a/tools/llvm-config/llvm-config.cpp ++++ b/tools/llvm-config/llvm-config.cpp +@@ -225,6 +225,13 @@ Typical components:\n\ + + /// \brief Compute the path to the main executable. + std::string GetExecutablePath(const char *Argv0) { ++ // Hack for Yocto: we need to override the root path when we are using ++ // llvm-config from within a target sysroot. ++ const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH"); ++ if (Sysroot != nullptr) { ++ return Sysroot; ++ } ++ + // This just needs to be some symbol in the binary; C++ doesn't + // allow taking the address of ::main however. + void *P = (void *)(intptr_t)GetExecutablePath; +-- +2.13.1 + diff --git a/meta/recipes-devtools/llvm/llvm_git.bb <http://llvm_git.bb> b/meta/recipes-devtools/llvm/llvm_git.bb <http://llvm_git.bb> new file mode 100644 index 0000000000..7b51d2153f --- /dev/null +++ b/meta/recipes-devtools/llvm/llvm_git.bb <http://llvm_git.bb> @@ -0,0 +1,166 @@ +# Copyright (C) 2017 Khem Raj <[email protected] <mailto:[email protected]>> +# Released under the MIT license (see COPYING.MIT for the terms) + +DESCRIPTION = "The LLVM Compiler Infrastructure" +HOMEPAGE = "http://llvm.org" +LICENSE = "NCSA" +SECTION = "devel" + +LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=e825e017edc35cfd58e26116e5251771" + +DEPENDS = "libffi libxml2-native zlib ninja-native" + +RDEPENDS_${PN}_append_class-target = " ncurses-terminfo" + +inherit perlnative pythonnative cmake pkgconfig + +PROVIDES += "llvm${PV}" + +LLVM_RELEASE = "${PV}" +LLVM_DIR = "llvm${LLVM_RELEASE}" + +SRCREV = "9a5c333388cbb54a0ce3a67c4f539f5e590a089b" +PV = "5.0" +PATCH_VERSION = "0" +SRC_URI = "git://github.com/llvm-mirror/llvm.git;branch=release_50;protocol=http <http://github.com/llvm-mirror/llvm.git;branch=release_50;protocol=http> \ + file://0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch \ + file://0002-llvm-allow-env-override-of-exe-path.patch \ + " +S = "${WORKDIR}/git" + +LLVM_INSTALL_DIR = "${WORKDIR}/llvm-install" +def get_llvm_arch(bb, d, arch_var): + import re + a = d.getVar(arch_var, True) + if re.match('(i.86|athlon|x86.64)$', a): return 'X86' + elif re.match('arm$', a): return 'ARM' + elif re.match('armeb$', a): return 'ARM' + elif re.match('aarch64$', a): return 'AArch64' + elif re.match('aarch64_be$', a): return 'AArch64' + elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips' + elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC' + else: + bb.error("cannot map '%s' to a supported llvm architecture" % a) + return "" + +def get_llvm_target_arch(bb, d): + return get_llvm_arch(bb, d, 'TARGET_ARCH') +# +# Default to build all OE-Core supported target arches (user overridable). +# +LLVM_TARGETS ?= "${@get_llvm_target_arch(bb, d)}" +LLVM_TARGETS_prepend_x86 = "AMDGPU;" +LLVM_TARGETS_prepend_x86-64 = "AMDGPU;" + +EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ + -DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \ + -DLLVM_ENABLE_PIC=ON \ + -DLLVM_BINDINGS_LIST='' \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_ENABLE_FFI=ON \ + -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \ + -DLLVM_OPTIMIZED_TABLEGEN=ON \ + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS}" \ + -DCMAKE_CROSSCOMPILING:BOOL=ON \ + -G Ninja \ + " +EXTRA_OECMAKE_remove_class-native = "-DCMAKE_CROSSCOMPILING:BOOL=ON" + +do_configure_prepend() { +# Fix paths in llvm-config + sed -i "s|sys::path::parent_path(CurrentPath))\.str()|sys::path::parent_path(sys::path::parent_path(CurrentPath))).str()|g" ${S}/tools/llvm-config/llvm-config.cpp + sed -ri "s#/(bin|include|lib)(/?\")#/\1/${LLVM_DIR}\2#g" ${S}/tools/llvm-config/llvm-config.cpp + sed -ri "s#lib/${LLVM_DIR}#${baselib}/${LLVM_DIR}#g" ${S}/tools/llvm-config/llvm-config.cpp +} + +do_compile() { + NINJA_STATUS="[%p] " ninja -v ${PARALLEL_MAKE} +} + +do_install() { + NINJA_STATUS="[%p] " DESTDIR=${LLVM_INSTALL_DIR} ninja -v install + install -D -m 0755 ${B}/NATIVE/bin/llvm-config ${D}${libdir}/${LLVM_DIR}/llvm-config-host + + install -d ${D}${bindir}/${LLVM_DIR} + cp -r ${LLVM_INSTALL_DIR}${bindir}/* ${D}${bindir}/${LLVM_DIR}/ + + install -d ${D}${includedir}/${LLVM_DIR} + cp -r ${LLVM_INSTALL_DIR}${includedir}/* ${D}${includedir}/${LLVM_DIR}/ + + install -d ${D}${libdir}/${LLVM_DIR} + + # The LLVM sources have "/lib" embedded and so we cannot completely rely on the ${libdir} variable + if [ -d ${LLVM_INSTALL_DIR}${libdir}/ ]; then + cp -r ${LLVM_INSTALL_DIR}${libdir}/* ${D}${libdir}/${LLVM_DIR}/ + elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib ]; then + cp -r ${LLVM_INSTALL_DIR}${prefix}/lib/* ${D}${libdir}/${LLVM_DIR}/ + elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib64 ]; then + cp -r ${LLVM_INSTALL_DIR}${prefix}/lib64/* ${D}${libdir}/${LLVM_DIR}/ + fi + + # Remove unnecessary cmake files + rm -rf ${D}${libdir}/${LLVM_DIR}/cmake + + ln -s ${LLVM_DIR}/libLLVM-${PV}${SOLIBSDEV} ${D}${libdir}/libLLVM-${PV}${SOLIBSDEV} + + # We'll have to delete the libLLVM.so due to multiple reasons... + rm -rf ${D}${libdir}/${LLVM_DIR}/libLLVM.so + rm -rf ${D}${libdir}/${LLVM_DIR}/libLTO.so +} + +PACKAGES += "${PN}-bugpointpasses ${PN}-llvmhello" +ALLOW_EMPTY_${PN} = "1" +ALLOW_EMPTY_${PN}-staticdev = "1" +FILES_${PN} = "" +FILES_${PN}-staticdev = "" +FILES_${PN}-dbg = " \ + ${bindir}/${LLVM_DIR}/.debug \ + ${libdir}/${LLVM_DIR}/.debug/BugpointPasses.so \ + ${libdir}/${LLVM_DIR}/.debug/LLVMHello.so \ + ${libdir}/${LLVM_DIR}/.debug/libLTO.so* \ + ${libdir}/${LLVM_DIR}/.debug/llvm-config-host \ + /usr/src/debug \ +" + +FILES_${PN}-dev = " \ + ${bindir}/${LLVM_DIR} \ + ${includedir}/${LLVM_DIR} \ + ${libdir}/${LLVM_DIR}/llvm-config-host \ +" + +RRECOMMENDS_${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello" + +FILES_${PN}-bugpointpasses = "\ + ${libdir}/${LLVM_DIR}/BugpointPasses.so \ +" +FILES_${PN} += "\ + ${libdir}/${LLVM_DIR}/libLTO.so.* \ +" + +FILES_${PN}-llvmhello = "\ + ${libdir}/${LLVM_DIR}/LLVMHello.so \ +" + +PACKAGES_DYNAMIC = "^libllvm${LLVM_RELEASE}-.*$" +NOAUTOPACKAGEDEBUG = "1" + +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE}.${PATCH_VERSION} += "dev-so" +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE} += "dev-so" +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm += "dev-so" + +python llvm_populate_packages() { + libdir = bb.data.expand('${libdir}', d) + libllvm_libdir = bb.data.expand('${libdir}/${LLVM_DIR}', d) + split_dbg_packages = do_split_packages(d, libllvm_libdir+'/.debug', '^lib(.*)\.so$', 'libllvm${LLVM_RELEASE}-%s-dbg', 'Split debug package for %s', allow_dirs=True) + split_packages = do_split_packages(d, libdir, '^lib(.*)\.so$', 'libllvm${LLVM_RELEASE}-%s', 'Split package for %s', allow_dirs=True, allow_links=True, recursive=True) + split_staticdev_packages = do_split_packages(d, libllvm_libdir, '^lib(.*)\.a$', 'libllvm${LLVM_RELEASE}-%s-staticdev', 'Split staticdev package for %s', allow_dirs=True) + if split_packages: + pn = d.getVar('PN', True) + d.appendVar('RDEPENDS_' + pn, ' '+' '.join(split_packages)) + d.appendVar('RDEPENDS_' + pn + '-dbg', ' '+' '.join(split_dbg_packages)) + d.appendVar('RDEPENDS_' + pn + '-staticdev', ' '+' '.join(split_staticdev_packages)) +} + +PACKAGESPLITFUNCS_prepend = "llvm_populate_packages " + +BBCLASSEXTEND = "native nativesdk" -- 2.13.3 -- _______________________________________________ Openembedded-core mailing list [email protected] <mailto:[email protected]> http://lists.openembedded.org/mailman/listinfo/openembedded-core <http://lists.openembedded.org/mailman/listinfo/openembedded-core>
Ross
I have refreshed the pull branch which should hopefully address mesa configure issue you are seeing along with llvm fix
Quoted 458 lines · Ross
Replicated without uninative, so it's not that.
Ross
On 29 July 2017 at 12:39, Burton, Ross <[email protected] <mailto:[email protected]>> wrote:
Fails like this for me: | FAILED: tools/llvm-cvtres/Opts.inc.tmp | cd /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build && /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -gen-opt-parser-defs -I /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/tools/llvm-cvtres -I /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/include /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/git/tools/llvm-cvtres/Opts.td -o tools/llvm-cvtres/Opts.inc.tmp -d tools/llvm-cvtres/Opts.inc.d | /bin/sh: 1: /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen: not found It is there though: $ ls -l /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -rwxr-xr-x 1 ross ross 49807224 Jul 29 12:25 /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen $ /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen -bash: /data/poky-tmp/master/build/work/corei7-64-poky-linux/llvm/5.0-r0/build/NATIVE/bin/llvm-tblgen: No such file or directory Might be related to having uninative enabled? Ross On 29 July 2017 at 09:35, Khem Raj <[email protected] <mailto:[email protected]>> wrote: Based on recipe from meta-oe and clang recipe from meta-clang Needed by mesa Fixes [YOCTO #11529] Signed-off-by: Khem Raj <[email protected] <mailto:[email protected]>> --- ...LibraryInfo-Undefine-libc-functions-if-th.patch | 93 ++++++++++++ .../0002-llvm-allow-env-override-of-exe-path.patch | 39 +++++ meta/recipes-devtools/llvm/llvm_git.bb <http://llvm_git.bb> | 166 +++++++++++++++++++++ 3 files changed, 298 insertions(+) create mode 100644 meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch create mode 100644 meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch create mode 100644 meta/recipes-devtools/llvm/llvm_git.bb <http://llvm_git.bb> diff --git a/meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch b/meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch new file mode 100644 index 0000000000..e251799259 --- /dev/null +++ b/meta/recipes-devtools/llvm/llvm/0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch @@ -0,0 +1,93 @@ +From 28293e48cf1a52004c6a78de448718441f9e05f9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <[email protected] <mailto:[email protected]>> +Date: Sat, 21 May 2016 00:33:20 +0000 +Subject: [PATCH 1/2] llvm: TargetLibraryInfo: Undefine libc functions if they + are macros + +musl defines some functions as macros and not inline functions +if this is the case then make sure to undefine them + +Signed-off-by: Khem Raj <[email protected] <mailto:[email protected]>> +--- +Upstream-Status: Pending + + include/llvm/Analysis/TargetLibraryInfo.def | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/include/llvm/Analysis/TargetLibraryInfo.def b/include/llvm/Analysis/TargetLibraryInfo.def +index 9cbe917c146..aff8419cf54 100644 +--- a/include/llvm/Analysis/TargetLibraryInfo.def ++++ b/include/llvm/Analysis/TargetLibraryInfo.def +@@ -656,6 +656,9 @@ TLI_DEFINE_STRING_INTERNAL("fmodl") + TLI_DEFINE_ENUM_INTERNAL(fopen) + TLI_DEFINE_STRING_INTERNAL("fopen") + /// FILE *fopen64(const char *filename, const char *opentype) ++#ifdef fopen64 ++#undef fopen64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fopen64) + TLI_DEFINE_STRING_INTERNAL("fopen64") + /// int fprintf(FILE *stream, const char *format, ...); +@@ -691,6 +694,9 @@ TLI_DEFINE_STRING_INTERNAL("fseek") + /// int fseeko(FILE *stream, off_t offset, int whence); + TLI_DEFINE_ENUM_INTERNAL(fseeko) + TLI_DEFINE_STRING_INTERNAL("fseeko") ++#ifdef fseeko64 ++#undef fseeko64 ++#endif + /// int fseeko64(FILE *stream, off64_t offset, int whence) + TLI_DEFINE_ENUM_INTERNAL(fseeko64) + TLI_DEFINE_STRING_INTERNAL("fseeko64") +@@ -701,6 +707,9 @@ TLI_DEFINE_STRING_INTERNAL("fsetpos") + TLI_DEFINE_ENUM_INTERNAL(fstat) + TLI_DEFINE_STRING_INTERNAL("fstat") + /// int fstat64(int filedes, struct stat64 *buf) ++#ifdef fstat64 ++#undef fstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(fstat64) + TLI_DEFINE_STRING_INTERNAL("fstat64") + /// int fstatvfs(int fildes, struct statvfs *buf); +@@ -716,6 +725,9 @@ TLI_DEFINE_STRING_INTERNAL("ftell") + TLI_DEFINE_ENUM_INTERNAL(ftello) + TLI_DEFINE_STRING_INTERNAL("ftello") + /// off64_t ftello64(FILE *stream) ++#ifdef ftello64 ++#undef ftello64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(ftello64) + TLI_DEFINE_STRING_INTERNAL("ftello64") + /// int ftrylockfile(FILE *file); +@@ -836,6 +848,9 @@ TLI_DEFINE_STRING_INTERNAL("logl") + TLI_DEFINE_ENUM_INTERNAL(lstat) + TLI_DEFINE_STRING_INTERNAL("lstat") + /// int lstat64(const char *path, struct stat64 *buf); ++#ifdef lstat64 ++#undef lstat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(lstat64) + TLI_DEFINE_STRING_INTERNAL("lstat64") + /// void *malloc(size_t size); +@@ -1055,6 +1070,9 @@ TLI_DEFINE_STRING_INTERNAL("sscanf") + TLI_DEFINE_ENUM_INTERNAL(stat) + TLI_DEFINE_STRING_INTERNAL("stat") + /// int stat64(const char *path, struct stat64 *buf); ++#ifdef stat64 ++#undef stat64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(stat64) + TLI_DEFINE_STRING_INTERNAL("stat64") + /// int statvfs(const char *path, struct statvfs *buf); +@@ -1184,6 +1202,9 @@ TLI_DEFINE_STRING_INTERNAL("times") + TLI_DEFINE_ENUM_INTERNAL(tmpfile) + TLI_DEFINE_STRING_INTERNAL("tmpfile") + /// FILE *tmpfile64(void) ++#ifdef tmpfile64 ++#undef tmpfile64 ++#endif + TLI_DEFINE_ENUM_INTERNAL(tmpfile64) + TLI_DEFINE_STRING_INTERNAL("tmpfile64") + /// int toascii(int c); +-- +2.13.1 + diff --git a/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch b/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch new file mode 100644 index 0000000000..832bd729ef --- /dev/null +++ b/meta/recipes-devtools/llvm/llvm/0002-llvm-allow-env-override-of-exe-path.patch @@ -0,0 +1,39 @@ +From d776487bac17650704614248d19d1e6b35775001 Mon Sep 17 00:00:00 2001 +From: Martin Kelly <[email protected] <mailto:[email protected]>> +Date: Fri, 19 May 2017 00:22:57 -0700 +Subject: [PATCH 2/2] llvm: allow env override of exe path + +When using a native llvm-config from inside a sysroot, we need llvm-config to +return the libraries, include directories, etc. from inside the sysroot rather +than from the native sysroot. Thus provide an env override for calling +llvm-config from a target sysroot. + +Signed-off-by: Martin Kelly <[email protected] <mailto:[email protected]>> +Signed-off-by: Khem Raj <[email protected] <mailto:[email protected]>> +--- +Upstream-Status: Pending + + tools/llvm-config/llvm-config.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp +index 08b096afb05..d8d7742744e 100644 +--- a/tools/llvm-config/llvm-config.cpp ++++ b/tools/llvm-config/llvm-config.cpp +@@ -225,6 +225,13 @@ Typical components:\n\ + + /// \brief Compute the path to the main executable. + std::string GetExecutablePath(const char *Argv0) { ++ // Hack for Yocto: we need to override the root path when we are using ++ // llvm-config from within a target sysroot. ++ const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH"); ++ if (Sysroot != nullptr) { ++ return Sysroot; ++ } ++ + // This just needs to be some symbol in the binary; C++ doesn't + // allow taking the address of ::main however. + void *P = (void *)(intptr_t)GetExecutablePath; +-- +2.13.1 + diff --git a/meta/recipes-devtools/llvm/llvm_git.bb <http://llvm_git.bb> b/meta/recipes-devtools/llvm/llvm_git.bb <http://llvm_git.bb> new file mode 100644 index 0000000000..7b51d2153f --- /dev/null +++ b/meta/recipes-devtools/llvm/llvm_git.bb <http://llvm_git.bb> @@ -0,0 +1,166 @@ +# Copyright (C) 2017 Khem Raj <[email protected] <mailto:[email protected]>> +# Released under the MIT license (see COPYING.MIT for the terms) + +DESCRIPTION = "The LLVM Compiler Infrastructure" +HOMEPAGE = "http://llvm.org" +LICENSE = "NCSA" +SECTION = "devel" + +LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=e825e017edc35cfd58e26116e5251771" + +DEPENDS = "libffi libxml2-native zlib ninja-native" + +RDEPENDS_${PN}_append_class-target = " ncurses-terminfo" + +inherit perlnative pythonnative cmake pkgconfig + +PROVIDES += "llvm${PV}" + +LLVM_RELEASE = "${PV}" +LLVM_DIR = "llvm${LLVM_RELEASE}" + +SRCREV = "9a5c333388cbb54a0ce3a67c4f539f5e590a089b" +PV = "5.0" +PATCH_VERSION = "0" +SRC_URI = "git://github.com/llvm-mirror/llvm.git;branch=release_50;protocol=http <http://github.com/llvm-mirror/llvm.git;branch=release_50;protocol=http> \ + file://0001-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch \ + file://0002-llvm-allow-env-override-of-exe-path.patch \ + " +S = "${WORKDIR}/git" + +LLVM_INSTALL_DIR = "${WORKDIR}/llvm-install" +def get_llvm_arch(bb, d, arch_var): + import re + a = d.getVar(arch_var, True) + if re.match('(i.86|athlon|x86.64)$', a): return 'X86' + elif re.match('arm$', a): return 'ARM' + elif re.match('armeb$', a): return 'ARM' + elif re.match('aarch64$', a): return 'AArch64' + elif re.match('aarch64_be$', a): return 'AArch64' + elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips' + elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC' + else: + bb.error("cannot map '%s' to a supported llvm architecture" % a) + return "" + +def get_llvm_target_arch(bb, d): + return get_llvm_arch(bb, d, 'TARGET_ARCH') +# +# Default to build all OE-Core supported target arches (user overridable). +# +LLVM_TARGETS ?= "${@get_llvm_target_arch(bb, d)}" +LLVM_TARGETS_prepend_x86 = "AMDGPU;" +LLVM_TARGETS_prepend_x86-64 = "AMDGPU;" + +EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ + -DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \ + -DLLVM_ENABLE_PIC=ON \ + -DLLVM_BINDINGS_LIST='' \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_ENABLE_FFI=ON \ + -DFFI_INCLUDE_DIR=$(pkg-config --variable=includedir libffi) \ + -DLLVM_OPTIMIZED_TABLEGEN=ON \ + -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS}" \ + -DCMAKE_CROSSCOMPILING:BOOL=ON \ + -G Ninja \ + " +EXTRA_OECMAKE_remove_class-native = "-DCMAKE_CROSSCOMPILING:BOOL=ON" + +do_configure_prepend() { +# Fix paths in llvm-config + sed -i "s|sys::path::parent_path(CurrentPath))\.str()|sys::path::parent_path(sys::path::parent_path(CurrentPath))).str()|g" ${S}/tools/llvm-config/llvm-config.cpp + sed -ri "s#/(bin|include|lib)(/?\")#/\1/${LLVM_DIR}\2#g" ${S}/tools/llvm-config/llvm-config.cpp + sed -ri "s#lib/${LLVM_DIR}#${baselib}/${LLVM_DIR}#g" ${S}/tools/llvm-config/llvm-config.cpp +} + +do_compile() { + NINJA_STATUS="[%p] " ninja -v ${PARALLEL_MAKE} +} + +do_install() { + NINJA_STATUS="[%p] " DESTDIR=${LLVM_INSTALL_DIR} ninja -v install + install -D -m 0755 ${B}/NATIVE/bin/llvm-config ${D}${libdir}/${LLVM_DIR}/llvm-config-host + + install -d ${D}${bindir}/${LLVM_DIR} + cp -r ${LLVM_INSTALL_DIR}${bindir}/* ${D}${bindir}/${LLVM_DIR}/ + + install -d ${D}${includedir}/${LLVM_DIR} + cp -r ${LLVM_INSTALL_DIR}${includedir}/* ${D}${includedir}/${LLVM_DIR}/ + + install -d ${D}${libdir}/${LLVM_DIR} + + # The LLVM sources have "/lib" embedded and so we cannot completely rely on the ${libdir} variable + if [ -d ${LLVM_INSTALL_DIR}${libdir}/ ]; then + cp -r ${LLVM_INSTALL_DIR}${libdir}/* ${D}${libdir}/${LLVM_DIR}/ + elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib ]; then + cp -r ${LLVM_INSTALL_DIR}${prefix}/lib/* ${D}${libdir}/${LLVM_DIR}/ + elif [ -d ${LLVM_INSTALL_DIR}${prefix}/lib64 ]; then + cp -r ${LLVM_INSTALL_DIR}${prefix}/lib64/* ${D}${libdir}/${LLVM_DIR}/ + fi + + # Remove unnecessary cmake files + rm -rf ${D}${libdir}/${LLVM_DIR}/cmake + + ln -s ${LLVM_DIR}/libLLVM-${PV}${SOLIBSDEV} ${D}${libdir}/libLLVM-${PV}${SOLIBSDEV} + + # We'll have to delete the libLLVM.so due to multiple reasons... + rm -rf ${D}${libdir}/${LLVM_DIR}/libLLVM.so + rm -rf ${D}${libdir}/${LLVM_DIR}/libLTO.so +} + +PACKAGES += "${PN}-bugpointpasses ${PN}-llvmhello" +ALLOW_EMPTY_${PN} = "1" +ALLOW_EMPTY_${PN}-staticdev = "1" +FILES_${PN} = "" +FILES_${PN}-staticdev = "" +FILES_${PN}-dbg = " \ + ${bindir}/${LLVM_DIR}/.debug \ + ${libdir}/${LLVM_DIR}/.debug/BugpointPasses.so \ + ${libdir}/${LLVM_DIR}/.debug/LLVMHello.so \ + ${libdir}/${LLVM_DIR}/.debug/libLTO.so* \ + ${libdir}/${LLVM_DIR}/.debug/llvm-config-host \ + /usr/src/debug \ +" + +FILES_${PN}-dev = " \ + ${bindir}/${LLVM_DIR} \ + ${includedir}/${LLVM_DIR} \ + ${libdir}/${LLVM_DIR}/llvm-config-host \ +" + +RRECOMMENDS_${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello" + +FILES_${PN}-bugpointpasses = "\ + ${libdir}/${LLVM_DIR}/BugpointPasses.so \ +" +FILES_${PN} += "\ + ${libdir}/${LLVM_DIR}/libLTO.so.* \ +" + +FILES_${PN}-llvmhello = "\ + ${libdir}/${LLVM_DIR}/LLVMHello.so \ +" + +PACKAGES_DYNAMIC = "^libllvm${LLVM_RELEASE}-.*$" +NOAUTOPACKAGEDEBUG = "1" + +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE}.${PATCH_VERSION} += "dev-so" +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm-${LLVM_RELEASE} += "dev-so" +INSANE_SKIP_${MLPREFIX}libllvm${LLVM_RELEASE}-llvm += "dev-so" + +python llvm_populate_packages() { + libdir = bb.data.expand('${libdir}', d) + libllvm_libdir = bb.data.expand('${libdir}/${LLVM_DIR}', d) + split_dbg_packages = do_split_packages(d, libllvm_libdir+'/.debug', '^lib(.*)\.so$', 'libllvm${LLVM_RELEASE}-%s-dbg', 'Split debug package for %s', allow_dirs=True) + split_packages = do_split_packages(d, libdir, '^lib(.*)\.so$', 'libllvm${LLVM_RELEASE}-%s', 'Split package for %s', allow_dirs=True, allow_links=True, recursive=True) + split_staticdev_packages = do_split_packages(d, libllvm_libdir, '^lib(.*)\.a$', 'libllvm${LLVM_RELEASE}-%s-staticdev', 'Split staticdev package for %s', allow_dirs=True) + if split_packages: + pn = d.getVar('PN', True) + d.appendVar('RDEPENDS_' + pn, ' '+' '.join(split_packages)) + d.appendVar('RDEPENDS_' + pn + '-dbg', ' '+' '.join(split_dbg_packages)) + d.appendVar('RDEPENDS_' + pn + '-staticdev', ' '+' '.join(split_staticdev_packages)) +} + +PACKAGESPLITFUNCS_prepend = "llvm_populate_packages " + +BBCLASSEXTEND = "native nativesdk" -- 2.13.3 -- _______________________________________________ Openembedded-core mailing list [email protected] <mailto:[email protected]> http://lists.openembedded.org/mailman/listinfo/openembedded-core <http://lists.openembedded.org/mailman/listinfo/openembedded-core>
PATCH v3 4/4 mesa: Fix build when building with llvmpipe
In reply to Khem RajAdd following in mesa.inc to enable llvmpipe
PACKAGECONFIG_append_x86 = " gallium-llvm gallium r600" PACKAGECONFIG_append_x86-64 = " gallium-llvm gallium r600"
This would enable llvmpipe for swrast, to check run this
root@qemux86:~# glxinfo | grep llvm
Device: llvmpipe (LLVM 5.0, 128 bits) (0xffffffff)
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 5.0, 128 bits)Backport patches to support llvm 5.0.0+
Add a patch to understand llvm version when llvm is build from git/svn
--- ...1-ac-fix-build-after-LLVM-5.0-SVN-r300718.patch | 40 ++++++++++++++++++ ...allivm-Fix-build-against-LLVM-SVN-r302589.patch | 49 ++++++++++++++++++++++ .../mesa/files/llvm-config-version.patch | 23 ++++++++++ meta/recipes-graphics/mesa/mesa.inc | 7 +++- meta/recipes-graphics/mesa/mesa_17.1.5.bb | 3 ++ 5 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 meta/recipes-graphics/mesa/files/0001-ac-fix-build-after-LLVM-5.0-SVN-r300718.patch create mode 100644 meta/recipes-graphics/mesa/files/0002-gallivm-Fix-build-against-LLVM-SVN-r302589.patch create mode 100644 meta/recipes-graphics/mesa/files/llvm-config-version.patch
meta/recipes-graphics/mesa/files/0001-ac-fix-build-after-LLVM-5.0-SVN-r300718.patch new file +40 -0
@@ -0,0 +1,40 @@ +From 9861437e58fdd0de01193a102608d34e5952953f Mon Sep 17 00:00:00 2001 +From: Christoph Haag <[email protected]> +Date: Thu, 20 Apr 2017 10:34:18 +0200 +Subject: [PATCH 1/2] ac: fix build after LLVM 5.0 SVN r300718 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +v2: previously getWithDereferenceableBytes() exists, but addAttr() doesn't take that type + +Signed-off-by: Christoph Haag <[email protected]> +Reviewed-by: Nicolai Hähnle <[email protected]> +Tested-and-reviewed-by: Mike Lothian <[email protected]> +--- +Upstream-Status: Backport + + src/amd/common/ac_llvm_helper.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/amd/common/ac_llvm_helper.cpp b/src/amd/common/ac_llvm_helper.cpp +index d9ea4b1..11fa809 100644 +--- a/src/amd/common/ac_llvm_helper.cpp ++++ b/src/amd/common/ac_llvm_helper.cpp +@@ -44,9 +44,13 @@ typedef AttributeSet AttributeList; + void ac_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes) + { + llvm::Argument *A = llvm::unwrap<llvm::Argument>(val); ++#if HAVE_LLVM < 0x0500 + llvm::AttrBuilder B; + B.addDereferenceableAttr(bytes); + A->addAttr(llvm::AttributeList::get(A->getContext(), A->getArgNo() + 1, B)); ++#else ++ A->addAttr(llvm::Attribute::getWithDereferenceableBytes(A->getContext(), bytes)); ++#endif + } + + bool ac_is_sgpr_param(LLVMValueRef arg) +-- +2.13.3 +
meta/recipes-graphics/mesa/files/0002-gallivm-Fix-build-against-LLVM-SVN-r302589.patch new file +49 -0
49 lines not on this page · raw message
meta/recipes-graphics/mesa/files/llvm-config-version.patch new file +23 -0
@@ -0,0 +1,23 @@ +When building llvm from git or svn it embeds the svn/git revision into internal version string + +$ /mnt/a/oe/build/tmp/work/corei7-64-bec-linux/mesa/2_17.1.5-r0/recipe-sysroot/usr/lib/llvm5.0/llvm-config-host --version +5.0.0git-9a5c333388c + +We need to ignore everything after 5.0.0 which is what the cut cmd is doing + +Upstream-Status: Pending +Signed-off-by: Khem Raj <[email protected]> + +Index: mesa-17.1.5/configure.ac +=================================================================== +--- mesa-17.1.5.orig/configure.ac ++++ mesa-17.1.5/configure.ac +@@ -2560,7 +2560,7 @@ if test "x$enable_llvm" = xyes; then + dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823) + if test "x$enable_llvm_shared_libs" = xyes; then + dnl We can't use $LLVM_VERSION because it has 'svn' stripped out, +- LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version` ++ LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version|cut -c1-5` + AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes]) + + if test "x$llvm_have_one_so" = xyes; then
meta/recipes-graphics/mesa/mesa.inc +5 -2
@@ -25,8 +25,11 @@ REQUIRED_DISTRO_FEATURES = "opengl" PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)} \ ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'drm', '', d)}" +export LLVM_CONFIG = "${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE}/llvm-config-host" + EXTRA_OECONF = "--enable-shared-glapi \ - --with-llvm-prefix=${STAGING_BINDIR_NATIVE} \ + --disable-opencl \ + --with-llvm-prefix=${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE} \ --with-platforms='${PLATFORMS}'" PACKAGECONFIG ??= "gbm egl gles dri \
@@ -68,7 +71,7 @@ GALLIUMDRIVERS_append_x86 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm GALLIUMDRIVERS_append_x86-64 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}" # keep --with-gallium-drivers separate, because when only one of gallium versions is enabled, other 2 were adding --without-gallium-drivers PACKAGECONFIG[gallium] = "--enable-texture-float --with-gallium-drivers=${GALLIUMDRIVERS}, --without-gallium-drivers" -MESA_LLVM_RELEASE ?= "3.3" +MESA_LLVM_RELEASE ?= "5.0" PACKAGECONFIG[gallium-llvm] = "--enable-llvm --enable-llvm-shared-libs, --disable-llvm, llvm${MESA_LLVM_RELEASE} \ ${@'elfutils' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}" export WANT_LLVM_RELEASE = "${MESA_LLVM_RELEASE}"
meta/recipes-graphics/mesa/mesa_17.1.5.bb +3 -0
@@ -7,6 +7,9 @@ SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \ file://0002-hardware-gloat.patch \ file://0001-mapi-Only-install-khrplatform.h-with-EGL-or-GLES.patch \ file://vulkan-mkdir.patch \ + file://llvm-config-version.patch \ + file://0001-ac-fix-build-after-LLVM-5.0-SVN-r300718.patch \ + file://0002-gallivm-Fix-build-against-LLVM-SVN-r302589.patch \ " SRC_URI[md5sum] = "6cf936fbcaadd98924298a7009e8265d" SRC_URI[sha256sum] = "378516b171712687aace4c7ea8b37c85895231d7a6d61e1e27362cf6034fded9"
Signature · 1 line
2.13.3
✗ patchtest: failure for llvm: Add recipe for 5.0 (rev3)
In reply to Khem Raj== Series Details ==
Series: llvm: Add recipe for 5.0 (rev3)
Revision: 3
URL : https://patchwork.openembedded.org/series/7983/
State : failure
== Summary ==
Thank you for submitting this patch series to OpenEmbedded Core. This is an automated response. Several tests have been executed on the proposed series by patchtest resulting in the following failures:
* Issue A patch file has been added, but does not have a Signed-off-by tag [test_signed_off_by_presence]
Suggested fix Sign off the added patch file (meta/recipes-graphics/mesa/files/0002-gallivm-Fix-build-against-LLVM-SVN-r302589.patch)
If you believe any of these test results are incorrect, please reply to the mailing list ([email protected]) raising your concerns. Otherwise we would appreciate you correcting the issues and submitting a new version of the patchset if applicable. Please ensure you add/increment the version number when sending the new version (i.e. [PATCH] -> [PATCH v2] -> [PATCH v3] -> ...).
---
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest Test suite: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe