add_test: Honor CROSSCOMPILING_EMULATOR only when cross-compiling

Add policy CMP0158 to provide compatibility for existing projects.

Fixes: #23672
This commit is contained in:
Ralf Habacker
2023-11-02 17:48:15 +01:00
committed by Brad King
parent daf8da8c80
commit ca5a300d7f
13 changed files with 163 additions and 2 deletions
+27
View File
@@ -0,0 +1,27 @@
CMP0158
-------
.. versionadded:: 3.29
:command:`add_test` honors :variable:`CMAKE_CROSSCOMPILING_EMULATOR` only
when :variable:`cross-compiling <CMAKE_CROSSCOMPILING>`.
In CMake 3.28 and below, :command:`add_test` unconditionally used the
:prop_tgt:`CROSSCOMPILING_EMULATOR` target property (initialized by the
:variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable) to run test commands
naming executable targets. CMake 3.29 and above prefer to use the emulator
only when the :variable:`CMAKE_CROSSCOMPILING` variable is enabled. The
:variable:`CMAKE_TEST_LAUNCHER` variable may be used instead when not
cross-compiling. This policy provides compatibility for projects that
have not been updated.
The ``OLD`` behavior for this policy is for :command:`add_test` to use
the :prop_tgt:`CROSSCOMPILING_EMULATOR` target property unconditionally.
The ``NEW`` behavior for this policy is for :command:`add_test` to use
the :prop_tgt:`CROSSCOMPILING_EMULATOR` target property only when
:variable:`cross-compiling <CMAKE_CROSSCOMPILING>`.
This policy was introduced in CMake version 3.29. Use the
:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
Unlike many policies, CMake version |release| does *not* warn
when this policy is not set and simply uses ``OLD`` behavior.