aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2011-09-23 20:33:41 +0000
committerDaniel Dunbar <daniel@zuster.org>2011-09-23 20:33:41 +0000
commit63bc59bf22b8f2e672fcf3904fe33993f69e006f (patch)
tree0e64ffd0f6e47269b0cd4356fbd8aa550a0289c4 /lib/Driver/Driver.cpp
parent710e0c41ae0db3be3eec88fc47725da61e4bdef4 (diff)
Driver: Add a --working-directory option which can be used to cause the compiler
to operate "as if" in a certain working directory. - For now, we just implement this by changing the actual working directory, but eventually we would want to handle this transparently. This is useful to avoid an extra exec() pair in some situations, and will be something we would want to support for more flexibility in using the Clang libraries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140409 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Driver.cpp')
-rw-r--r--lib/Driver/Driver.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
index ec9295d6fb..d64eab5999 100644
--- a/lib/Driver/Driver.cpp
+++ b/lib/Driver/Driver.cpp
@@ -323,6 +323,13 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {
if (Args->hasArg(options::OPT_nostdlib))
UseStdLib = false;
+ // Honor --working-directory. Eventually we want to handle this completely
+ // internally to support good use as a library, but for now we just change our
+ // working directory.
+ if (const Arg *A = Args->getLastArg(options::OPT__working_directory)) {
+ ::chdir(A->getValue(*Args));
+ }
+
Host = GetHostInfo(DefaultHostTriple.c_str());
// Perform the default argument translations.