<div dir="ltr">> You can also diff the output of "llvm-bcanalyzer -dump" to investigate how modules built on different machines differ.<br><br>Ah thanks, this is super useful!<br><br>From the dump, it appears the CWD path is embedded in the `MODULE_DIRECTORY` and `ORIGINAL_PCH_DIR`.  I'm using a pretty simple repro with just an empty header and a module.modulemap in the current working dir and compiling the module via `clang++ -fmodules -x c++-header -Xclang -emit-module -c -o a.pcm module.modulemap -fmodule-name=a`, so I don't think I'm passing the absolute paths (but I'm not confident that I'm not doing something wrong).<br><br>Interestingly, if I pass `-Xclang -fmodule-map-file-home-is-cwd``, the `MODULE_DIRECTORY` field is no longer set -- but then it appears that headers listed in the module map must be found relative to this location (as opposed to the module map directory -- which makes sense).<br><br>Anywho, thanks for the tips -- it give me a good place to start digging.<br><br>Andrew</div><br><div class="gmail_quote"><div dir="ltr">On Fri, Aug 17, 2018 at 7:19 PM Richard Smith <<a href="mailto:richard@metafoo.co.uk">richard@metafoo.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Fri, 17 Aug 2018 at 18:15, Andrew Gallagher via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I was looking into getting a build system to cache/share module files (i.e. *.pcm files) between different users to speed up builds.  One problem is that it appears clang is embedding absolute paths into the module file, which causes issues when users build from different locations (e.g. their home directories).  From the output of `clang -fmodule-file-info ...` it looks like this absolute path is the location of the various `module.modulemap` files the build uses.  Anyone know of a way to get clang to these absolute path (e.g. using relative paths instead, or something similar to `$ORIGIN`)?<br></div></blockquote><div><br></div><div>The paths to module.modulemap files found implicitly by clang will be based on the -I / -isystem paths that Clang is using: if those paths are relative, Clang should use relative paths to the module map files, and if those paths are absolute, Clang will use absolute paths to the module map. (The paths to module.modulemap files found by explicit -fmodule-map-file= arguments should match the form used in said argument.)</div><div><br></div><div>You can also diff the output of "llvm-bcanalyzer -dump" to investigate how modules built on different machines differ.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thanks!<br>Andrew</div>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div>
</blockquote></div>