hans added a comment.
In https://reviews.llvm.org/D52773#1252584, @zturner wrote:
> Canyou add a test that demonstrates that multiple input files on the command
> line will print all of them?
Will do.
> Also does this really need to be a cc1 arg? Why not just print it in the
> driver?
Yeah, I'll give printing from the driver a try.
================
Comment at: include/clang/Driver/CLCompatOptions.td:163
+ HelpText<"Print the name of each compiled file">,
+ Alias<echo_main_file_name>;
def _SLASH_source_charset : CLCompileJoined<"source-charset:">,
----------------
thakis wrote:
> Can you add /showFilenames- (a no-op) too, for symmetry?
Will do. Actually not just a no-op, but the last option should win.
================
Comment at: lib/Driver/ToolChains/Clang.cpp:3533-3534
CmdArgs.push_back(getBaseInputName(Args, Input));
+ if (Arg *A = Args.getLastArg(options::OPT_echo_main_file_name))
+ A->render(Args, CmdArgs);
----------------
rnk wrote:
> Is a -cc1 flag actually necessary? I was imagining we'd print it in the
> driver before we launch the compile job.
Yeah, that's probably better, but will take a bit more work to keep track of if
and what to print in the compile job. I'll give it a try.
================
Comment at: lib/Frontend/CompilerInvocation.cpp:792
Opts.MainFileName = Args.getLastArgValue(OPT_main_file_name);
+ if (Args.hasArg(OPT_echo_main_file_name))
+ llvm::outs() << Opts.MainFileName << "\n";
----------------
zturner wrote:
> steveire wrote:
> > zturner wrote:
> > > zturner wrote:
> > > > steveire wrote:
> > > > > hans wrote:
> > > > > > zturner wrote:
> > > > > > > steveire wrote:
> > > > > > > > I'll have to keep a patch around anyway for myself locally to
> > > > > > > > remove this condition. But maybe someone else will benefit from
> > > > > > > > this.
> > > > > > > >
> > > > > > > > What do you think about changing CMake to so that this is
> > > > > > > > passed by default when using Clang-CL?
> > > > > > > >
> > > > > > > Do you mean llvms cmake? Or cmake itself? Which generator are
> > > > > > > you using?
> > > > > > Can't you just configure your build to pass the flag to clang-cl?
> > > > > >
> > > > > > I suppose CMake could be made to do that by default when using
> > > > > > clang-cl versions that support the flag and using the MSBuild
> > > > > > generator, but that's for the CMake community to decide I think. Or
> > > > > > perhaps our VS integration could do that, but it gets tricky
> > > > > > because it needs to know whether the flag is supported or not.
> > > > > I mean upstream cmake. My suggestion is independent of the generator,
> > > > > but it would depend on what Brad decides anyway. I don't intend to
> > > > > implement it, just report it.
> > > > >
> > > > > I only have one clang but I have multiple buildsystems, and I don't
> > > > > want to have to add a new flag too all of them. In each toplevel
> > > > > CMakeLists everyone will need this to make use of the flag:
> > > > >
> > > > > ```
> > > > >
> > > > > # Have to remember to use "${CMAKE_CXX_SIMULATE_ID}" instead of
> > > > > # Undecorated "CMAKE_CXX_SIMULATE_ID" because there is a
> > > > > # variable named "MSVC" and
> > > > > # the way CMake variables and the "if()" command work requires this.
> > > > > if (CMAKE_CXX_COMPILER_ID STREQUAL Clang
> > > > > AND ${CMAKE_CXX_SIMULATE_ID} STREQUAL MSVC)
> > > > > # CMake does not have explicit Clang-CL support yet.
> > > > > # It should have a COMPILER_ID for it.
> > > > > set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /showFilename")
> > > > > # etc
> > > > > endif()
> > > > > ```
> > > > >
> > > > > Upstream CMake can have the logic to add the flag instead.
> > > > But then what if you don’t want it? There would be no way to turn it
> > > > off. I don’t think it’s a good fit for cmake
> > > Yes, and actually for this reason i was wondering if we can do it without
> > > a flag at all. What if we just set an magic environment variable? It
> > > handles Stephen’s use case (he can just set it globally), and MSBuild (we
> > > can set it in the extension).
> > > But then what if you don’t want it? There would be no way to turn it off.
> >
> > Oh, I thought that the last flag would dominate. ie, if cmake generated
> > `/showFilename` and the user adds `/showFilename-`, then you would end up
> > with
> >
> > `clang-cl.exe /showFilename /showFilename-`
> >
> > and it would not be shown. I guess that's not how it works.
> >
> > Maybe users want to not show it, but not seeing the filename is a
> > surprising first-time experience when porting from MSVC to clang-cl using
> > Visual Studio.
> >
> > However, I'll just drop out of the discussion and not make any bug to
> > CMake. If anyone else feels strongly, they can do so.
> >
> > Thanks!
> Right, but if we update the VS Integration Extension so that MSBuild
> specifies the flag (or sets the environment variable, etc), then any time you
> use MSBuild (even if not through the IDE) you would get the output, so to the
> user it would look no different.
I think we should avoid magic environment variables as much as possible.
https://reviews.llvm.org/D52773
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits