From 98ba122a30221d7bbbf1c2184982606e1b6e8d9d Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
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 <brad.king@kitware.com>
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