<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="">To answer Johannes’ questions:<div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div lang="DE" link="blue" vlink="purple" class=""><div class=""><div class=""><div class="h5"><div class=""><div class=""><blockquote class="" style="border-style: none none none solid; border-left-color: rgb(204, 204, 204); border-left-width: 1pt; padding: 0in 0in 0in 6pt; margin-left: 4.8pt; margin-right: 0in;"><div class=""><div class=""><p class="MsoNormal"><span lang="EN-US" class="" style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);">Do they really allways put them into Release/bin or rather $<CONFIG>/bin?</span></p></div></div></blockquote></div></div></div></div></div></div></blockquote></div></div></blockquote><div class="">Yes. When generating multi-configuration build files (Xcode, Visual Studio, Eclipse…) the binaries are always built to $CMAKE_BINARY_DIR/$CMAKE_BUILD_TYPE/bin/…</div><div class=""><br class=""></div><div class="">For multi-configuration generators I hard-code the type as Release because the whole point of this patch is to use the Release tablegen.</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div lang="DE" link="blue" vlink="purple" class=""><div class=""><p class="MsoNormal"><span lang="EN-US" class="" style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);">Is the Release tblgen even built when you build in Debug mode? Otherwise this introduces the need to build Release before Debug.</span></p></div></div></blockquote></div></div></blockquote></div><div class="">That is exactly what the LLVM_OPTIMIZED_TABLEGEN flag does. It is kinda hacky, but it can dramatically reduce build times. There is probably a way to make this work better for multi-config builds, but the general idea is that when you enable the flag CMake generates two configured build directories - one for what you wanted to use, and one for CMake to use to generate an optimized tablegen. It then hooks up the dependencies so that the optimized tablegen is used in place of an unoptimized one.</div><div class=""><br class=""></div><div class="">The speedup can be significant. >From my experience I see the best results using the Ninja generator, but once I land this last patch it will, hopefully, work with all generators.</div><div class=""><br class=""></div><div class="">-Chris</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On May 29, 2015, at 2:17 AM, Yaron Keren <<a href="mailto:yaron.keren@gmail.com" class="">yaron.keren@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="rtl" class=""><div dir="ltr" class="">Yes, that's the idea, when you  -DLLVM_OPTIMIZED_TABLEGEN=ON tblgen is built in Release in addition to whatever /property:Configuration= is.</div><div dir="ltr" class=""><br class=""></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote"><div dir="ltr" class="">2015-05-29 10:03 GMT+03:00 Mueller-Roemer, Johannes Sebastian <span dir="ltr" class=""><<a href="mailto:Johannes.Sebastian.Mueller-Roemer@igd.fraunhofer.de" target="_blank" class="">Johannes.Sebastian.Mueller-Roemer@igd.fraunhofer.de</a>></span>:</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="DE" link="blue" vlink="purple" class="">
<div class=""><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">That it’s faster is no surprise. Is the Release tblgen even built when you build in Debug mode? Otherwise this introduces the need to build Release
 before Debug.<u class=""></u><u class=""></u></span></p><span class=""><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class=""><u class=""></u> <u class=""></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">--<u class=""></u><u class=""></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Johannes S. Mueller-Roemer, MSc<u class=""></u><u class=""></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Wiss. Mitarbeiter - Interactive Engineering Technologies (IET)<u class=""></u><u class=""></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class=""><u class=""></u> <u class=""></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Fraunhofer-Institut für Graphische Datenverarbeitung IGD<u class=""></u><u class=""></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany<u class=""></u><u class=""></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Tel +49 6151 155-606  |  Fax +49 6151 155-139<u class=""></u><u class=""></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class=""><a href="mailto:johannes.mueller-roemer@igd.fraunhofer.de" target="_blank" class="">johannes.mueller-roemer@igd.fraunhofer.de</a>  |  <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.igd.fraunhofer.de_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=QECPOp0tGUDg9eTDtdw2LRV23Ews0v9K67nwk9VZRLw&s=32byydyOOhPaB508rOq45IbeqwIxSV7n-qtxVTgda88&e=" target="_blank" class="">www.igd.fraunhofer.de</a><u class=""></u><u class=""></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class=""><u class=""></u> <u class=""></u></span></p>
