beanz added inline comments.

================
Comment at: CMakeLists.txt:210
@@ -202,3 +209,3 @@
 
 set(CLANG_VENDOR ${PACKAGE_VENDOR} CACHE STRING
   "Vendor-specific text for showing with version information.")
----------------
Hahnfeld wrote:
> zlei wrote:
> > Hahnfeld wrote:
> > > zlei wrote:
> > > > I think the original code for resetting `CLANG_DEFAULT_CXX_STDLIB` 
> > > > doesn't work as expected, as beanz pointed out.
> > > > 
> > > > In this revision, I just disable invalid values for both 
> > > > `CLANG_DEFAULT_CXX_STDLIB` and `CLANG_DEFAULT_RTLIB`. Users will get a 
> > > > error message when assigning unsupported values to them.
> > > I tested it this morning and it works as (at least I) expected: It will 
> > > temporarily reset the value and warn the user that the parameter is not 
> > > valid.
> > > 
> > > I'm against erroring out here because there actually is a sane default 
> > > value...
> > I don't have a strong opinion on this, but the problem is the original line 
> > `set(CLANG_DEFAULT_CXX_STDLIB "")` doesn't have actual effect (it seems to 
> > me).
> > 
> > I'm not sure what you mean by "temporarily reset the value". Last time I 
> > tested it, `-DCLANG_DEFAULT_CXX_STDLIB=blah` doesn't reset the value to an 
> > empty string (as expected?)
> > 
> > Anyway, I'm fine with either warning or erroring :)
> It means that you will still see `CLANG_DEFAULT_CXX_STDLIB=blah` in 
> `CMakeCache.txt` but it will be temporarily set to `""` when CMake builds the 
> Makefiles.
> 
> Let's have @beanz decide on that: He is the master of CMake and I can only 
> say that it is working as I wanted it to do ;-)
The first `set` call shouldn't be forced because you want to allow users to 
manually specify the value. If you were to set `FORCE` on it it would always 
overwrite any value specified on the command line.

The second `set` is debatable one way or the other. The CMake will function 
correctly with or without the `set` being forced, however as @Hahnfeld 
commented the invalid value will remain in the CMake cache. That means that 
every time CMake is re-run the warning will get printed, and the value will be 
overridden within the scope of that execution.

I think it is better to `FORCE` the second `set` so that the cache gets 
overwritten with a valid value and the warning only gets logged the first time 
CMake is run. That said, I don't really have a strong opinion here, so do 
whatever you think is right.


https://reviews.llvm.org/D22663



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to