<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 6, 2014 at 7:57 PM, Jean-Daniel Dupas <span dir="ltr"><<a href="mailto:devlists@shadowlab.org" target="_blank">devlists@shadowlab.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Le 6 févr. 2014 à 16:20, Brad King <<a href="mailto:brad.king@kitware.com">brad.king@kitware.com</a>> a écrit :<br>
<div class="im"><br>
> On 02/06/2014 08:12 AM, Alexey Samsonov wrote:<br>
>> Please note that it makes a lot of sense to built compiler-rt (and sanitizers) with just-built<br>
>> Clang. In fact, even though we should support building it with another compilers (gcc, MSVC),<br>
>> using just-built-Clang should be a default scenario, like it is in configure+make build.<br>
><br>
> This is possible with CMake using the ExternalProject module:<br>
><br>
> <a href="http://www.cmake.org/cmake/help/v2.8.12/cmake.html#module:ExternalProject" target="_blank">http://www.cmake.org/cmake/help/v2.8.12/cmake.html#module:ExternalProject</a><br>
><br>
> The add_llvm_external_project macro already in LLVM could be taught<br>
> to call ExternalProject_Add instead of add_subdirectory.  This could<br>
> create a custom target with dependencies appropriately configured to<br>
> build after Clang.  The custom target would run CMake to configure the<br>
> project like an outside build and then launch the build.<br>
><br>
> IIUC there is a desire for Clang to be able to be built externally to<br>
> LLVM rather than subsumed into its build process.  The top-level<br>
> CMakeLists.txt file of Clang already has code to do that, though it<br>
> can be much cleaner after my patches to LLVM to provide LLVMConfig.cmake<br>
> are integrated.  Then it will even be possible to build Clang using<br>
> CMake against a LLVM that was built and installed using configure+make.<br>
><br>
> If one would like to drive compiler-rt as part of testing a Clang built<br>
> outside of LLVM then the appropriate place for the ExternalProject_Add<br>
> call would be inside the build of Clang.<br>
<br>
</div>Look like what we need to build compiler-rt. Actually the makefile responsible to launch the compiler-rt build is in clang/runtime/compiler-rt.<br>
Using ExternalProject_Add, we can probably add the CMake part beside that existing file, so everything will be at the same place.<br></blockquote><div><br></div><div>OK, I feel like I need to learn more about ExternalProject_Add magic. I have a few</div>
<div>quick questions for people with knowledge - currently:</div><div>1) "compiler-rt"'s CMake needs to know about targets in the Clang build tree ("clang") and</div><div>in LLVM build tree ("FileCheck", llvm-* command-line tools, googletest etc.), and uses common</div>
<div>macro from LLVM's CMake modules like "configute_lit_site_cfg", "parse_arguments".</div><div>2) top-level targets from compiler-rt's CMake files are visible at the root of LLVM's build tree,</div>
<div>so that I can run "make check-asan" or even "make clang_rt.asan-x86_64" from the root of</div><div>the build tree.</div><div><br></div><div>Will we easily retain all these capabilities if we turn compiler-rt into an external project?</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> Either way, from a quick glance at the top-level CMakeLists.txt file<br>
> in compiler-rt it appears to want to know a bunch of information about<br>
> Clang rather than LLVM.  In this case having Clang export enough info<br>
> for applications to write find_package(Clang) would make sense.  This<br>
> is possible to do an can be implemented using techniques similar to<br>
> that in my proposed LLVMConfig.cmake patch series.<br>
><br>
> -Brad<br>
><br>
</div>> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br>
-- Jean-Daniel<br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</div></div>