iains added a comment.

In D134267#3869614 <https://reviews.llvm.org/D134267#3869614>, @dblaikie wrote:

> In D134267#3869162 <https://reviews.llvm.org/D134267#3869162>, @iains wrote:
>
>> In D134267#3868830 <https://reviews.llvm.org/D134267#3868830>, @dblaikie 
>> wrote:
>>
>>> I'm OK with sticking with the existing `-fmodule-file` if that works for 
>>> everyone. Yeah, it's short and ambiguous in a space with many concepts of 
>>> what a "module file" is, but also the fact that it's a `-f` flag might help 
>>> disambiguate it a bit - it's probably not the way anyone would think/expect 
>>> to be passing source files, those just get passed without flags on the 
>>> command line. And any use of it will show the .pcm extension or whatever 
>>> that should make it clear enough what's going on.
>>
>> hmm (I realise I mentioned this, and hope it has not complicated things) ..
>>
>> .. I was thinking of the `-fmodule-file=<name>=filename` variant.  The 
>> problem with using it without (the <name>) is that -fmodule-file= can (and 
>> does) appear multiple times on the command line to specify dependent modules 
>> - so that one would have to specify which (named) module was related to the 
>> filename.



> I /think/ currently `-fmodule-file` works with Clang header modules 
> presumably because the module files contain within them enough information to 
> enable the compiler to substitute the module for an include where necessary? 
> I'm not sure the `<name>=` part is necessary, as such, if the BMIs can 
> reasonably contain enough identifying info to make their use clear to the 
> consumer.

`-fmodule-file=` works with both `clang` modules  and standard C++ ones.  What 
it does (as of now) is cause the FE to open the named file and to pre-load the 
module name - so that when the FE tries to find a module the lookup mechanism 
can associate the module name with the module data.  So, if we need 3 dependent 
modules to be available when building a new source .. we would specify the PCM 
files containing those modules.

At present, if you try to specify a non-existent PCM using `-fmodule-file=` the 
compile will fail early on (it is expecting this to indicate a source module, 
not a destination one).

However, the second syntax `-fmodule-file=<name>=filename` I think should be 
able to work around this (since it says that the named module <name> is 
associated with the PCM `filename` which would allow us to cater for that file 
being missing (when we are creating it).

Does that clarify at all ?

It would be great not to add more modules options flags, there are already way 
to many :/ - but if this seems too complex then one of the spellings suggested 
by @ChuanqiXu would work.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D134267/new/

https://reviews.llvm.org/D134267

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

Reply via email to