浏览代码

BSD: Set CMAKE_HOST_BSD variable on a BSD host

Also the BSD variable will be set in CMake scripting mode (-P).

Relates: #23853
Cristian Adam 3 年之前
父节点
当前提交
1ea8b8ed86

+ 1 - 0
Help/manual/cmake-variables.7.rst

@@ -309,6 +309,7 @@ Variables that Describe the System
    /variable/CMAKE_CL_64
    /variable/CMAKE_COMPILER_2005
    /variable/CMAKE_HOST_APPLE
+   /variable/CMAKE_HOST_BSD
    /variable/CMAKE_HOST_SOLARIS
    /variable/CMAKE_HOST_SYSTEM
    /variable/CMAKE_HOST_SYSTEM_NAME

+ 3 - 0
Help/release/dev/BSD.rst

@@ -3,3 +3,6 @@ Variables
 
 * The :variable:`BSD` variable is set to a string value when the target system is BSD.
   This value can be one of the following: DragonFlyBSD, FreeBSD, OpenBSD, or NetBSD.
+
+* The :variable:`CMAKE_HOST_BSD` variable is set to a string value when the host system is BSD.
+  This value can be one of the following: DragonFlyBSD, FreeBSD, OpenBSD, or NetBSD.

+ 7 - 0
Help/variable/CMAKE_HOST_BSD.rst

@@ -0,0 +1,7 @@
+CMAKE_HOST_BSD
+--------------
+
+.. versionadded:: 3.25
+
+Set to a string value when the host system is BSD. This value can be one of
+the following: DragonFlyBSD, FreeBSD, OpenBSD, or NetBSD.

+ 1 - 0
Modules/CMakeSystemSpecificInformation.cmake

@@ -16,6 +16,7 @@ set(UNIX   )
 set(CYGWIN )
 set(MSYS )
 set(WIN32  )
+set(BSD )
 
 function(_cmake_record_install_prefix )
   set(_CMAKE_SYSTEM_PREFIX_PATH_INSTALL_PREFIX_VALUE "${CMAKE_INSTALL_PREFIX}" PARENT_SCOPE)

+ 14 - 0
Source/cmStateSnapshot.cxx

@@ -317,6 +317,20 @@ void cmStateSnapshot::SetDefaultDefinitions()
   this->SetDefinition("CMAKE_HOST_SOLARIS", "1");
 #endif
 
+#if defined(__OpenBSD__)
+  this->SetDefinition("BSD", "OpenBSD");
+  this->SetDefinition("CMAKE_HOST_BSD", "OpenBSD");
+#elif defined(__FreeBSD__)
+  this->SetDefinition("BSD", "FreeBSD");
+  this->SetDefinition("CMAKE_HOST_BSD", "FreeBSD");
+#elif defined(__NetBSD__)
+  this->SetDefinition("BSD", "NetBSD");
+  this->SetDefinition("CMAKE_HOST_BSD", "NetBSD");
+#elif defined(__DragonFly__)
+  this->SetDefinition("BSD", "DragonFlyBSD");
+  this->SetDefinition("CMAKE_HOST_BSD", "DragonFlyBSD");
+#endif
+
   this->SetDefinition("CMAKE_MAJOR_VERSION",
                       std::to_string(cmVersion::GetMajorVersion()));
   this->SetDefinition("CMAKE_MINOR_VERSION",