diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2012-01-26 01:31:38 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2012-01-26 01:31:38 +0000 |
commit | b56900aa86aa535fb1f060f5935d1e209e45d907 (patch) | |
tree | 0d1d5db070c2f9508eae0d7c01a427b2c9d6fa4c /tools/llvm-config | |
parent | 230cdab2205d051cc11c565b69ca8c2106904a76 (diff) | |
download | external_llvm-b56900aa86aa535fb1f060f5935d1e209e45d907.zip external_llvm-b56900aa86aa535fb1f060f5935d1e209e45d907.tar.gz external_llvm-b56900aa86aa535fb1f060f5935d1e209e45d907.tar.bz2 |
llvm-config: Add support for CMake build trees in which the build
mode does not form part of the path.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149010 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-config')
-rw-r--r-- | tools/llvm-config/llvm-config.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp index 2bb0aeb..641c2c4 100644 --- a/tools/llvm-config/llvm-config.cpp +++ b/tools/llvm-config/llvm-config.cpp @@ -169,7 +169,8 @@ int main(int argc, char **argv) { // and from an installed path. We try and auto-detect which case we are in so // that we can report the correct information when run from a development // tree. - bool IsInDevelopmentTree, DevelopmentTreeLayoutIsCMakeStyle; + bool IsInDevelopmentTree; + enum { MakefileStyle, CMakeStyle, CMakeBuildModeStyle } DevelopmentTreeLayout; llvm::SmallString<256> CurrentPath(GetExecutablePath(argv[0]).str()); std::string CurrentExecPrefix; std::string ActiveObjRoot; @@ -185,7 +186,7 @@ int main(int argc, char **argv) { // symbolic links, but is good enough. if (CurrentExecPrefix == std::string(LLVM_OBJ_ROOT) + "/" + LLVM_BUILDMODE) { IsInDevelopmentTree = true; - DevelopmentTreeLayoutIsCMakeStyle = false; + DevelopmentTreeLayout = MakefileStyle; // 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 @@ -195,9 +196,13 @@ int main(int argc, char **argv) { } else { ActiveObjRoot = LLVM_OBJ_ROOT; } + } else if (CurrentExecPrefix == std::string(LLVM_OBJ_ROOT)) { + IsInDevelopmentTree = true; + DevelopmentTreeLayout = CMakeStyle; + ActiveObjRoot = LLVM_OBJ_ROOT; } else if (CurrentExecPrefix == std::string(LLVM_OBJ_ROOT) + "/bin") { IsInDevelopmentTree = true; - DevelopmentTreeLayoutIsCMakeStyle = true; + DevelopmentTreeLayout = CMakeBuildModeStyle; ActiveObjRoot = LLVM_OBJ_ROOT; } else { IsInDevelopmentTree = false; @@ -213,12 +218,19 @@ int main(int argc, char **argv) { // CMake organizes the products differently than a normal prefix style // layout. - if (DevelopmentTreeLayoutIsCMakeStyle) { - ActiveBinDir = ActiveObjRoot + "/bin/" + LLVM_BUILDMODE; - ActiveLibDir = ActiveObjRoot + "/lib/" + LLVM_BUILDMODE; - } else { + switch (DevelopmentTreeLayout) { + case MakefileStyle: ActiveBinDir = ActiveObjRoot + "/" + LLVM_BUILDMODE + "/bin"; ActiveLibDir = ActiveObjRoot + "/" + LLVM_BUILDMODE + "/lib"; + break; + case CMakeStyle: + ActiveBinDir = ActiveObjRoot + "/bin"; + ActiveLibDir = ActiveObjRoot + "/lib"; + break; + case CMakeBuildModeStyle: + ActiveBinDir = ActiveObjRoot + "/bin/" + LLVM_BUILDMODE; + ActiveLibDir = ActiveObjRoot + "/lib/" + LLVM_BUILDMODE; + break; } // We need to include files from both the source and object trees. |