[cfe-commits] r140409 - in /cfe/trunk: docs/tools/clang.pod include/clang/Driver/Options.td lib/Driver/Driver.cpp

Daniel Dunbar daniel at zuster.org
Fri Sep 23 13:33:41 PDT 2011


Author: ddunbar
Date: Fri Sep 23 15:33:41 2011
New Revision: 140409

URL: http://llvm.org/viewvc/llvm-project?rev=140409&view=rev
Log:
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.

Modified:
    cfe/trunk/docs/tools/clang.pod
    cfe/trunk/include/clang/Driver/Options.td
    cfe/trunk/lib/Driver/Driver.cpp

Modified: cfe/trunk/docs/tools/clang.pod
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/tools/clang.pod?rev=140409&r1=140408&r2=140409&view=diff
==============================================================================
--- cfe/trunk/docs/tools/clang.pod (original)
+++ cfe/trunk/docs/tools/clang.pod Fri Sep 23 15:33:41 2011
@@ -407,6 +407,13 @@
 
 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
 
 

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=140409&r1=140408&r2=140409&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Fri Sep 23 15:33:41 2011
@@ -855,6 +855,8 @@
 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]>;

Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=140409&r1=140408&r2=140409&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Fri Sep 23 15:33:41 2011
@@ -323,6 +323,13 @@
   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.





More information about the cfe-commits mailing list