summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2018-10-11 10:04:15 +0000
committerHans Wennborg <hans@hanshq.net>2018-10-11 10:04:15 +0000
commitfe4bfe80ffeb21b04f8bbfde69ab8b63fdc7441a (patch)
tree31a0bdb2cec537bfd230ec1a57447506179414c5 /clang/lib
parent18e07bb822959b5bf3fbbeae02eb76d219d4d5a5 (diff)
downloadbcm5719-llvm-fe4bfe80ffeb21b04f8bbfde69ab8b63fdc7441a.tar.gz
bcm5719-llvm-fe4bfe80ffeb21b04f8bbfde69ab8b63fdc7441a.zip
clang-cl: Add /showFilenames option (PR31957)
Add a /showFilenames option for users who want clang to echo the currently compiled filename. MSVC does this echoing by default, and it's useful for showing progress in build systems that doesn't otherwise provide any progress report, such as MSBuild. Differential Revision: https://reviews.llvm.org/D52773 llvm-svn: 344234
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/Job.cpp6
-rw-r--r--clang/lib/Driver/ToolChains/Clang.cpp7
2 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Driver/Job.cpp b/clang/lib/Driver/Job.cpp
index bd1a9bd8e3e..114efe1998c 100644
--- a/clang/lib/Driver/Job.cpp
+++ b/clang/lib/Driver/Job.cpp
@@ -315,6 +315,12 @@ void Command::setEnvironment(llvm::ArrayRef<const char *> NewEnvironment) {
int Command::Execute(ArrayRef<llvm::Optional<StringRef>> Redirects,
std::string *ErrMsg, bool *ExecutionFailed) const {
+ if (PrintInputFilenames) {
+ for (const char *Arg : InputFilenames)
+ llvm::outs() << llvm::sys::path::filename(Arg) << "\n";
+ llvm::outs().flush();
+ }
+
SmallVector<const char*, 128> Argv;
Optional<ArrayRef<StringRef>> Env;
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 127f8069622..4d2cb14a51b 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -5067,6 +5067,13 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
}
+ // Make the compile command echo its inputs for /showFilenames.
+ if (Output.getType() == types::TY_Object &&
+ Args.hasFlag(options::OPT__SLASH_showFilenames,
+ options::OPT__SLASH_showFilenames_, false)) {
+ C.getJobs().getJobs().back()->setPrintInputFilenames(true);
+ }
+
if (Arg *A = Args.getLastArg(options::OPT_pg))
if (!shouldUseFramePointer(Args, Triple))
D.Diag(diag::err_drv_argument_not_allowed_with) << "-fomit-frame-pointer"
OpenPOWER on IntegriCloud