CMP0089 — CMake 4.2.6 Documentation

# CMP0089

Added in version 3.15.

Compiler id for IBM Clang-based XL compilers is now `XLClang`.

CMake 3.15 and above recognize that IBM's Clang-based XL compilers that define `__ibmxl__` are a new front-end distinct from `xlc` with a different command line and set of capabilities. CMake now prefers to present this to projects by setting the `CMAKE_<LANG>_COMPILER_ID` variable to `XLClang` instead of `XL`. However, existing projects may assume the compiler id for Clang-based XL is just `XL` as it was in CMake versions prior to 3.15. Therefore this policy determines for Clang-based XL compilers which compiler id to report in the `CMAKE_<LANG>_COMPILER_ID` variable after language `<LANG>` is enabled by the `project()` or `enable_language()` command. The policy must be set prior to the invocation of either command.

The `OLD` behavior for this policy is to use compiler id `XL`. The `NEW` behavior for this policy is to use compiler id `XLClang`.

This policy was introduced in CMake version 3.15. It may be set by `cmake_policy()` or `cmake_minimum_required()`. If it is not set, CMake does not warn by default, and uses `OLD` behavior.

See documentation of the `CMAKE_POLICY_WARNING_CMP0089` variable to control the warning.

Note

The `OLD` behavior of a policy is `deprecated by definition` and may be removed in a future version of CMake.