From fbfaab8d1dfa23aff4e4adb0e92dd4ff6467e453 Mon Sep 17 00:00:00 2001 From: Jun Yuan Tan Date: Tue, 9 Nov 2021 10:05:00 +0800 Subject: [PATCH 05/34] 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. Rebased to LLVM 14.0.0 by Jun Yuan Tan Signed-off-by: Martin Kelly Signed-off-by: Khem Raj Signed-off-by: Jun Yuan Tan --- llvm/tools/llvm-config/llvm-config.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp index 1a2f04552d13..019d8f2b5c5e 100644 --- a/llvm/tools/llvm-config/llvm-config.cpp +++ b/llvm/tools/llvm-config/llvm-config.cpp @@ -247,6 +247,13 @@ Typical components:\n\ /// 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.33.1