CMake/Modules/Platform
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
..
AIX-GNU-C.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
AIX-GNU-CXX.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
AIX-GNU-Fortran.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
AIX-GNU.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
AIX-VisualAge-C.cmake Split XL compiler information files 2009-09-30 09:37:35 -04:00
AIX-VisualAge-CXX.cmake Split XL compiler information files 2009-09-30 09:37:35 -04:00
AIX-XL-C.cmake Split XL compiler information files 2009-09-30 09:37:35 -04:00
AIX-XL-CXX.cmake Split XL compiler information files 2009-09-30 09:37:35 -04:00
AIX-XL-Fortran.cmake Split XL compiler information files 2009-09-30 09:37:35 -04:00
AIX.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
BSDOS.cmake BUG: also include UnixPaths.cmake on these platforms, this also sets UNIX to 1 2007-08-10 08:54:42 -04:00
BeOS.cmake Reduce duplication in Platform/<os>.cmake files 2009-12-02 15:17:53 -05:00
BlueGeneL.cmake ENH: Rename SET_PROPERITES command to SET_PROPERTY and give it a more powerful signature. 2008-01-17 15:54:49 -05:00
BlueGeneP-base.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-dynamic-GNU-C.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-dynamic-GNU-CXX.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-dynamic-GNU-Fortran.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-dynamic-XL-C.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-dynamic-XL-CXX.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-dynamic-XL-Fortran.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-dynamic.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-static-GNU-C.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-static-GNU-CXX.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-static-GNU-Fortran.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-static-XL-C.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-static-XL-CXX.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-static-XL-Fortran.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
BlueGeneP-static.cmake Add platform files for BlueGene/P systems 2010-08-13 12:17:57 -04:00
CYGWIN-GNU-C.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
CYGWIN-GNU-CXX.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
CYGWIN-GNU-Fortran.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
CYGWIN-GNU.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
CYGWIN.cmake Cygwin: Do not define 'WIN32' (#10122) 2010-12-17 14:19:58 -05:00
Catamount.cmake ENH: Rename SET_PROPERITES command to SET_PROPERTY and give it a more powerful signature. 2008-01-17 15:54:49 -05:00
Darwin-GNU-C.cmake Fix issue #10155 - default value of CMAKE_OSX_DEPLOYMENT_TARGET should always be the empty string. When the value of CMAKE_OSX_DEPLOYMENT_TARGET is the empty string, the -mmacosx-version-min flag should not show up on the compiler command line. The logic for selecting default value of CMAKE_OSX_SYSROOT is orthogonal to and independent of the value of the deployment target. The default value for CMAKE_OSX_SYSROOT is the SDK that corresponds to the current version of Mac OSX on which cmake is running. 2010-01-29 11:56:35 -05:00
Darwin-GNU-CXX.cmake Fix issue #10155 - default value of CMAKE_OSX_DEPLOYMENT_TARGET should always be the empty string. When the value of CMAKE_OSX_DEPLOYMENT_TARGET is the empty string, the -mmacosx-version-min flag should not show up on the compiler command line. The logic for selecting default value of CMAKE_OSX_SYSROOT is orthogonal to and independent of the value of the deployment target. The default value for CMAKE_OSX_SYSROOT is the SDK that corresponds to the current version of Mac OSX on which cmake is running. 2010-01-29 11:56:35 -05:00
Darwin-GNU-Fortran.cmake Fix OS X dylib and module GNU flags 2009-12-02 15:09:03 -05:00
Darwin-GNU.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
Darwin-VisualAge-C.cmake Split XL compiler information files 2009-09-30 09:37:35 -04:00
Darwin-VisualAge-CXX.cmake Split XL compiler information files 2009-09-30 09:37:35 -04:00
Darwin-XL-C.cmake Split XL compiler information files 2009-09-30 09:37:35 -04:00
Darwin-XL-CXX.cmake Split XL compiler information files 2009-09-30 09:37:35 -04:00
Darwin-icc.cmake BUG: Remove implicit include dir suppression 2009-02-24 15:37:09 -05:00
Darwin-icpc.cmake ENH: Add Intel compiler module files for the Mac. Thanks to Mike Jackson for contributing. 2008-03-31 08:04:12 -04:00
Darwin.cmake Pass Mac linker flag through PGI compiler using "-Wl," 2010-11-22 08:43:13 -05:00
DragonFly.cmake ENH: add DragonFly BSD, which is very close to FreeBSD (#4500) 2007-07-13 11:20:42 -04:00
FreeBSD.cmake Reduce duplication in Platform/<os>.cmake files 2009-12-02 15:17:53 -05:00
GNU.cmake GNU/Hurd platform support fixes (#9873) 2010-07-29 10:43:03 -04:00
Generic-ADSP-ASM.cmake ENH: add support for the ADSP toolchains for Blackfin, Shark and TigerShark 2007-07-12 13:41:00 -04:00
Generic-ADSP-C.cmake ENH: add support for the ADSP toolchains for Blackfin, Shark and TigerShark 2007-07-12 13:41:00 -04:00
Generic-ADSP-CXX.cmake ENH: add support for the ADSP toolchains for Blackfin, Shark and TigerShark 2007-07-12 13:41:00 -04:00
Generic-ADSP-Common.cmake ENH: add support for the ADSP toolchains for Blackfin, Shark and TigerShark 2007-07-12 13:41:00 -04:00
Generic-SDCC-C.cmake ENH: Create COMPILE_DEFINITIONS property for targets and source files. Create <config>_COMPILE_DEFINITIONS property as per-configuration version. Add Preprocess test to test the feature. Document limitations on Xcode and VS6 generators. 2008-01-14 09:20:58 -05:00
Generic.cmake -add basic search directories for the "Generic" platform 2010-04-14 22:09:19 +02:00
HP-UX-GNU-C.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
HP-UX-GNU-CXX.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
HP-UX-GNU-Fortran.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
HP-UX-GNU.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
HP-UX.cmake HP-UX: Always add /usr/lib to rpath (#10571) 2010-09-07 08:44:19 -04:00
Haiku.cmake Reduce duplication in Platform/<os>.cmake files 2009-12-02 15:17:53 -05:00
IRIX.cmake Reduce duplication in Platform/<os>.cmake files 2009-12-02 15:17:53 -05:00
IRIX64.cmake Reduce duplication in Platform/<os>.cmake files 2009-12-02 15:17:53 -05:00
Linux-Clang-C.cmake Recognize Clang C and C++ compilers (see #10693) 2010-05-17 14:11:20 -04:00
Linux-Clang-CXX.cmake Recognize Clang C and C++ compilers (see #10693) 2010-05-17 14:11:20 -04:00
Linux-GNU-C.cmake Create Linux GNU compiler flag consolidation macro 2010-01-13 08:13:19 -05:00
Linux-GNU-CXX.cmake Create Linux GNU compiler flag consolidation macro 2010-01-13 08:13:19 -05:00
Linux-GNU-Fortran.cmake Create Linux GNU compiler flag consolidation macro 2010-01-13 08:13:19 -05:00
Linux-GNU.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
Linux-Intel-C.cmake Consolidate Linux Intel compiler information 2009-12-04 09:20:24 -05:00
Linux-Intel-CXX.cmake Consolidate Linux Intel compiler information 2009-12-04 09:20:24 -05:00
Linux-Intel-Fortran.cmake Consolidate Linux Intel compiler information 2009-12-04 09:20:24 -05:00
Linux-Intel.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
Linux-PGI-C.cmake Generalize support for Portland Group Compiler 2009-12-04 10:21:57 -05:00
Linux-PGI-CXX.cmake Generalize support for Portland Group Compiler 2009-12-04 10:21:57 -05:00
Linux-PGI-Fortran.cmake Generalize support for Portland Group Compiler 2009-12-04 10:21:57 -05:00
Linux-PGI.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
Linux-PathScale-C.cmake Add PathScale shared library flags on Linux 2010-01-21 09:09:27 -05:00
Linux-PathScale-CXX.cmake Add PathScale shared library flags on Linux 2010-01-21 09:09:27 -05:00
Linux-PathScale-Fortran.cmake Add PathScale shared library flags on Linux 2010-01-21 09:09:27 -05:00
Linux-PathScale.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
Linux-SunPro-CXX.cmake Fix rpath-link flag for SunPro C++ 5.11 on Linux 2010-06-07 10:15:58 -04:00
Linux-VisualAge-C.cmake Teach compiler id about VisualAge -> XL rebranding 2009-08-07 10:13:07 -04:00
Linux-VisualAge-CXX.cmake Fix XL C++ compiler flags on Linux 2009-09-16 12:33:24 -04:00
Linux-VisualAge-Fortran.cmake Teach compiler id about VisualAge -> XL rebranding 2009-08-07 10:13:07 -04:00
Linux-XL-C.cmake Remove GNU-specific flags from Linux.cmake 2009-12-04 10:22:30 -05:00
Linux-XL-CXX.cmake Remove GNU-specific flags from Linux.cmake 2009-12-04 10:22:30 -05:00
Linux-XL-Fortran.cmake Remove GNU-specific flags from Linux.cmake 2009-12-04 10:22:30 -05:00
Linux-como.cmake Drop -rdynamic from Linux build rules 2009-12-01 14:25:21 -05:00
Linux.cmake Remove GNU-specific flags from Linux.cmake 2009-12-04 10:22:30 -05:00
MP-RAS.cmake BUG: also include UnixPaths.cmake on these platforms, this also sets UNIX to 1 2007-08-10 08:54:42 -04:00
NetBSD.cmake Reduce duplication in Platform/<os>.cmake files 2009-12-02 15:17:53 -05:00
OSF1.cmake Tru64: Use full-path include directives in Makefiles (#10569) 2010-06-14 13:06:39 -04:00
OpenBSD.cmake OpenBSD: Work-around static/runtime linker inconsistency 2010-03-26 09:33:28 -04:00
OpenVMS.cmake ENH: use .exe on vms 2009-06-11 15:25:48 -04:00
QNX.cmake Reduce duplication in Platform/<os>.cmake files 2009-12-02 15:17:53 -05:00
RISCos.cmake BUG: also include UnixPaths.cmake on these platforms, this also sets UNIX to 1 2007-08-10 08:54:42 -04:00
SCO_SV.cmake ENH: add more search paths and add UnixPaths to all unix platforms 2006-03-27 10:46:42 -05:00
SINIX.cmake ENH: add more search paths and add UnixPaths to all unix platforms 2006-03-27 10:46:42 -05:00
SunOS-GNU-C.cmake Fix GNU C and Fortran flags on SunOS 2009-12-04 08:51:46 -05:00
SunOS-GNU-CXX.cmake Split GNU compiler information files 2009-12-02 09:52:00 -05:00
SunOS-GNU-Fortran.cmake Fix GNU C and Fortran flags on SunOS 2009-12-04 08:51:46 -05:00
SunOS-GNU.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
SunOS.cmake Move GNU flags from SunOS.cmake to SunOS-GNU.cmake 2009-12-02 16:58:52 -05:00
Tru64.cmake ENH: add more search paths and add UnixPaths to all unix platforms 2006-03-27 10:46:42 -05:00
ULTRIX.cmake ENH: add more search paths and add UnixPaths to all unix platforms 2006-03-27 10:46:42 -05:00
UNIX_SV.cmake ENH: add more search paths and add UnixPaths to all unix platforms 2006-03-27 10:46:42 -05:00
UnixPaths.cmake Search MacPorts /opt/local prefix on Mac 2010-09-01 08:50:51 -04:00
UnixWare.cmake ENH: add more search paths and add UnixPaths to all unix platforms 2006-03-27 10:46:42 -05:00
Windows-Borland-C.cmake Split Borland compiler information files 2009-10-08 11:56:07 -04:00
Windows-Borland-CXX.cmake Split Borland compiler information files 2009-10-08 11:56:07 -04:00
Windows-Borland.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
Windows-G95-Fortran.cmake Teach CMake how to work with G95 on mingw. 2010-03-23 11:32:40 -04:00
Windows-GNU-C.cmake Modernize GNU compiler info on Windows 2009-12-02 11:27:59 -05:00
Windows-GNU-CXX.cmake Modernize GNU compiler info on Windows 2009-12-02 11:27:59 -05:00
Windows-GNU-Fortran.cmake MinGW: Support long object file lists 2010-09-17 09:25:36 -04:00
Windows-GNU.cmake MinGW: Support long object file lists 2010-09-17 09:25:36 -04:00
Windows-Intel.cmake Add a module to determine if the intel linker supports manifest creation 2009-09-01 16:23:07 -04:00
Windows-NMcl.cmake ENH: add platform file for bounds checker 2008-08-15 15:07:56 -04:00
Windows-cl.cmake Fix Windows-cl.cmake so that at most one MSVC** variable is defined. 2010-05-05 17:08:06 -04:00
Windows-cl.cmake.in Fix missing set of MSVC10 and add CheckCompilerRelatedVariables test. 2010-04-30 00:46:24 -04:00
Windows-df.cmake Add module-dir flag for Compaq Visual Fortran (#11248) 2010-09-20 09:53:45 -04:00
Windows-g++.cmake BUG: Need Windows-g++.cmake module to support C++-only projects on Windows. 2006-02-09 14:18:48 -05:00
Windows-icl.cmake Pass objects to Intel linker using a response file 2010-08-10 09:34:12 -04:00
Windows-ifort.cmake Fix flags for Intel Fortran on Windows 2009-10-29 10:06:10 -04:00
Windows-wcl386.cmake Fix for bug 10388, fix various default flags. 2010-09-02 14:35:17 -04:00
Windows.cmake ENH: UNIX, CYGWIN, WIN32, APPLE, QNXNTO and BEOS are not longer set in 2007-08-09 14:45:23 -04:00
WindowsPaths.cmake Modules: Fix spelling 'To distributed' -> 'To distribute' 2010-08-09 08:48:31 -04:00
Xenix.cmake ENH: add more search paths and add UnixPaths to all unix platforms 2006-03-27 10:46:42 -05:00
cl.cmake ENH: Handle large object file lists on some platforms 2008-02-27 17:10:45 -05:00
eCos.cmake ENH: Fix eCos.cmake to not require a forced compiler 2008-02-11 17:01:02 -05:00
gas.cmake ENH: initial support for assembler in cmake, needs testing by our users 2007-06-28 09:14:27 -04:00
kFreeBSD.cmake Support GNU/kFreeBSD 2009-10-05 10:26:50 -04:00
syllable.cmake Reduce duplication in Platform/<os>.cmake files 2009-12-02 15:17:53 -05:00