<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">I was thinking about this a little bit more. I like the tri-configuration option, but I think that it might be constrictive on developers if we don’t do it right.<div><br></div><div>First, let me make sure I am understanding you correctly Chandler (just to be careful = ]). I feel that really what you are describing is some sort of notion of a configuration profile where you can enable/disable a bunch of options at once. Thus a user could go:</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">      </span>cmake -G Ninja -DLLVM_INSTALL_TYPE=all</div><div><br></div><div>and get everything or,</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>cmake -G Ninja -DLLVM_INSTALL_TYPE=toolchain-only</div><div><br></div><div>to get the compiler toolchain or:</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">  </span>cmake -G Ninja -DLLVM_INSTALL_TYPE=libraries-toolchain</div><div><br></div><div>to get the libraries/compiler toolchain. There is a well defined use case here that I think will provide a lot of good for users.</div><div><br></div><div>At the same time I think that we should provide some nobs under the hood that a developer can use to customize said options. Specifically why not introduce something along the lines of LLVM_INSTALL_TYPE that beneath the hood triggers other CMake variables which control what is actually installed or not.</div><div><br></div><div>Then as a user I can get the configuration profile aspect that will make my life easier, but as a developer if I want my roots a specific way, I can get what I want since I can override the variables. To give you an example, for our apple-clang roots, we want .dylibs (i.e. for libLTO.dylib), but not static archives. That is not a use-case which fits into the provided schemas as laid out in this email thread, but is supported by auto tools.</div><div><br></div><div>My overall feeling is that if we truly want the cmake toolchain to be a drop in replacement (or almost drop in) replacement for the auto tools toolchain, then we need to ensure that we hit all the use cases that the auto tools toolchain does. Flexibility here will help.</div><div><br></div><div>Waiting to hear your thoughts,</div><div>Michael</div><div><br><div><div>On Aug 19, 2013, at 11:54 PM, Michael Gottesman <<a href="mailto:mgottesman@apple.com">mgottesman@apple.com</a>> wrote:</div> <br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">This sounds great = ).<div><br></div><div>Michael</div><div><br><div><div>On Aug 19, 2013, at 4:26 PM, Hans Wennborg <<a href="mailto:hans@chromium.org">hans@chromium.org</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">On Mon, Aug 19, 2013 at 4:10 PM, Hans Wennborg <<a href="mailto:hans@chromium.org">hans@chromium.org</a>> wrote:<br><blockquote type="cite">On Mon, Aug 19, 2013 at 3:52 PM, Chandler Carruth <<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>> wrote:<br><blockquote type="cite"><br>On Mon, Aug 19, 2013 at 3:50 PM, Reid Kleckner <<a href="mailto:rnk@google.com">rnk@google.com</a>> wrote:<br><blockquote type="cite"><br>On Mon, Aug 19, 2013 at 3:20 PM, Chandler Carruth <<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>><br>wrote:<br><blockquote type="cite"><br>On Fri, Aug 16, 2013 at 6:45 PM, Hans Wennborg <<a href="mailto:hans@chromium.org">hans@chromium.org</a>> wrote:<br><blockquote type="cite"><br><blockquote type="cite">3) People using LLVM+Clang(+LLD)?(+LLDB)? only as a C/C++/ObjC/ObjC++<br>toolchain (including the linker and debugger in that as necessary) for<br>their<br>development. They don't use any of the libraries, but do use very<br>end-user<br>tools like clang-format, clang-check, libclang.so (for their editor),<br>etc.<br></blockquote><br>This is what you get if you set LLVM_INSTALL_DEV_FILES=OFF from my<br>patch, and use the existing LLVM_BUILD_TOOLS=OFF (disables building<br>llc, opt, etc.).<br></blockquote><br><br>Ok, maybe the naming is just confusing. I'm happy if the result of my<br>comment is to keep the same functionality, but split it up into different<br>named options. I think that would help.<br></blockquote><br><br>I was pushing back against more options.  Less options means a simpler<br>configuration matrix.<br><br><blockquote type="cite"><blockquote type="cite"><br><blockquote type="cite">The only people who need #1 to be supported by the *install* are<br>people<br>building LLVM projects in a stand-alone way from the core. There are<br>several<br>people at Apple that do this for Clang because xcode is happier with<br>the<br>project files that way. I think they could probably enable a<br>default-off<br>feature to get this.<br></blockquote><br>Are you saying that you'd like #2 to be the default instead of #1?<br></blockquote><br><br>Yes. I'd like #1 to be an easy opt-in for folks who need it. AFAIK, this<br>is an important but not terribly common use case.<br></blockquote><br><br>To me, #2 seems really close to #1.  Who knows, people using<br>llvm-as-a-library might actually want to write FileCheck and lit tests<br>because it's convenient.<br></blockquote><br><br>I don't think any of these other tools are in an even semi-reasonable state<br>to be installed on a machine in say, /usr/bin. Do you really think we should<br>install /usr/bin/not? /usr/bin/count?<br></blockquote><br>I agree that enabling #2 would be useful. The way we're basically just<br>copying all the build artifacts to the installation dir is not very<br>nice for an end user.<br><br>I think Reid has a point that #1 and #2 are pretty close though.<br><br>The difference between #3 (i.e. basically shipping just clang) and<br>what we currently have is huge, as in hundreds of megs libraries and<br>headers. I would really like to start with addressing this case :)<br></blockquote><br>OK, following up on our offline talk, we want a single cmake flag to<br>control which of the three use cases to hit:<br><br>- #2: (default), the stuff a user of llvm as a library would use<br>- #3: toolchain-only, i.e. clang, lld, binutils-like tools<br>- #1: "everything", what we have today.<br><br>I'll see if I can turn this into a patch.<br><br>- Hans<br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></div></blockquote></div><br></div>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></div></blockquote></div><br></div></body></html>