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
Show commands to run and use verbose output.
+=item B<--working-directory>
+
+Use the given argument as the effective working directory to run the compiler
+in. This is useful for running the compiler as if in a specific working
+directory without the overhead of having to change directory using an auxiliary
+process.
+
=back
def _version : Flag<"--version">;
def _warn__EQ : Joined<"--warn-=">, Alias<W_Joined>;
def _warn_ : Joined<"--warn-">, Alias<W_Joined>;
+def _working_directory : Separate<"--working-directory">,
+ HelpText<"Use the given argument as the effective working directory">;
def _write_dependencies : Flag<"--write-dependencies">, Alias<MD>;
def _write_user_dependencies : Flag<"--write-user-dependencies">, Alias<MMD>;
def _ : Joined<"--">, Flags<[Unsupported]>;
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.