<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">FWIW, on FreeBSD, the compiler bootstrap path has mostly been to use "ancient" compilers (e.g. gcc 4.2 from before the switch to GPLv3) to build clang and libc++ 3.4.1, the last version that can be built with a pre-C++11 stack. (This version is available from FreeBSD 9 onwards.)</div><div class=""><br class=""></div><div class="">Then, clang/libc++ 3.4.1 can be used to build later versions, such as 5.0.0. I'm not sure that 3.4.1 already supports C++14, but it will probably do so partially.</div><div class=""><br class=""></div><div class="">If the requirements are raised to C++17, the bootstrap path will indeed become: ancient compiler -> clang/libc++ 3.4.1 -> clang/libc++ 5.0.0 (or whichever version supports enough of C++17) -> clang/libc++ ToT.</div><div class=""><br class=""></div><div class="">-Dimitry</div><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class="">On 1 Nov 2017, at 07:23, Zachary Turner via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">I’m ok with that, but the reason I’m pushing is because there is no clear plan of action. Even if the plan of action is “When X happens, we can enable C++14”, that’s fine too. I just want to know, concretely, what is X.<br class=""><br class="">We should either be able to say never or give a reasonable set of conditions that would enable a switch. All I’ve seen though is “it’s hard” which just means I’m going to ask again next year, and the year after, etc due to lack of clear guidance.<br class=""><br class="">To address your point though , this isn’t really about building everything with clang. You don’t need to bootstrap Clang to build a hypothetical C++17 enabled LLVM, you could also bootstrap a more modern version of GCC.<br class=""><br class="">This is really more fundamentally about “Can we have a clearly defined policy about how often we can bump the minimum compiler version, like we have for MSVC?” <br class=""><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Tue, Oct 31, 2017 at 10:30 PM Chris Lattner <<a href="mailto:clattner@nondot.org" class="">clattner@nondot.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="">
> On Oct 31, 2017, at 2:11 PM, Zachary Turner via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" class="">llvm-dev@lists.llvm.org</a>> wrote:<br class="">
><br class="">
> Note that we could, in theory, provide a python script or something called `bootstrap.py` which<br class="">
><br class="">
> a) downloads a source tarball, or specific git revision for a particular clang release<br class="">
> b) compiles it using system compiler<br class="">
> c) installs it<br class="">
> d) cleans up<br class="">
><br class="">
> so that you wouldn't have to do anything manually.<br class="">
<br class="">
I love that you’re pushing hard on this, but I don’t think that this approach is practical. While I love the future where everything is built with ToT clang, there are lots of reason why people either don’t want to do that (e.g. for “subjectively" bad reasons) or where they really can’t (e.g. clang doesn’t support their weird target).<br class="">
<br class="">
-Chris<br class="">
<br class="">
</blockquote></div>
_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev<br class=""></div></blockquote></div><br class=""></body></html>