From 98ba122a30221d7bbbf1c2184982606e1b6e8d9d Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 15 Dec 2022 11:48:10 -0500 Subject: ASM_MASM: Populate MSVC debug information format abstraction table In commit 0e96a20478 (MSVC: Add abstraction for debug information format, 2022-08-25, v3.25.0-rc1~142^2~1) we overlooked populating the runtime library selection flags for the Microsoft assembler. Its compiler id is `MSVC`, so our generators expect the table to be populated. It only supports `Embedded` debug info. Use empty flags for the other formats. Without this fix, enabling the `ASM_MASM` language with policy `CMP0141` set to `NEW` causes an error due to the missing table entries. Fixes: #24249 --- Modules/CMakeASM_MASMInformation.cmake | 4 ++++ Tests/VSMASM/CMakeLists.txt | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Modules/CMakeASM_MASMInformation.cmake b/Modules/CMakeASM_MASMInformation.cmake index 656b75e..11b83662 100644 --- a/Modules/CMakeASM_MASMInformation.cmake +++ b/Modules/CMakeASM_MASMInformation.cmake @@ -16,5 +16,9 @@ set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDL set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug "") set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL "") +set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_Embedded "-Zi") +set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_ProgramDatabase "") +set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_EditAndContinue "") + include(CMakeASMInformation) set(ASM_DIALECT) diff --git a/Tests/VSMASM/CMakeLists.txt b/Tests/VSMASM/CMakeLists.txt index 2923e15..603a43b 100644 --- a/Tests/VSMASM/CMakeLists.txt +++ b/Tests/VSMASM/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.25) # Enable CMP0141 project(VSMASM C ASM_MASM) if(CMAKE_SIZEOF_VOID_P EQUAL 8) add_definitions(-DTESTx64) -- cgit v0.12 From a9bd1e34ef220c5467111dbe8703b39e85aa1f14 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 15 Dec 2022 11:53:40 -0500 Subject: VS: Do not enable ASM_MASM debug information unless requested MSBuild enables debug information with MASM by default, but for us that is not consistent with behavior on other generators. --- Source/cmVisualStudio10TargetGenerator.cxx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 4cfb561..8882c45 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -3769,6 +3769,10 @@ bool cmVisualStudio10TargetGenerator::ComputeMasmOptions( this->LocalGenerator, Options::MasmCompiler, gg->GetMasmFlagTable()); Options& masmOptions = *pOptions; + // MSBuild enables debug information by default. + // Disable it explicitly unless a flag parsed below re-enables it. + masmOptions.AddFlag("GenerateDebugInformation", "false"); + std::string flags; this->LocalGenerator->AddLanguageFlags(flags, this->GeneratorTarget, cmBuildStep::Compile, "ASM_MASM", -- cgit v0.12