From ff03db6657c38c8cf992877ea66174c33d0bcb0b Mon Sep 17 00:00:00 2001 From: Aditya Vidyadhar Kamath Date: Thu, 6 Feb 2025 22:39:32 -0600 Subject: [PATCH] AIX: Add platform id variables 'AIX' and 'CMAKE_HOST_AIX' This allows projects to use `if(AIX)` blocks instead of spelling out `if(CMAKE_SYSTEM_NAME STREQUAL "AIX")`. We already have similar variables for many other platforms. --- Help/manual/cmake-variables.7.rst | 2 ++ Help/release/4.0.rst | 3 +++ Help/variable/AIX.rst | 6 ++++++ Help/variable/CMAKE_HOST_AIX.rst | 6 ++++++ Modules/CMakeSystemSpecificInitialize.cmake | 1 + Modules/Platform/AIX-Initialize.cmake | 1 + Source/cmStateSnapshot.cxx | 5 +++++ 7 files changed, 24 insertions(+) create mode 100644 Help/variable/AIX.rst create mode 100644 Help/variable/CMAKE_HOST_AIX.rst diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index b367ffcd57..200fc18e86 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -323,6 +323,7 @@ Variables that Describe the System .. toctree:: :maxdepth: 1 + /variable/AIX /variable/ANDROID /variable/APPLE /variable/BORLAND @@ -331,6 +332,7 @@ Variables that Describe the System /variable/CMAKE_CL_64 /variable/CMAKE_COMPILER_2005 /variable/CMAKE_HOST_APPLE + /variable/CMAKE_HOST_AIX /variable/CMAKE_HOST_BSD /variable/CMAKE_HOST_EXECUTABLE_SUFFIX /variable/CMAKE_HOST_LINUX diff --git a/Help/release/4.0.rst b/Help/release/4.0.rst index a00d3b7236..9e48ec7dd2 100644 --- a/Help/release/4.0.rst +++ b/Help/release/4.0.rst @@ -41,6 +41,9 @@ Commands Variables --------- +* The :variable:`AIX` and :variable:`CMAKE_HOST_AIX` variables are + now set to true when the target or host system is AIX, respectively. + * Linker flag variables learned to support the ``LINKER:`` prefix: * :variable:`CMAKE_EXE_LINKER_FLAGS` diff --git a/Help/variable/AIX.rst b/Help/variable/AIX.rst new file mode 100644 index 0000000000..b07418df12 --- /dev/null +++ b/Help/variable/AIX.rst @@ -0,0 +1,6 @@ +AIX +--- + +.. versionadded:: 4.0 + +Set to true when the target system is AIX. diff --git a/Help/variable/CMAKE_HOST_AIX.rst b/Help/variable/CMAKE_HOST_AIX.rst new file mode 100644 index 0000000000..8037796da4 --- /dev/null +++ b/Help/variable/CMAKE_HOST_AIX.rst @@ -0,0 +1,6 @@ +CMAKE_HOST_AIX +-------------- + +.. versionadded:: 4.0 + +Set to true when the host system is AIX. diff --git a/Modules/CMakeSystemSpecificInitialize.cmake b/Modules/CMakeSystemSpecificInitialize.cmake index ee8cb860c2..313187795a 100644 --- a/Modules/CMakeSystemSpecificInitialize.cmake +++ b/Modules/CMakeSystemSpecificInitialize.cmake @@ -17,6 +17,7 @@ unset(MSYS) unset(WIN32) unset(BSD) unset(LINUX) +unset(AIX) # The CMAKE_EFFECTIVE_SYSTEM_NAME is used to load compiler and compiler # wrapper configuration files. By default it equals to CMAKE_SYSTEM_NAME diff --git a/Modules/Platform/AIX-Initialize.cmake b/Modules/Platform/AIX-Initialize.cmake index 0b117a7b2f..b42e58e06d 100644 --- a/Modules/Platform/AIX-Initialize.cmake +++ b/Modules/Platform/AIX-Initialize.cmake @@ -1 +1,2 @@ +set(AIX 1) set(UNIX 1) diff --git a/Source/cmStateSnapshot.cxx b/Source/cmStateSnapshot.cxx index 8de9188779..ec84323488 100644 --- a/Source/cmStateSnapshot.cxx +++ b/Source/cmStateSnapshot.cxx @@ -325,6 +325,11 @@ void cmStateSnapshot::SetDefaultDefinitions() this->SetDefinition("CMAKE_HOST_LINUX", "1"); #endif +#if defined(_AIX) + this->SetDefinition("AIX", "1"); + this->SetDefinition("CMAKE_HOST_AIX", "1"); +#endif + this->SetDefinition("CMAKE_MAJOR_VERSION", std::to_string(cmVersion::GetMajorVersion())); this->SetDefinition("CMAKE_MINOR_VERSION",