</span><p class="MsoNormal"><b class=""><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" class="">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" class=""> Yaron Keren [mailto:<a href="mailto:yaron.keren@gmail.com" target="_blank" class="">yaron.keren@gmail.com</a>]
<br class="">
<b class="">Sent:</b> Friday, May 29, 2015 08:59<br class="">
<b class="">To:</b> Mueller-Roemer, Johannes Sebastian<br class="">
<b class="">Cc:</b> Chris Bieneman; LLVM Developers Mailing List</span></p><div class=""><div class="h5"><br class="">
<b class="">Subject:</b> Re: [LLVMdev] [RFC] Late May Update: Progress report on CMake build system's ability to replace autoconf<u class=""></u><u class=""></u></div></div><div class=""><br class="webkit-block-placeholder"></div><div class=""><div class="h5"><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
<div class="">
<div class=""><p class="MsoNormal">Both Release and $CONFIG tblgen are built but the Release one is always used. At least with Visual C++ the Release tblgen is much faster than the Debug one.<u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
</div>
</div>
<div class=""><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
<div class="">
<div class=""><p class="MsoNormal">2015-05-29 9:37 GMT+03:00 Mueller-Roemer, Johannes Sebastian <<a href="mailto:Johannes.Sebastian.Mueller-Roemer@igd.fraunhofer.de" target="_blank" class="">Johannes.Sebastian.Mueller-Roemer@igd.fraunhofer.de</a>>:<u class=""></u><u class=""></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in" class="">
<div class="">
<div class=""><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Do they really allways put them into Release/bin or rather $<CONFIG>/bin?</span><u class=""></u><u class=""></u></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class=""> </span><u class=""></u><u class=""></u></p>
<div class=""><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">--</span><u class=""></u><u class=""></u></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Johannes S. Mueller-Roemer, MSc</span><u class=""></u><u class=""></u></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Wiss. Mitarbeiter - Interactive Engineering Technologies (IET)</span><u class=""></u><u class=""></u></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class=""> </span><u class=""></u><u class=""></u></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Fraunhofer-Institut für Graphische Datenverarbeitung IGD</span><u class=""></u><u class=""></u></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany</span><u class=""></u><u class=""></u></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class="">Tel +49 6151 155-606  |  Fax +49 6151 155-139</span><u class=""></u><u class=""></u></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class=""><a href="mailto:johannes.mueller-roemer@igd.fraunhofer.de" target="_blank" class="">johannes.mueller-roemer@igd.fraunhofer.de</a> 
 |  <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.igd.fraunhofer.de_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=QECPOp0tGUDg9eTDtdw2LRV23Ews0v9K67nwk9VZRLw&s=32byydyOOhPaB508rOq45IbeqwIxSV7n-qtxVTgda88&e=" target="_blank" class="">www.igd.fraunhofer.de</a></span><u class=""></u><u class=""></u></p>
