summaryrefslogtreecommitdiff
path: root/mesonbuild/backend
diff options
context:
space:
mode:
authorPeter Harris <peter@harr.ca>2025-05-12 16:52:33 -0400
committerJussi Pakkanen <jussi.pakkanen@mailbox.org>2025-05-26 22:33:53 +0300
commit6447eb00d87f439147249dd593635ae14e56d0dd (patch)
treef388d5b1ea2e2b9721a87cb51ea2802d900ff8a4 /mesonbuild/backend
parent32068a59f5e30862c61ebc2bcd4d2373694e1c96 (diff)
downloadmeson-6447eb00d87f439147249dd593635ae14e56d0dd.tar.gz
vs2010backend: fix EmbedManifest state when /MANIFEST:EMBED is used
With introduction of dfd8cfbd8d9c VS compile is broken for cases where /MANIFEST:EMBED linker flag is actually used. The fix keeps the default creation of <EmbedManifest> but adopts the same strategy as e3db7af0ea41, that is to scan the link flags for the embed case to decide state is emit 'true' or 'false' for EmbedManifest.
Diffstat (limited to 'mesonbuild/backend')
-rw-r--r--mesonbuild/backend/vs2010backend.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py
index 16acc809b..14ebb5db5 100644
--- a/mesonbuild/backend/vs2010backend.py
+++ b/mesonbuild/backend/vs2010backend.py
@@ -703,9 +703,8 @@ class Vs2010Backend(backends.Backend):
# Fix weird mt.exe error:
# mt.exe is trying to compile a non-existent .generated.manifest file and link it
# with the target. This does not happen without masm props.
- ET.SubElement(direlem, 'EmbedManifest').text = 'true' if masm_type else 'false'
- if not gen_manifest:
- ET.SubElement(direlem, 'GenerateManifest').text = 'false'
+ ET.SubElement(direlem, 'EmbedManifest').text = 'true' if masm_type or gen_manifest == 'embed' else 'false'
+ ET.SubElement(direlem, 'GenerateManifest').text = 'true' if gen_manifest else 'false'
return (root, type_config)
@@ -2133,6 +2132,7 @@ class Vs2010Backend(backends.Backend):
pass
# Returns if a target generates a manifest or not.
+ # Returns 'embed' if the generated manifest is embedded.
def get_gen_manifest(self, target: T.Optional[build.BuildTarget]):
if not isinstance(target, build.BuildTarget):
return True
@@ -2150,6 +2150,8 @@ class Vs2010Backend(backends.Backend):
arg = arg.upper()
if arg == '/MANIFEST:NO':
return False
+ if arg.startswith('/MANIFEST:EMBED'):
+ return 'embed'
if arg == '/MANIFEST' or arg.startswith('/MANIFEST:'):
break
return True