diff options
author | Brad King <brad.king@kitware.com> | 2022-11-28 22:25:53 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2022-11-29 00:09:04 (GMT) |
commit | b47092fddb51e2e89fa083af5c15fb6b81f35186 (patch) | |
tree | e5902903bcb178caffd885abf8b0525ee50c6663 | |
parent | daa2fc5833ea8b50191b2dd0970703db17da3abf (diff) | |
download | CMake-b47092fddb51e2e89fa083af5c15fb6b81f35186.zip CMake-b47092fddb51e2e89fa083af5c15fb6b81f35186.tar.gz CMake-b47092fddb51e2e89fa083af5c15fb6b81f35186.tar.bz2 |
MinGW: Fix regression when windres is not found
The fix in commit e9755bc7c1 (MinGW: Restore using windres when
toolchain-prefixed name is not available, 2022-08-15, v3.24.1~4^2)
incorrectly listed two entries in `CMAKE_RC_COMPILER_INIT`, which is
only meant to have one value. Revise the logic to support multiple
platform-specific names for the Windows Resource Compiler while still
only using one name as the fallback when it is not found.
Fixes: #24190
Issue: #23841
-rw-r--r-- | Modules/CMakeDetermineRCCompiler.cmake | 15 | ||||
-rw-r--r-- | Modules/Platform/Windows-GNU.cmake | 3 |
2 files changed, 11 insertions, 7 deletions
diff --git a/Modules/CMakeDetermineRCCompiler.cmake b/Modules/CMakeDetermineRCCompiler.cmake index f8d55a5..d22741b 100644 --- a/Modules/CMakeDetermineRCCompiler.cmake +++ b/Modules/CMakeDetermineRCCompiler.cmake @@ -30,16 +30,19 @@ if(NOT CMAKE_RC_COMPILER) # finally list compilers to try if(CMAKE_RC_COMPILER_INIT) - set(CMAKE_RC_COMPILER_LIST ${CMAKE_RC_COMPILER_INIT}) - else() - set(CMAKE_RC_COMPILER_LIST rc) + set(_CMAKE_RC_COMPILER_LIST ${CMAKE_RC_COMPILER_INIT}) + set(_CMAKE_RC_COMPILER_FALLBACK ${CMAKE_RC_COMPILER_INIT}) + elseif(NOT _CMAKE_RC_COMPILER_LIST) + set(_CMAKE_RC_COMPILER_LIST rc) endif() # Find the compiler. - find_program(CMAKE_RC_COMPILER NAMES ${CMAKE_RC_COMPILER_LIST} DOC "RC compiler") - if(CMAKE_RC_COMPILER_INIT AND NOT CMAKE_RC_COMPILER) - set(CMAKE_RC_COMPILER "${CMAKE_RC_COMPILER_INIT}" CACHE FILEPATH "RC compiler" FORCE) + find_program(CMAKE_RC_COMPILER NAMES ${_CMAKE_RC_COMPILER_LIST} DOC "RC compiler") + if(_CMAKE_RC_COMPILER_FALLBACK AND NOT CMAKE_RC_COMPILER) + set(CMAKE_RC_COMPILER "${_CMAKE_RC_COMPILER_FALLBACK}" CACHE FILEPATH "RC compiler" FORCE) endif() + unset(_CMAKE_RC_COMPILER_FALLBACK) + unset(_CMAKE_RC_COMPILER_LIST) endif() mark_as_advanced(CMAKE_RC_COMPILER) diff --git a/Modules/Platform/Windows-GNU.cmake b/Modules/Platform/Windows-GNU.cmake index bf96e63..088b238 100644 --- a/Modules/Platform/Windows-GNU.cmake +++ b/Modules/Platform/Windows-GNU.cmake @@ -157,7 +157,8 @@ macro(__windows_compiler_gnu lang) endif() if(NOT CMAKE_RC_COMPILER_INIT AND NOT CMAKE_GENERATOR_RC) - set(CMAKE_RC_COMPILER_INIT ${_CMAKE_TOOLCHAIN_PREFIX}windres windres) + set(_CMAKE_RC_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}windres windres) + set(_CMAKE_RC_COMPILER_FALLBACK windres) endif() enable_language(RC) |