From 3c7d61adb41a5de270ea3817353e395ced5ac893 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Thu, 16 Mar 2017 20:17:44 -0700 Subject: clang: Fix cross compiler search path for compiler-rt It was looking into compiler install area but for OE cross compiling scenario the compiler runtime is installed into target sysroot, Fix clang to look into sysroot Signed-off-by: Khem Raj --- ...inside-the-target-sysroot-for-compiler-ru.patch | 41 ++++++++++++++++++++++ recipes-devtools/clang/clang_git.bb | 1 + 2 files changed, 42 insertions(+) create mode 100644 recipes-devtools/clang/clang/0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch diff --git a/recipes-devtools/clang/clang/0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch b/recipes-devtools/clang/clang/0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch new file mode 100644 index 0000000..a887588 --- /dev/null +++ b/recipes-devtools/clang/clang/0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch @@ -0,0 +1,41 @@ +From 63b01a5bf84c836a42b792cdee5ac6322296ae0b Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 16 Mar 2017 17:06:45 -0700 +Subject: [PATCH 5/5] clang: Look inside the target sysroot for compiler + runtime + +In OE compiler-rt and libc++ are built and staged into target +sysroot and not into resourcedir which is relative to clang +driver installation where the libraries are not instlled + +Specific to cross compiling the way yocto/OE works + +Signed-off-by: Khem Raj +--- + lib/Driver/ToolChain.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +Index: clang/lib/Driver/ToolChain.cpp +=================================================================== +--- clang.orig/lib/Driver/ToolChain.cpp ++++ clang/lib/Driver/ToolChain.cpp +@@ -10,6 +10,7 @@ + #include "clang/Driver/ToolChain.h" + #include "Tools.h" + #include "clang/Basic/ObjCRuntime.h" ++#include "clang/Basic/Version.h" + #include "clang/Config/config.h" + #include "clang/Driver/Action.h" + #include "clang/Driver/Driver.h" +@@ -306,7 +307,10 @@ std::string ToolChain::getCompilerRT(con + const char *Suffix = Shared ? (Triple.isOSWindows() ? ".dll" : ".so") + : (IsITANMSVCWindows ? ".lib" : ".a"); + +- SmallString<128> Path(getDriver().ResourceDir); ++ SmallString<128> Path(getDriver().SysRoot); ++ StringRef ClangLibdirSuffix(CLANG_LIBDIR_SUFFIX); ++ llvm::sys::path::append(Path, "/usr/", Twine("lib") + ClangLibdirSuffix, "clang", ++ CLANG_VERSION_STRING); + StringRef OSLibName = Triple.isOSFreeBSD() ? "freebsd" : getOS(); + llvm::sys::path::append(Path, "lib", OSLibName); + llvm::sys::path::append(Path, Prefix + Twine("clang_rt.") + Component + "-" + diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb index 29e2e8f..798b9c7 100644 --- a/recipes-devtools/clang/clang_git.bb +++ b/recipes-devtools/clang/clang_git.bb @@ -30,6 +30,7 @@ SRC_URI += "\ file://0002-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch;patchdir=tools/clang \ file://0003-clang-musl-ppc-does-not-support-128-bit-long-double.patch;patchdir=tools/clang \ file://0004-clang-Prepend-trailing-to-sysroot.patch;patchdir=tools/clang \ + file://0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch;patchdir=tools/clang \ " SRCREV_FORMAT = "llvm_clang" -- cgit v1.2.3-54-g00ecf