Help: Transform CMAKE_SYSTEM_NAME tables into lists

Changes:
- Added some initial operating system family categories (Apple, UNIX,
  Windows).
- Used list instead of table. Unlike the tables, lists provide
  documenting additional info and CMake versions.
- Added CMake versions to most values where they were introduced or
  could be determined from the Git log.
- Additionally added the OHOS value to the list (introduced via #25987)
- Emscripten name was used by toolchain files also before CMake 4.2 but
  documented with this version.
This commit is contained in:
Peter Kokot authored and Brad King committed 2026-02-25 15:51:20 -05:00
1 parent 3a4811fdac
commit 45296cde2d
1 file changed
+253 -79
+253 -79
View File
@@ -28,96 +28,270 @@ System Names Known to CMake
The following is a list of possible values, each associated with corresponding
operating systems or environments.
=========================== ======================================================
Value Name
=========================== ======================================================
``ADSP`` Analog Devices Audio Digital Signal Processing
``AIX`` IBM Unix operating system
``Android`` Android operating system
``ARTOS`` Operating system for microcontrollers
``BeOS`` Operating system for personal computers (discontinued)
``BlueGeneL`` Blue Gene/L static environment
``BlueGeneP-dynamic`` Blue Gene/P dynamic environment
``BlueGeneP-static`` Blue Gene/P static environment
``BlueGeneQ-dynamic`` Blue Gene/Q dynamic environment
``BlueGeneQ-static`` Blue Gene/Q static environment
``BSDOS`` BSD operating system (discontinued)
``Catamount`` Operating system for Cray XT series
``CrayLinuxEnvironment`` Cray Linux Environment
``CYGWIN`` Cygwin environment for Windows
``Darwin`` Apple stationary operating systems (macOS, OS X, etc.)
``DOS`` MS-DOS or compatible
``DragonFly`` BSD-derived operating system
``eCos`` Real-time embedded operating system
``Emscripten`` Compiler toolchain to WebAssembly
``Euros`` Real-time operating system for embedded devices
``FreeBSD`` FreeBSD operating system
``Fuchsia`` Operating system by Google based on the Zircon kernel
``Generic-ADSP`` Generic ADSP (Audio DSP) environment
``Generic-ELF`` Generic ELF (Executable and Linkable Format) environment
``Generic`` Some platforms, e.g. bare metal embedded devices
``GHS-MULTI`` Green Hills Software MULTI environment
``GNU`` GNU/Hurd-based operating system
``Haiku`` Unix operating system inspired by BeOS
``HP-UX`` Hewlett Packard Unix (discontinued)
``iOS`` Apple mobile phone operating system
``Linux`` All Linux-based distributions
``Midipix`` POSIX-compatible layer for Windows
``MirBSD`` MirOS BSD operating system
``MP-RAS`` MP-RAS UNIX operating system
``MSYS`` MSYS environment (MSYSTEM=MSYS)
``NetBSD`` NetBSD operating systems
``OpenBSD`` OpenBSD operating systems
``OpenVMS`` OpenVMS operating system by HP
``OS2`` OS/2 operating system
``OSF1`` Compaq Tru64 UNIX (formerly DEC OSF/1, Digital Unix) (discontinued)
``QNX`` Unix-like operating system by BlackBerry
``RISCos`` RISC OS operating system
``SCO_SV`` SCO OpenServer 5
``SerenityOS`` Unix-like operating system
``SINIX`` SINIX operating system
``SunOS`` Oracle Solaris and all illumos operating systems
``syllable`` Syllable operating system
``Tru64`` Compaq Tru64 UNIX (formerly DEC OSF/1) operating system
``tvOS`` Apple TV operating system
``ULTRIX`` Unix operating system (discontinued)
``UNIX_SV`` SCO UnixWare (pre release 7)
``UnixWare`` SCO UnixWare 7
``visionOS`` Apple mixed reality operating system
``WASI`` WebAssembly System Interface
``watchOS`` Apple watch operating system
``Windows`` Windows stationary operating systems
``WindowsCE`` Windows Embedded Compact
``WindowsKernelModeDriver`` Windows Kernel-Mode Driver
``WindowsPhone`` Windows mobile phone operating system
``WindowsStore`` Universal Windows Platform applications
``Xenix`` SCO Xenix Unix operating system (discontinued)
=========================== ======================================================
Apple Platforms
"""""""""""""""
Platform-specific notes:
``Darwin``
Apple stationary operating systems (macOS, OS X, etc.)
* MSYS2's ``msys/cmake`` package (``/usr/bin/cmake``) works only under
``iOS``
.. versionadded:: 3.14
Apple mobile phone operating system
``tvOS``
.. versionadded:: 3.14
Apple TV operating system
``visionOS``
.. versionadded:: 3.28
Apple mixed reality operating system
``watchOS``
.. versionadded:: 3.14
Apple watch operating system
UNIX Platforms
""""""""""""""
``ADSP``
Analog Devices Audio Digital Signal Processing
``AIX``
IBM Unix operating system
``Android``
.. versionadded:: 3.1
Android operating system
``ARTOS``
.. versionadded:: 3.4
Operating system for microcontrollers
``BeOS``
Operating system for personal computers (discontinued)
``BlueGeneL``
Blue Gene/L static environment
``BlueGeneP-dynamic``
Blue Gene/P dynamic environment
``BlueGeneP-static``
Blue Gene/P static environment
``BlueGeneQ-dynamic``
.. versionadded:: 3.3
Blue Gene/Q dynamic environment
``BlueGeneQ-static``
.. versionadded:: 3.3
Blue Gene/Q static environment
``BSDOS``
BSD operating system (discontinued)
``Catamount``
Operating system for Cray XT series
``CrayLinuxEnvironment``
.. versionadded:: 3.5
Cray Linux Environment
``DragonFly``
BSD-derived operating system
``eCos``
Real-time embedded operating system
``Emscripten``
.. versionadded:: 4.2
Compiler toolchain to WebAssembly.
``Euros``
.. versionadded:: 3.4
Real-time operating system for embedded devices
``FreeBSD``
FreeBSD operating system
``Fuchsia``
.. versionadded:: 3.8
Operating system by Google based on the Zircon kernel
``Generic-ADSP``
Generic ADSP (Audio DSP) environment
``Generic-ELF``
.. versionadded:: 3.23
Generic ELF (Executable and Linkable Format) environment
``Generic``
Some platforms, e.g. bare metal embedded devices
``GHS-MULTI``
.. versionadded:: 3.3
Green Hills Software MULTI environment
``GNU``
GNU/Hurd-based operating system
``Haiku``
Unix operating system inspired by BeOS
``HP-UX``
Hewlett Packard Unix (discontinued)
``Linux``
All Linux-based distributions
``MirBSD``
MirOS BSD operating system
``MP-RAS``
MP-RAS UNIX operating system
``NetBSD``
NetBSD operating systems
``OHOS``
.. versionadded:: 3.30
OpenHarmony family of operating systems (e.g., HarmonyOS)
Toolchain file can set this value when targeting OpenHarmony operating
systems.
``OpenBSD``
OpenBSD operating systems
``OpenVMS``
OpenVMS operating system by HP
``OS2``
.. versionadded:: 3.18
OS/2 operating system
``OSF1``
Compaq Tru64 UNIX (formerly DEC OSF/1, Digital Unix) (discontinued)
``QNX``
Unix-like operating system by BlackBerry
``RISCos``
RISC OS operating system
``SCO_SV``
SCO OpenServer 5
``SerenityOS``
.. versionadded:: 3.25
Unix-like operating system
``SINIX``
SINIX operating system
``SunOS``
Oracle Solaris and all illumos operating systems
``syllable``
Syllable operating system
``Tru64``
Compaq Tru64 UNIX (formerly DEC OSF/1) operating system
``ULTRIX``
Unix operating system (discontinued)
``UNIX_SV``
SCO UnixWare (pre release 7)
``UnixWare``
SCO UnixWare 7
``WASI``
.. versionadded:: 3.31
WebAssembly System Interface
``Xenix``
SCO Xenix Unix operating system (discontinued)
Windows Platforms
"""""""""""""""""
``CYGWIN``
Cygwin environment for Windows
Cygwin's ``cmake`` package (``/usr/bin/cmake``) uses system name ``CYGWIN``.
A non-cygwin CMake on Windows (e.g. ``$PROGRAMFILES/CMake/bin/cmake``)
uses system name ``Windows`` even when it runs under a Cygwin environment.
``DOS``
MS-DOS or compatible
``Midipix``
.. versionadded:: 3.10
POSIX-compatible layer for Windows
``MSYS``
MSYS environment (MSYSTEM=MSYS)
MSYS2's ``msys/cmake`` package (``/usr/bin/cmake``) works only under
``MSYSTEM=MSYS`` environments, with system name ``MSYS``. Under other
environments like ``MSYSTEM=MINGW64``, use another package such
as ``mingw64/mingw-w64-x86_64-cmake`` (``/mingw64/bin/cmake``),
which targets ``MSYSTEM=MINGW64`` with system name ``Windows``.
* Cygwin's ``cmake`` package (``/usr/bin/cmake``) uses system name ``CYGWIN``.
A non-cygwin CMake on Windows (e.g. ``$PROGRAMFILES/CMake/bin/cmake``)
uses system name ``Windows`` even when it runs under a Cygwin environment.
``Windows``
Windows stationary operating systems
* When building drivers for Kernel-Mode Driver Framework on Windows, toolchain
file can set ``CMAKE_SYSTEM_NAME`` value to ``WindowsKernelModeDriver``. See
also the :variable:`CMAKE_WINDOWS_KMDF_VERSION` variable.
``WindowsCE``
Windows Embedded Compact
``WindowsKernelModeDriver``
.. versionadded:: 4.1
Windows Kernel-Mode Driver
When building drivers for Kernel-Mode Driver Framework on Windows, toolchain
file can set this value. See also the :variable:`CMAKE_WINDOWS_KMDF_VERSION`
variable.
``WindowsPhone``
.. versionadded:: 3.1
Windows mobile phone operating system
``WindowsStore``
.. versionadded:: 3.1
Universal Windows Platform applications
Removed Platforms
^^^^^^^^^^^^^^^^^
"""""""""""""""""
The following platforms were once supported by CMake and got removed either due
to platform's EOL, or other incompatibilities:
========================= ===================================== ================
Value Name Removed in CMake
========================= ===================================== ================
``kFreeBSD`` FreeBSD kernel with a GNU userland 4.1
========================= ===================================== ================
``kFreeBSD``
.. versionchanged:: 4.1
Removed from CMake.
FreeBSD kernel with a GNU userland