aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Driver/Driver.cpp20
-rw-r--r--test/Driver/resource-dir.cpp10
2 files changed, 21 insertions, 9 deletions
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
index 652046fce4..140c8799f1 100644
--- a/lib/Driver/Driver.cpp
+++ b/lib/Driver/Driver.cpp
@@ -59,15 +59,6 @@ Driver::Driver(StringRef ClangExecutable,
Name = llvm::sys::path::stem(ClangExecutable);
Dir = llvm::sys::path::parent_path(ClangExecutable);
-
- // Compute the path to the resource directory.
- StringRef ClangResourceDir(CLANG_RESOURCE_DIR);
- SmallString<128> P(Dir);
- if (ClangResourceDir != "")
- llvm::sys::path::append(P, ClangResourceDir);
- else
- llvm::sys::path::append(P, "..", "lib", "clang", CLANG_VERSION_STRING);
- ResourceDir = P.str();
}
Driver::~Driver() {
@@ -291,6 +282,17 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {
if (Args->hasArg(options::OPT_nostdlib))
UseStdLib = false;
+ // Compute the path to the resource directory. We used to do this in
+ // Driver::Driver(), but that's not right, as command line args (such as
+ // ccc-install-dir) can change 'Dir'.
+ StringRef ClangResourceDir(CLANG_RESOURCE_DIR);
+ SmallString<128> P(Dir);
+ if (!ClangResourceDir.empty())
+ llvm::sys::path::append(P, ClangResourceDir);
+ else
+ llvm::sys::path::append(P, "..", "lib", "clang", CLANG_VERSION_STRING);
+ ResourceDir = P.str();
+
// Perform the default argument translations.
DerivedArgList *TranslatedArgs = TranslateInputArgs(*Args);
diff --git a/test/Driver/resource-dir.cpp b/test/Driver/resource-dir.cpp
new file mode 100644
index 0000000000..484d7f5576
--- /dev/null
+++ b/test/Driver/resource-dir.cpp
@@ -0,0 +1,10 @@
+// RUN: %clang %s -fsyntax-only -### 2> %t.log
+// RUN: FileCheck %s --check-prefix=CHECK-DEFAULT < %t.log
+
+// CHECK-DEFAULT: "-resource-dir" "{{.+}}/../lib/clang/{{.+}}"
+
+// RUN: %clang %s -fsyntax-only -ccc-install-dir /my/install/dir -### 2> %t.log
+// RUN: FileCheck %s --check-prefix=CHECK-INSTALL-DIR < %t.log
+// CHECK-INSTALL-DIR: "-resource-dir" "/my/install/dir/../lib/clang
+
+void foo(void) {}