My patches to CMake
Go to file
Brad King 85c0a69a92 Cygwin: Do not define 'WIN32' (#10122)
One of Cygwin's goals is to build projects using the POSIX API with no
Windows awareness.  Many CMake-built projects have been written to test
for UNIX and WIN32 but not CYGWIN.  The preferred behavior under Cygwin
in such projects is to take the UNIX path but not the WIN32 path.

Unfortunately this change is BACKWARDS INCOMPATIBLE for Cygwin-aware
CMake projects!  Some projects that previously built under Cygwin and
are Cygwin-aware when they test for WIN32 may now behave differently.
Eventually these projects will need to be updated, but to help users
build them in the meantime we print a warning about the change in
behavior.  Furthermore, one may set CMAKE_LEGACY_CYGWIN_WIN32 to request
old behavior during the transition.

Normally we avoid backwards incompatible changes, but we make an
exception in this case for a few reasons:

(1) This behavior is preferred by Cygwin's design goals.

(2) A warning provides a clear path forward for everyone who may see
incompatible behavior, and CMAKE_LEGACY_CYGWIN_WIN32 provides a
compatibility option.  The warning and compatibility option both
disappear when the minimum required version of CMake in a project is
sufficiently new, so this issue will simply go away over time as
projects are updated to account for the change.

(3) The fixes required to update projects are fairly insignificant.
Furthermore, the Cygwin distribution has no releases itself so project
versions that predate said fixes tend to be difficult to build anyway.

(4) This change enables many CMake-built projects that did not
previously build under Cygwin to work out-of-the-box.  From bug #10122:

  "I have built over 120 different source packages with (my patched)
   CMake, including most of KDE4, and have found that NOT defining
   WIN32 on Cygwin is much more accurate." -- Yaakov Selkowitz

A fully compatible change would require patches on top of these project
releases for Cygwin even though they otherwise need not be aware of it.

(5) Yaakov has been maintaining a fork of CMake with this change for the
Cygwin Ports distribution.  It works well in practice.  By accepting the
change in upstream CMake we avoid confusion between the versions.

CMake itself builds without WIN32 defined on Cygwin.  Simply disable
CMAKE_LEGACY_CYGWIN_WIN32 explicitly in our own CMakeLists.txt file.
2010-12-17 14:19:58 -05:00
Docs Improve cmake-completion (install doc, ctest -R completion) 2010-08-13 17:11:42 +02:00
Example ENH: updte to lower case and using ADD_SUBDIRECTORY 2005-06-27 12:44:11 -04:00
Modules Cygwin: Do not define 'WIN32' (#10122) 2010-12-17 14:19:58 -05:00
Source Cygwin: Do not define 'WIN32' (#10122) 2010-12-17 14:19:58 -05:00
Templates Add STATIC_LIBRARY_FLAGS_<CONFIG> property (#10768) 2010-05-28 11:09:10 -04:00
Tests Cygwin: Fix tests to check CYGWIN instead of WIN32 2010-12-17 09:46:24 -05:00
Utilities Merge topic 'fix_osf_build' 2010-11-09 15:53:55 -05:00
.gitattributes Add whitespace=tab-in-indent attribute for sources 2010-08-30 11:19:39 -04:00
CMakeCPack.cmake Fix CMake data and doc paths in Cygwin package 2010-06-09 11:34:38 -04:00
CMakeCPackOptions.cmake.in Use cmake-gui.exe for the install/uninstall icon for cmake. 2009-09-25 11:26:28 -04:00
CMakeGraphVizOptions.cmake ENH: Add a way to overwrite some preferences and ignore certain targets 2006-03-07 15:31:05 -05:00
CMakeLists.txt Cygwin: Do not define 'WIN32' (#10122) 2010-12-17 14:19:58 -05:00
CMakeLogo.gif ENH: fancier logo 2007-11-26 13:21:57 -05:00
CTestConfig.cmake Change to UTC for dashboard time. 2010-03-15 14:25:32 -04:00
CTestCustom.cmake.in Suppress "loop was vectorized" "warnings." 2010-11-08 11:30:19 -05:00
CTestCustom.ctest.in ENH: Create CTestCustom.cmake instead of CTestCustom.ctest. Create the old file to include the new one for compatibility. This should prevent the long delays of CTest traversing the whole tree looking for CTestCustom.ctest files. 2007-08-31 14:51:09 -04:00
ChangeLog.manual CMake 2.8.3 2010-11-03 13:38:38 -04:00
ChangeLog.txt Add new changelog to get ready for release 2009-09-23 16:45:29 -04:00
CompileFlags.cmake Re-disable MSVC CRT deprecation warnings 2009-10-28 08:42:20 -04:00
Copyright.txt Convert CMake to OSI-approved BSD License 2009-09-28 11:43:28 -04:00
DartConfig.cmake Convert CMake to OSI-approved BSD License 2009-09-28 11:43:28 -04:00
DartLocal.conf.in ENH: remove superior dean i, no longer uses borland 2007-12-03 20:44:43 -05:00
Readme.txt Convert CMake to OSI-approved BSD License 2009-09-28 11:43:28 -04:00
bootstrap bootstrap: Honor CFLAGS during "make" test (#10545) 2010-09-10 11:39:43 -04:00
cmake.1 ENH: Initial checkin of unix manpage. 2002-08-08 11:58:30 -04:00
cmake_uninstall.cmake.in BUG: Patch from bug#4312 to make uninstall work with DESTDIR. 2007-01-22 10:39:16 -05:00
configure Simplify bootstrap script source dir detection 2009-09-25 10:48:24 -04:00
doxygen.config BUG: fix for bug# 3921 INPUT wrong 2006-10-13 11:26:59 -04:00

Readme.txt

This is CMake, the cross-platform, open-source make system.
CMake is distributed under the BSD License, see Copyright.txt.
For documentation see the Docs/ directory once you have built CMake
or visit http://www.cmake.org.


Building CMake
==============


Supported Platforms
-------------------

MS Windows, Mac OS X, Linux, FreeBSD, Solaris, HP-UX, IRIX, BeOS, QNX

Other UNIX-like operating systems may work too out of the box, if not
it shouldn't be a major problem to port CMake to this platform. Contact the
CMake mailing list in this case: http://www.cmake.org/mailman/listinfo/cmake


If you don't have any previous version of CMake already installed
--------------------------------------------------------------

* UNIX/Mac OSX/MinGW/MSYS/Cygwin:

You need to have a compiler and a make installed.
Run the bootstrap script you find the in the source directory of CMake.
You can use the --help option to see the supported options.
You may want to use the --prefix=<install_prefix> option to specify a custom
installation directory for CMake. You can run the bootstrap script from
within the CMake source directory or any other build directory of your
choice. Once this has finished successfully, run make and make install.
So basically it's the same as you may be used to from autotools-based
projects:

$ ./bootstrap; make; make install


* Other Windows:

You need to download and install a binary release of CMake in order to build
CMake.  You can get these releases from
http://www.cmake.org/HTML/Download.html .  Then proceed with the instructions
below.


You already have a version of CMake installed
---------------------------------------------

You can build CMake as any other project with a CMake-based build system:
run the installed CMake on the sources of this CMake with your preferred
options and generators. Then build it and install it.
For instructions how to do this, see http://www.cmake.org/HTML/RunningCMake.html