<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jun 24, 2016 at 6:03 PM, Chris Bieneman <span dir="ltr"><<a href="mailto:beanz@apple.com" target="_blank">beanz@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><div><span class=""><blockquote type="cite"><div>On Jun 24, 2016, at 5:49 PM, Saleem Abdulrasool <<a href="mailto:compnerd@compnerd.org" target="_blank">compnerd@compnerd.org</a>> wrote:</div><br><div><div dir="ltr">On Tue, Jun 21, 2016 at 2:37 PM, Chris Bieneman via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">beanz updated this revision to Diff 61451.<br>
beanz added a comment.<br>
<br>
I kinda went a bit off into the woods after the llvm-dev thread, and I think I came back with something either interesting or insane... you decide.<br>
<br>
This patch changed a few things about how I'm handling the runtimes subdirectory. First, it handles the compiler-rt builtin library dependency by building the builtins first as their own external project call. Second, it glumps all the other runtime libraries (including compiler-rt's sanitizers) into a single external project by using the runtimes/CMakeLists.txt file as the top-level CMake.<br></blockquote><div><br></div><div>Is the intent that the sanitizer runtimes and the C++ runtime would be a single project?</div></div></div></div></div></blockquote><div><br></div></span><div>Not really one project. What it does is disconnect the configure-time and build-time dependencies. The builtins are configured and built first and separately. Then the remaining runtimes can be configured in a single group, and built respecting the dependencies across project boundaries.</div><div><br></div><div>Does that make sense?</div></div></div></div></blockquote><div><br></div><div>Ah, the configuration step.  That make sense.  There is a large overlap between them, so it make sense to configure the set as a whole, especially when you consider the fact that each build of them should run in a similar environment.</div><div><br></div><div>Thanks for the explanation!</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div><span class="HOEnZb"><font color="#888888"><div>-Chris</div></font></span><span class=""><br><blockquote type="cite"><div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>  If so, that seems a bit imprecise.  However, this is engineering, and if it does result in a more maintainable system, it may be worth it.  The builtins definitely need to be pulled out into a separate project.  It feels like the right layering here would be something like:</div><div><br></div><div>builtins</div><div>unwind</div><div>sanitizers</div><div>libc++abi / libc++</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This is interesting for a few reasons. The biggest is a potential for reduced CMake-overhead when building runtime libraries. Additionally it will allow cross-project dependencies to be  more easily modeled in CMake because the runtime libraries will be able to be aware of the targets coming from other runtime projects.<br>
<br>
Thoughts?<br>
<div><div><br>
<br>
<a href="http://reviews.llvm.org/D20992" rel="noreferrer" target="_blank">http://reviews.llvm.org/D20992</a><br>
<br>
Files:<br>
  CMakeLists.txt<br>
  cmake/modules/LLVMExternalProjectUtils.cmake<br>
  runtimes/CMakeLists.txt<br>
<br>
</div></div><br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div data-smartmail="gmail_signature">Saleem Abdulrasool<br>compnerd (at) compnerd (dot) org</div>
</div></div>
</div></blockquote></span></div><br></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Saleem Abdulrasool<br>compnerd (at) compnerd (dot) org</div>
</div></div>