</div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d" class=""> </span><u class=""></u><u class=""></u></p>
<div class="">
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in" class=""><p class="MsoNormal"><b class=""><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" class="">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"" class="">
<a href="mailto:llvmdev-bounces@cs.uiuc.edu" target="_blank" class="">llvmdev-bounces@cs.uiuc.edu</a> [mailto:<a href="mailto:llvmdev-bounces@cs.uiuc.edu" target="_blank" class="">llvmdev-bounces@cs.uiuc.edu</a>]
<b class="">On Behalf Of </b>Chris Bieneman<br class="">
<b class="">Sent:</b> Thursday, May 28, 2015 22:36<br class="">
<b class="">To:</b> Yaron Keren<br class="">
<b class="">Cc:</b> LLVM Developers Mailing List<br class="">
<b class="">Subject:</b> Re: [LLVMdev] [RFC] Late May Update: Progress report on CMake build system's ability to replace autoconf</span><u class=""></u><u class=""></u></p>
</div>
</div>
<div class="">
<div class=""><p class="MsoNormal"> <u class=""></u><u class=""></u></p><p class="MsoNormal">I sent out a patch for review.<u class=""></u><u class=""></u></p>
<div class=""><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal"><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D10102&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=CnMJsu0f0vSR1CHLloYJapdWWCpu9GRn3nQydr1tcoc&s=8zJYqD7TktfFqlUjdI8Gcv-ULAGh72ZOOZ9KumO1PZo&e=" target="_blank" class="">http://reviews.llvm.org/D10102</a><u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal">-Chris<u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
<div class="">
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt" class="">
<div class=""><p class="MsoNormal">On May 28, 2015, at 9:48 AM, Yaron Keren <<a href="mailto:yaron.keren@gmail.com" target="_blank" class="">yaron.keren@gmail.com</a>> wrote:<u class=""></u><u class=""></u></p>
</div><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
<div class="">
<div class="">
<div class=""><p class="MsoNormal">Thanks!<u class=""></u><u class=""></u></p>
</div>
</div>
<div class=""><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
<div class="">
<div class=""><p class="MsoNormal">2015-05-28 18:56 GMT+03:00 Chris Bieneman <<a href="mailto:beanz@apple.com" target="_blank" class="">beanz@apple.com</a>>:<u class=""></u><u class=""></u></p>
</div>
<blockquote style="border-top:none;border-left:solid #cccccc 1.0pt;border-bottom:none;border-right:solid #cccccc 1.0pt;padding:0in 6.0pt 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:4.8pt;margin-bottom:5.0pt" class="">
<div class=""><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
<div class="">
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt" class="">
<div class=""><p class="MsoNormal">On May 28, 2015, at 8:37 AM, Yaron Keren <<a href="mailto:yaron.keren@gmail.com" target="_blank" class="">yaron.keren@gmail.com</a>> wrote:<u class=""></u><u class=""></u></p>
</div><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
<div class="">
<div class="">
<div class=""><p class="MsoNormal">Probably not a blocker for replacing autoconf, while at it:<u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal">Bug 23468 - LLVM_OPTIMIZED_TABLEGEN does not work with Visual Studio.<u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal">It makes the tablegenning really slow.<u class=""></u><u class=""></u></p>
</div>
</div>
</div>
</blockquote>
<div class=""><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal">This is actually a feature of the CMake build system that the autoconf one doesn’t have, so this is not related to replacing autoconf.<u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal">That said, I’ll try to address this soon.<u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal"><span style="color:#888888" class=""> </span><u class=""></u><u class=""></u></p>
</div>
<div class=""><p class="MsoNormal"><span style="color:#888888" class="">-Chris</span><u class=""></u><u class=""></u></p>
</div>
<div class="">
<div class=""><p class="MsoNormal" style="margin-bottom:12.0pt"><u class=""></u> <u class=""></u></p>
<div class="">
<div class="">
<div class=""><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
</div>
</div>
<div class=""><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
<div class="">
<div class=""><p class="MsoNormal">2015-05-28 18:22 GMT+03:00 Chris Bieneman <<a href="mailto:beanz@apple.com" target="_blank" class="">beanz@apple.com</a>>:<u class=""></u><u class=""></u></p>
</div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt" class=""><p class="MsoNormal">Hi all,<br class="">
<br class="">
Time for another update on the status of the CMake build system.<br class="">
<br class="">
Completed:<br class="">
* Bug 18496 - [cmake] .S assembly files not compiled by cmake in libclang_rt.ARCH<br class="">
* Bug 22725 - lldb build with cmake fails with "Program error: Invalid parameters entered, -h for help. "<br class="">
* Update GettingStarted to prefer CMake<br class="">
<br class="">
Still Outstanding:<br class="">
<br class="">
* Bug 14109 - CMake build for compiler-rt should use just-built clang<br class="">
 - No Update: Still some small issues to resolve.<br class="">
