<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=""><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></body></html>