From d28fcdc8d88815e57b2c7778d74e7979544ff9cc Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 8 Apr 2025 15:13:41 -0400 Subject: ASM: Simplify compiler candidate list variable name `ASM_DIALECT` is always empty for plain `ASM`. --- Modules/CMakeDetermineASMCompiler.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/CMakeDetermineASMCompiler.cmake b/Modules/CMakeDetermineASMCompiler.cmake index e0bcf5c..8b2d94f 100644 --- a/Modules/CMakeDetermineASMCompiler.cmake +++ b/Modules/CMakeDetermineASMCompiler.cmake @@ -22,12 +22,12 @@ if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER) if("ASM${ASM_DIALECT}" STREQUAL "ASM") # the generic assembler support if(NOT CMAKE_ASM_COMPILER_INIT) if(CMAKE_C_COMPILER) - set(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${CMAKE_C_COMPILER}) + set(CMAKE_ASM_COMPILER_LIST ${CMAKE_C_COMPILER}) elseif(CMAKE_CXX_COMPILER) - set(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${CMAKE_CXX_COMPILER}) + set(CMAKE_ASM_COMPILER_LIST ${CMAKE_CXX_COMPILER}) else() # List all default C and CXX compilers - set(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST + set(CMAKE_ASM_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc cl bcc xlc CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ aCC cl bcc xlC) endif() -- cgit v0.12 From abfe98ce6c670c19f790b4798f78528de36b52c4 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 8 Apr 2025 15:14:49 -0400 Subject: ASM: Consider C/CXX compilers only if enabled --- Modules/CMakeDetermineASMCompiler.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/CMakeDetermineASMCompiler.cmake b/Modules/CMakeDetermineASMCompiler.cmake index 8b2d94f..831792d 100644 --- a/Modules/CMakeDetermineASMCompiler.cmake +++ b/Modules/CMakeDetermineASMCompiler.cmake @@ -21,9 +21,9 @@ if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER) # finally list compilers to try if("ASM${ASM_DIALECT}" STREQUAL "ASM") # the generic assembler support if(NOT CMAKE_ASM_COMPILER_INIT) - if(CMAKE_C_COMPILER) + if(CMAKE_C_COMPILER_LOADED) set(CMAKE_ASM_COMPILER_LIST ${CMAKE_C_COMPILER}) - elseif(CMAKE_CXX_COMPILER) + elseif(CMAKE_CXX_COMPILER_LOADED) set(CMAKE_ASM_COMPILER_LIST ${CMAKE_CXX_COMPILER}) else() # List all default C and CXX compilers -- cgit v0.12 From b52882e1e30a3abcfcacbd793efbcaaffff7a7a3 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 8 Apr 2025 15:15:47 -0400 Subject: ASM: Drop outdated C compilers from assembler candidates --- Modules/CMakeDetermineASMCompiler.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/CMakeDetermineASMCompiler.cmake b/Modules/CMakeDetermineASMCompiler.cmake index 831792d..2ed5050 100644 --- a/Modules/CMakeDetermineASMCompiler.cmake +++ b/Modules/CMakeDetermineASMCompiler.cmake @@ -28,8 +28,8 @@ if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER) else() # List all default C and CXX compilers set(CMAKE_ASM_COMPILER_LIST - ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc cl bcc xlc - CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ aCC cl bcc xlC) + ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc cl xlc + CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ cl xlC) endif() endif() else() # some specific assembler "dialect" -- cgit v0.12 From 6baf65ec4659f31b29c0750a14692ddaf6bc91fc Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 8 Apr 2025 15:16:44 -0400 Subject: ASM: Do not consider MSVC C/CXX compiler for generic ASM `cl` does not know how to compile ASM `.s` or `.asm` sources. Issue: #26617 --- Modules/CMakeDetermineASMCompiler.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Modules/CMakeDetermineASMCompiler.cmake b/Modules/CMakeDetermineASMCompiler.cmake index 2ed5050..165bbc5 100644 --- a/Modules/CMakeDetermineASMCompiler.cmake +++ b/Modules/CMakeDetermineASMCompiler.cmake @@ -21,15 +21,15 @@ if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER) # finally list compilers to try if("ASM${ASM_DIALECT}" STREQUAL "ASM") # the generic assembler support if(NOT CMAKE_ASM_COMPILER_INIT) - if(CMAKE_C_COMPILER_LOADED) + if(CMAKE_C_COMPILER_LOADED AND NOT CMAKE_C_COMPILER_ID MATCHES "^(MSVC)$") set(CMAKE_ASM_COMPILER_LIST ${CMAKE_C_COMPILER}) - elseif(CMAKE_CXX_COMPILER_LOADED) + elseif(CMAKE_CXX_COMPILER_LOADED AND NOT CMAKE_CXX_COMPILER_ID MATCHES "^(MSVC)$") set(CMAKE_ASM_COMPILER_LIST ${CMAKE_CXX_COMPILER}) else() # List all default C and CXX compilers set(CMAKE_ASM_COMPILER_LIST - ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc cl xlc - CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ cl xlC) + ${_CMAKE_TOOLCHAIN_PREFIX}cc ${_CMAKE_TOOLCHAIN_PREFIX}gcc xlc + CC ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ xlC) endif() endif() else() # some specific assembler "dialect" -- cgit v0.12 From d4b3443ed28e31a681e81e44a07bc8dbe15edc2a Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 8 Apr 2025 15:18:46 -0400 Subject: ASM: Identify Microsoft assemblers more specifically Other tools may print "Microsoft" when invoked with `-?`, such as `cl`. Look for output specific to the Microsoft Macro Assembler and its ARM variant. --- Modules/CMakeDetermineASMCompiler.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/CMakeDetermineASMCompiler.cmake b/Modules/CMakeDetermineASMCompiler.cmake index 165bbc5..e7031a7 100644 --- a/Modules/CMakeDetermineASMCompiler.cmake +++ b/Modules/CMakeDetermineASMCompiler.cmake @@ -96,7 +96,7 @@ if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_ID) list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS MSVC ) set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_MSVC "-?") - set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_MSVC "Microsoft") + set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_MSVC "Microsoft.*Macro Assembler") list(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS TI ) set(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_TI "-h") -- cgit v0.12