diff options
| author | Peter Harris <peter@harr.ca> | 2025-05-12 16:52:33 -0400 |
|---|---|---|
| committer | Jussi Pakkanen <jussi.pakkanen@mailbox.org> | 2025-05-26 22:33:53 +0300 |
| commit | 6447eb00d87f439147249dd593635ae14e56d0dd (patch) | |
| tree | f388d5b1ea2e2b9721a87cb51ea2802d900ff8a4 /mesonbuild/backend | |
| parent | 32068a59f5e30862c61ebc2bcd4d2373694e1c96 (diff) | |
| download | meson-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.py | 8 |
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 |
