From 05a3bafe650ae7f567c50abbdf626fca9ac2b3df Mon Sep 17 00:00:00 2001
From: Lorenzo Cappelletti <lorenzo.cappelletti@gmail.com>
Date: Mon, 19 Jul 2021 10:29:48 +0200
Subject: Compiler/IAR: Avoid clobbering CMAKE_EXECUTABLE_SUFFIX

Use `CMAKE_EXECUTABLE_SUFFIX_<LANG>` instead.

Fixes: #22426
---
 Modules/Compiler/IAR.cmake | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Modules/Compiler/IAR.cmake b/Modules/Compiler/IAR.cmake
index 8bfc3ef..a6b436a 100644
--- a/Modules/Compiler/IAR.cmake
+++ b/Modules/Compiler/IAR.cmake
@@ -41,7 +41,7 @@
 include_guard()
 
 macro(__compiler_iar_ilink lang)
-  set(CMAKE_EXECUTABLE_SUFFIX ".elf")
+  set(CMAKE_EXECUTABLE_SUFFIX_${lang} ".elf")
   set(CMAKE_${lang}_OUTPUT_EXTENSION ".o")
   if (${lang} STREQUAL "C" OR ${lang} STREQUAL "CXX")
     set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
@@ -77,7 +77,7 @@ macro(__compiler_iar_ilink lang)
 endmacro()
 
 macro(__compiler_iar_xlink lang)
-  set(CMAKE_EXECUTABLE_SUFFIX ".bin")
+  set(CMAKE_EXECUTABLE_SUFFIX_${lang} ".bin")
   if (${lang} STREQUAL "C" OR ${lang} STREQUAL "CXX")
 
     set(CMAKE_${lang}_COMPILE_OBJECT             "<CMAKE_${lang}_COMPILER> ${CMAKE_IAR_${lang}_FLAG} --silent <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT>")
-- 
cgit v0.12


From 09bc0785eeae95e23f9ac5c2e945fa89cb994912 Mon Sep 17 00:00:00 2001
From: Lorenzo Cappelletti <lorenzo.cappelletti@gmail.com>
Date: Mon, 19 Jul 2021 10:31:41 +0200
Subject: Help: Document CMAKE_EXECUTABLE_SUFFIX_<LANG> explicitly

Documentation for `CMAKE_EXECUTABLE_SUFFIX_<LANG>`, useful when
cross-compiling, is buried in section `CMAKE_EXECUTABLE_SUFFIX`.
---
 Help/manual/cmake-variables.7.rst              | 1 +
 Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst      | 3 ++-
 Help/variable/CMAKE_EXECUTABLE_SUFFIX_LANG.rst | 7 +++++++
 3 files changed, 10 insertions(+), 1 deletion(-)
 create mode 100644 Help/variable/CMAKE_EXECUTABLE_SUFFIX_LANG.rst

diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index 39fbbed..9cea0fb 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -53,6 +53,7 @@ Variables that Provide Information
    /variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION
    /variable/CMAKE_EDIT_COMMAND
    /variable/CMAKE_EXECUTABLE_SUFFIX
+   /variable/CMAKE_EXECUTABLE_SUFFIX_LANG
    /variable/CMAKE_EXTRA_GENERATOR
    /variable/CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES
    /variable/CMAKE_FIND_DEBUG_MODE
diff --git a/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst b/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst
index 356590f..bc4b9df 100644
--- a/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst
+++ b/Help/variable/CMAKE_EXECUTABLE_SUFFIX.rst
@@ -6,4 +6,5 @@ The suffix for executables on this platform.
 The suffix to use for the end of an executable filename if any, ``.exe``
 on Windows.
 
-``CMAKE_EXECUTABLE_SUFFIX_<LANG>`` overrides this for language ``<LANG>``.
+:variable:`CMAKE_EXECUTABLE_SUFFIX_<LANG>` overrides this for
+language ``<LANG>``.
diff --git a/Help/variable/CMAKE_EXECUTABLE_SUFFIX_LANG.rst b/Help/variable/CMAKE_EXECUTABLE_SUFFIX_LANG.rst
new file mode 100644
index 0000000..a68150e
--- /dev/null
+++ b/Help/variable/CMAKE_EXECUTABLE_SUFFIX_LANG.rst
@@ -0,0 +1,7 @@
+CMAKE_EXECUTABLE_SUFFIX_<LANG>
+------------------------------
+
+The suffix to use for the end of an executable filename of ``<LANG>``
+compiler target architecture, if any.
+
+It overrides :variable:`CMAKE_EXECUTABLE_SUFFIX` for language ``<LANG>``.
-- 
cgit v0.12