# CMP0089

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. Use the `cmake_policy()` command to set this policy to `OLD` or `NEW` explicitly. Unlike most policies, CMake version 3.18.0-rc4 does not warn by default when this policy is not set and simply 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.