From c2f9c8984af4fa82b42408c0ce1c791c487502d0 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Fri, 11 Nov 2011 22:59:47 +0000 Subject: llvm-config-2: Detect when we are running out of a BuildTools development tree, so that we can always provide library/include information for the real build directory. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144420 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-config-2/llvm-config.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'tools') diff --git a/tools/llvm-config-2/llvm-config.cpp b/tools/llvm-config-2/llvm-config.cpp index 30ace56f4c..fddd481230 100644 --- a/tools/llvm-config-2/llvm-config.cpp +++ b/tools/llvm-config-2/llvm-config.cpp @@ -174,6 +174,7 @@ int main(int argc, char **argv) { bool IsInDevelopmentTree, DevelopmentTreeLayoutIsCMakeStyle; llvm::SmallString<256> CurrentPath(GetExecutablePath(argv[0]).str()); std::string CurrentExecPrefix; + std::string ActiveObjRoot; // Create an absolute path, and pop up one directory (we expect to be inside a // bin dir). @@ -187,9 +188,19 @@ int main(int argc, char **argv) { if (CurrentExecPrefix == std::string(LLVM_OBJ_ROOT) + "/" + LLVM_BUILDMODE) { IsInDevelopmentTree = true; DevelopmentTreeLayoutIsCMakeStyle = false; + + // If we are in a development tree, then check if we are in a BuildTools + // directory. This indicates we are built for the build triple, but we + // always want to provide information for the host triple. + if (sys::path::filename(LLVM_OBJ_ROOT) == "BuildTools") { + ActiveObjRoot = sys::path::parent_path(LLVM_OBJ_ROOT); + } else { + ActiveObjRoot = LLVM_OBJ_ROOT; + } } else if (CurrentExecPrefix == std::string(LLVM_OBJ_ROOT) + "/bin") { IsInDevelopmentTree = true; DevelopmentTreeLayoutIsCMakeStyle = true; + ActiveObjRoot = LLVM_OBJ_ROOT; } else { IsInDevelopmentTree = false; } @@ -204,18 +215,18 @@ int main(int argc, char **argv) { // CMake organizes the products differently than a normal prefix style // layout. if (DevelopmentTreeLayoutIsCMakeStyle) { - ActiveIncludeDir = std::string(LLVM_OBJ_ROOT) + "/include"; - ActiveBinDir = std::string(LLVM_OBJ_ROOT) + "/bin/" + LLVM_BUILDMODE; - ActiveLibDir = std::string(LLVM_OBJ_ROOT) + "/lib/" + LLVM_BUILDMODE; + ActiveIncludeDir = ActiveObjRoot + "/include"; + ActiveBinDir = ActiveObjRoot + "/bin/" + LLVM_BUILDMODE; + ActiveLibDir = ActiveObjRoot + "/lib/" + LLVM_BUILDMODE; } else { - ActiveIncludeDir = std::string(LLVM_OBJ_ROOT) + "/include"; - ActiveBinDir = std::string(LLVM_OBJ_ROOT) + "/" + LLVM_BUILDMODE + "/bin"; - ActiveLibDir = std::string(LLVM_OBJ_ROOT) + "/" + LLVM_BUILDMODE + "/lib"; + ActiveIncludeDir = ActiveObjRoot + "/include"; + ActiveBinDir = ActiveObjRoot + "/" + LLVM_BUILDMODE + "/bin"; + ActiveLibDir = ActiveObjRoot + "/" + LLVM_BUILDMODE + "/lib"; } // We need to include files from both the source and object trees. ActiveIncludeOption = ("-I" + ActiveIncludeDir + " " + - "-I" + LLVM_OBJ_ROOT + "/include"); + "-I" + ActiveObjRoot + "/include"); } else { ActivePrefix = CurrentExecPrefix; ActiveIncludeDir = ActivePrefix + "/include"; -- cgit v1.2.3