<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Folks,<div class=""><br class=""></div><div class="">I just wanted to reply to this thread since I never had the chance to do so before. I did take all of the input in the thread into consideration and learned a lot about all of your respective use cases. This has been very useful, thanks for taking the time to share your use cases with me.</div><div class=""><br class=""></div><div class="">The basic conclusion I come out of this with is that it doesn't make sense to build the runtimes as part of the rest of LLVM, and I agree with this. I think the runtimes should always be built "standalone", however I also believe they should be built against each other, i.e. we should be able to build (at least) libc++/libc++abi/libunwind with a single CMake invocation, outside of the rest of LLVM. That would basically be a standalone build, except for all the runtimes you decide to build at once. That just reduces the build system complexity and removes the possibility for subtle mismatches between runtime projects.</div><div class=""><br class=""></div><div class="">I've created a RFC explaining this and the reasons for it, and sent it to llvm-dev: <a href="http://lists.llvm.org/pipermail/llvm-dev/2020-June/142384.html" class="">http://lists.llvm.org/pipermail/llvm-dev/2020-June/142384.html</a>. Please chime in if you'd like to add something to the discussion.</div><div class=""><br class=""></div><div class="">Thanks again,</div><div class="">Louis</div><div class=""><br class=""></div><div class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Apr 8, 2020, at 11:46, Louis Dionne via libcxx-dev <<a href="mailto:libcxx-dev@lists.llvm.org" class="">libcxx-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html; charset=us-ascii" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="">[Cross-post to llvm-dev to make sure everybody relevant sees this]</div><div class=""><br class=""></div><div class="">Hi,</div><div class=""><br class=""></div><div class="">I'm currently trying to simplify the libc++/libc++abi/libunwind build systems and testing setup. In doing so, I am encountering issues related to "unusual" ways of building them. By unusual, I just mean "not the usual monorepo build with LLVM_ENABLE_PROJECTS". I would like to pin down what the set of supported use cases for building the runtime libraries are. In particular, the world I would like to live in is one where the only way to build libc++/libc++abi/libunwind is:</div><div class=""><br class=""></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    $ mkdir build</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    $ cd build</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    $ cmake <monorepo-root>/llvm -DLLVM_ENABLE_PROJECTS=libcxx;libcxxabi;libunwind <options></span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    $ ninja -C build install-{cxx,cxxabi,unwind}</span></font></div><div class=""><br class=""></div><div class="">The "runtimes" build would be built on top of this -- it would be just a driver for building these libraries using documented options against the just-built Clang. I think it already does so in essence, however if I'm not mistaken it uses the "Standalone build" and it definitely sets some magic and undocumented CMake variables (like HAVE_LIBCXXABI) that we have to be really careful not to break.</div><div class=""><br class=""></div><div class="">So, to better understand what people use today, I have some questions. I know the answer to some of those, but I want to see what others have to say:</div><div class=""><br class=""></div><div class="">1. What is a "Standalone build"? What does it enable that a normal monorepo build can't?</div><div class="">2. What is the "Runtimes" build? How does it work, what is it used for, and what does it expect from libc++/libc++abi/libunwind?</div><div class="">3. Are there other "hidden" ways to build the runtime libraries?</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Louis</div><div class=""><br class=""></div></div>_______________________________________________<br class="">libcxx-dev mailing list<br class=""><a href="mailto:libcxx-dev@lists.llvm.org" class="">libcxx-dev@lists.llvm.org</a><br class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev<br class=""></div></blockquote></div><br class=""></div></body></html>