On 10/24/2010 11:52 PM, Yaakov (Cygwin/X) wrote:
On Fri, 2010-10-22 at 13:12 +0000, Rolf Eike Beer wrote:
So this is only different from what other build tools or whatever do. But
it is well known behaviour, it is documented, and it can't be changed for
backward compatibility anyway.

The only platform which this affects is Cygwin, we (the Cygwin package
maintainers) regard this as a bug, and therefore are not concerned with
backward compatibility.

Let me make this clear: with WIN32 defined, CMake is practically
*useless* to us on Cygwin, as it requires patching almost every
CMake-based package to build correctly.  With WIN32 undefined, almost
all packages build OOTB.  Simple as that.  Shouldn't we -- the users and
distributors of Cygwin -- have the final say as to how Cygwin should be
handled?


The problem is Cygwin has changed over time (IMO). In the beginning when CMake started to support Cygwin we used as a way to build win32 applications with a free compiler. The charter for cygwin seems to have changed over the years to be a linux/unix system on top of windows where the default is to build X11 API applications. For the past decade, the majority of VTK users of cygwin used the win32 api when using cygwin and not X11.

However, I can see the point of wanting unix/linux applications to build out of the box on cygwin with no changes. Not sure I agree with using X11 on windows, but hey it is the quickest way to get an application running.

At the end of the day, CMake should be following the majority of the cygwin applications. However, I really don't want to break the code of the people that have spent the time to get applications working on cygwin with CMake over the past 10 years. That is what would happen if we suddenly changed CMake without warning. The only applications that would break are the ones where people actually made an effort to port to cygwin using CMake.

So, I think the only way to fix this is to create a new policy. The policy will warn all cygwin builds that CMake is no longer defining WIN32 on cygwin. As with all policies, if a project has the minimum required CMake set to the version of CMake that implements the policy the new behavior will happen. I know this will not make Yaakov totally happy as CMake based applications will not work unless they bump up the version of CMake they require, but over time all will be well. The only other option that might make the cygwin X11 crowd happier would be to add a --cygwin-mode that forced the policy to be NEW, and would provide an easy way for Yaakov to port applications without having to change the source of the application being ported.

Some info on policies:
http://www.cmake.org/cmake/help/cmake-2-8-docs.html#section_Policies

-Bill


_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to