<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;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Feb 24, 2015, at 11:56 AM, Chris Bieneman <<a href="mailto:beanz@apple.com" class="">beanz@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><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;" class=""><blockquote type="cite" class=""><div class=""><br class="Apple-interchange-newline">On Feb 24, 2015, at 11:13 AM, Mehdi Amini <<a href="mailto:mehdi.amini@apple.com" class="">mehdi.amini@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><blockquote type="cite" class="" 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;"><br class="Apple-interchange-newline">On Feb 24, 2015, at 9:33 AM, Chris Bieneman <<a href="mailto:beanz@apple.com" class="">beanz@apple.com</a>> wrote:<br class=""><br class=""><blockquote type="cite" class=""><br class="">On Feb 24, 2015, at 8:45 AM, Tobias Grosser <<a href="mailto:tobias@grosser.es" class="">tobias@grosser.es</a>> wrote:<br class=""><br class="">On 09.02.2015 20:12, Chris Bieneman wrote:<br class=""><blockquote type="cite" class="">It came up on another thread that our current minimum required CMake version 2.8.8, has some bugs that cause issues when building with MSVC + Ninja, and one potential solution was to raise the minimum required version of CMake.<br class=""><br class="">CMake 3.0 is now 6 months old and CMake 3.1 has been released. I would like to propose moving our minimum required CMake version to 3.0.<br class=""><br class="">I’ve attached patches to enforce the change in case anyone wants to test it out.<br class=""><br class="">Thoughts/comments/concerns/objections?<br class=""></blockquote><br class="">Hi Chris,<br class=""><br class="">this update broke my cmake LLVM+Polly buildbot (to my knowledge most other bots use autoconf). I reverted this temporarily to avoid the buildbot noise (this comes a little late, as I was traveling the last days).<br class=""></blockquote><br class="">Actually at this point I think most bots are on CMake. The green dragon bots are all CMake, Galina and Takumi’s bots are at least partially on CMake.<br class=""><br class=""><blockquote type="cite" class=""><br class="">The buildbot is based on the latest debian stable (wheezy), which comes with cmake 2.8.9. Is 2.8.9 enough to fix the bug?<br class=""></blockquote><br class="">No. The bug requires 2.8.12.1. I really wanted 3.0, but Chandler requested 2.8.12.2 because it was the version in the latest Ubuntu LTS.<br class=""><br class="">I’m going to put on my “unpopular opinion” hat for a second. I don’t think it is reasonable for us to limit our CMake version to the lowest common denominator of all Linux distributions. I really think the Linux developers should just do what I do on OS X and build it from source. Building CMake is really simple and fast.<br class=""><br class="">This is kinda a bit of a sore point for me because it turns out that our CMake goop for cross-compiling is pretty nasty, and there are features in CMake 3.x that make it a lot better. Unfortunately using the new features while supporting CMake 2.8.x would only make our goop goopier.<br class=""></blockquote><br class="" 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;"><span class="" 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; float: none; display: inline !important;">How does raising from 2.8.9 to 2.8.12.1 helps? It won’t bring the 3.x features that you’d like to have.</span><br class="" 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;"><br class="" 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;"><span class="" 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; float: none; display: inline !important;">As I understood it, bumping the version to 2.8.12.1 is motivated by a bug related to "MSVC + Ninja” (</span><a href="http://www.cmake.org/Bug/view.php?id=14492" class="" 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;">http://www.cmake.org/Bug/view.php?id=14492</a><span class="" 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; float: none; display: inline !important;"><span class="Apple-converted-space"> </span>)</span><br class="" 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;"></div></blockquote><div class=""><br class=""></div>Raising CMake 2.8.12.x allows us to remove a bunch of crufty hacks to support older versions, and it gets some critical bug fixes for Visual Studio and Xcode generators (like support for Xcode 5).</div></div></blockquote><blockquote type="cite" class=""><div class=""><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;" class="">There are a lot of features in 2.8.10, 2.8.11 and 2.8.12 that would be nice to have too.</div><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;" class=""><br class=""><blockquote type="cite" class=""><div class=""><br class="" 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;"><span class="" 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; float: none; display: inline !important;">If this is indeed a bug in CMake that affects one very specific platform/configuration, I don’t see this alone as a justification to raise the requirement for all the platform.  </span><br class="" 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;"><span class="" 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; float: none; display: inline !important;">It is up to the user of the platform not to use a CMake version that is buggy for their platform/configuration.</span><br class="" 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;"></div></blockquote><div class=""><br class=""></div><div class="">I actually think we should establish a policy for updating the minimum required version of CMake similar to how we update minimum required compiler versions. That will allow us to take advantage of the fact that the CMake team makes rapid progress without carrying a lot of baggage for maintaining compatibility of older versions.</div><div class=""><br class=""></div><div class="">For context. CMake 2.8.9 was released in 8/2012, 2.8.12 was released 11/2013, 3.0 was released 6/2014, and 3.1 was released 12/2014.</div><div class=""><br class=""></div><div class="">I suspect that supporting 2 releases back (like we do for VS) probably isn’t sufficient because that’s only about 6 months, but I think supporting back to 2012 is a bit much for CMake because the project is moving really quickly.</div></div></div></blockquote><div><br class=""></div></div><div class="">I agree that the same approach should be taken as for the compiler version, i.e. cost/benefit analysis.</div><div class=""><br class=""></div><div class="">The commit that was reverted alone does not show significant benefits in our CMake configuration files (10 lines removed to handle CMP0022 basically).</div><div class="">You are mentioning “a lot of features” that would be nice to have in 2.8.10/11/12. </div><div class="">What are these features and how/when do you plan to take advantage of these features?</div><div class="">If there is no short-term (next 6 months) plan to improve/extend our CMake infrastructure with these features, then this change can wait till then.</div><div class=""><br class=""></div><div class="">Thanks,</div><div class=""><br class=""></div><div class="">Mehdi</div><div class=""><br class=""></div></body></html>