<br class="">
* Bug 19462 - Use the INSTALL(EXPORT ...) to export CMake definitions<br class="">
 - I commented in the review for this today (<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D7623&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=CnMJsu0f0vSR1CHLloYJapdWWCpu9GRn3nQydr1tcoc&s=sUUTJf37gKTcDMx58mdbge8nZhoWhIh5vIfTXTa8ibI&e=" target="_blank" class="">http://reviews.llvm.org/D7623</a>).
 I think the patches I have are good to land, but Stephen Kelly made some other suggestions in the bug we should consider separately.<br class="">
<br class="">
* Bug 19875 - libraries and executables need different rpaths<br class="">
 - No Update: Still outstanding, I don't think this is a blocker.<br class="">
<br class="">
* Bug 21561 - Update release scripts to use CMake<br class="">
 - No Update: Still outstanding and blocking removal of autoconf<br class="">
<br class="">
* Bug 21562 - Add a CMake equivalent for make/platform/<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__clang-5Fdarwin.mk_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=CnMJsu0f0vSR1CHLloYJapdWWCpu9GRn3nQydr1tcoc&s=wt0UGa6r8x3w45AVGzPGHAjLVWguk3nXjPFh74rdxxM&e=" target="_blank" class="">clang_darwin.mk</a>
 in compiler_rt<br class="">
 - I've looked at this a bit on and off. It is unfortunately a hard problem. I think it would be easier if CMake had better support for setting clang's sysroot and arch flags. To that end I've filed a bug against CMake (<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.cmake.org_Bug_view.php-3Fid-3D15591&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=Mfk2qtn1LTDThVkh6-oGglNfMADXfJdty4_bhmuhMHA&m=CnMJsu0f0vSR1CHLloYJapdWWCpu9GRn3nQydr1tcoc&s=umuCvLy-UFJkds60slnEM9ROl2OiO4qvtQbhF7MhIF8&e=" target="_blank" class="">http://www.cmake.org/Bug/view.php?id=15591</a>).<br class="">
<br class="">
* Bug 21568 - Cannot add rpath<br class="">
 - No Update: Not a blocker.<br class="">
<br class="">
Other issues not tracked by bugs:<br class="">
<br class="">
* FreeBSD seemed to have problems with CMake identifying itself as amd64 causing x86_64 tests to fail<br class="">
* Migrating buildbots<br class="">
* We need to make sure libc++ works properly on Darwin<br class="">
* Put together a “cheat sheet” document for transitioning<br class="">
 - If you have an autoconf workflow you’d like to see in the cheat sheet please send your commands my way and I‘ll assemble the cheat sheet.<br class="">
<br class="">
If there is anything I’m missing please let me know. Thanks,<br class="">
<br class="">
Thanks,<br class="">
-Chris<br class="">
_______________________________________________<br class="">
LLVM Developers mailing list<br class="">
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank" class="">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu/" target="_blank" class="">http://llvm.cs.uiuc.edu</a><br class="">
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><u class=""></u><u class=""></u></p>
</blockquote>
</div><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
</div>
</div>
</div>
</div>
</div><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
</div>
</blockquote>
</div><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
</div>
</div>
</blockquote>
</div><p class="MsoNormal"> <u class=""></u><u class=""></u></p>
</div>
</div>
</div>
</div>
</div><p class="MsoNormal" style="margin-bottom:12.0pt"><br class="">
_______________________________________________<br class="">
LLVM Developers mailing list<br class="">
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank" class="">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu/" target="_blank" class="">http://llvm.cs.uiuc.edu</a><br class="">
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><u class=""></u><u class=""></u></p>
</blockquote>
</div><p class="MsoNormal"><u class=""></u> <u class=""></u></p>
</div>
</div></div></div>
</div>

</blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></div></body></html>