<div dir="ltr"><div dir="ltr">The contract is enshrined in the clang driver. Requiring an install as part of the build/run dev loop seems suboptimal maybe?<div><br></div><div>Anyhow, is there a reason the headers couldn't keep being copied to builddir/include/... (where they used to be)? From my read of your change, I think your patch is independent of the actual copy destination, so why not just keep the old location? I.e. set LIBCXX_GENERATED_INCLUDE_DIR to LIBCXX_HEADER_DIR/include/c++/v1 ?</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 21, 2020 at 7:15 PM Louis Dionne <<a href="mailto:ldionne@apple.com">ldionne@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
> On Oct 21, 2020, at 19:05, Nico Weber <<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>> wrote:<br>
> <br>
> Not sure I'd call this an "implementation detail". The build dir used to have clang in 'bin/clang', lib stuff in 'lib/...', and this in 'include/...'. That's also the dir layout when installing, and it means that clang's built-in search logic would find libc++ headers before. That seems like a bad thing to break?<br>
<br>
<br>
I wasn't aware this was a convention at a point -- I must have missed it, or it isn't something that's widely known.<br>
<br>
In all cases, I would argue that the proper way to create something that looks like an installation root is to actually perform the installation to a directory using the scripts that CMake gives you. You can even do it from within CMake itself. That way, you are guaranteed that the proper installation steps are performed, for example:<br>
- Setting up the config_site header properly<br>
- Replacing libc++.so by a linker script on platforms that do that<br>
<br>
So it looks like I broke something that is (or once was) a "contract", however I definitely think that contract should be more explicit. I'll see what I can do to improve the situation there.<br>
<br>
Louis<br>
<br>
</blockquote></div>