Hi Ed, Doug and I chatted about this, and I think for now we are fine with driving the is-cxx bit off of the name. It isn't ideal, in my opinion, because I like being able to rename the executable, but for now it works (and is better than having two complete driver binaries).
As for the actual pattern to match, I think doing it in the constructor would be fine. I would propose matching anything with ++ in the name. Do you have a concrete need to match CC? It would also be nice for the makefiles to build and install 'clang++' as a symlink to clang, but this won't immediately work because we look through symlinks when constructing the driver name I believe. I suppose we will have to change the driver to not do this when computing the name, unless someone has a better idea of how to handle all this. - Daniel On Sun, Jun 28, 2009 at 3:57 AM, Ed Schouten<[email protected]> wrote: > * Ed Schouten <[email protected]> wrote: >> It looks like Clang doesn't behave like a C++ compiler when called as >> `c++' or `g++'. Maybe we should look at the basename or the last bytes >> of argv[0], but for now this seems to be good enough: >> >> Index: lib/Driver/Driver.cpp >> =================================================================== >> --- lib/Driver/Driver.cpp (revision 194810) >> +++ lib/Driver/Driver.cpp (working copy) >> @@ -118,6 +118,9 @@ >> // driver. >> bool CCCPrintOptions = false, CCCPrintActions = false; >> >> + if (!strcmp(argv[0], "c++") || !strcmp(argv[0], "CC")) >> + CCCIsCXX = true; >> + >> const char **Start = argv + 1, **End = argv + argc; >> const char *HostTriple = DefaultHostTriple.c_str(); > > Correcting myself; it seems we already cache the base name of the > application inside Driver. I propose the following patch. Maybe we > should put this in the constructor, but I'm not sure about that... > > Index: lib/Driver/Driver.cpp > =================================================================== > --- lib/Driver/Driver.cpp (revision 194810) > +++ lib/Driver/Driver.cpp (working copy) > @@ -118,6 +118,9 @@ > // driver. > bool CCCPrintOptions = false, CCCPrintActions = false; > > + if (Name == "c++" || Name == "CC") > + CCCIsCXX = true; > + > const char **Start = argv + 1, **End = argv + argc; > const char *HostTriple = DefaultHostTriple.c_str(); > > -- > Ed Schouten <[email protected]> > WWW: http://80386.nl/ > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
