summaryrefslogtreecommitdiff
path: root/tools/llvm-config
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2012-01-26 01:31:38 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2012-01-26 01:31:38 +0000
commitb56900aa86aa535fb1f060f5935d1e209e45d907 (patch)
tree0d1d5db070c2f9508eae0d7c01a427b2c9d6fa4c /tools/llvm-config
parent230cdab2205d051cc11c565b69ca8c2106904a76 (diff)
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.cpp26
1 files changed, 19 insertions, 7 deletions
diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
index 2bb0aebc80e..641c2c4e69c 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.