diff options
author | Caleb Cornett <caleb.cornett@outlook.com> | 2022-07-19 10:07:02 -0400 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2022-09-29 07:52:07 -0400 |
commit | e574eba0a51b87270d43b738ab32895cdc7677a8 (patch) | |
tree | ce38e1a191798b28b376ecf1d2585f3b393cab6d /mesonbuild | |
parent | 2dfd952eb99590878430510644ffe99dd4a6a41d (diff) | |
download | meson-e574eba0a51b87270d43b738ab32895cdc7677a8.zip meson-e574eba0a51b87270d43b738ab32895cdc7677a8.tar.gz meson-e574eba0a51b87270d43b738ab32895cdc7677a8.tar.bz2 |
Add cross-compile support for Microsoft GDK platforms
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/backend/vs2010backend.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py index a2581e4..4171ce2 100644 --- a/mesonbuild/backend/vs2010backend.py +++ b/mesonbuild/backend/vs2010backend.py @@ -21,6 +21,7 @@ import xml.etree.ElementTree as ET import uuid import typing as T from pathlib import Path, PurePath +import re from . import backends from .. import build @@ -96,6 +97,8 @@ def split_o_flags_args(args): def generate_guid_from_path(path, path_type): return str(uuid.uuid5(uuid.NAMESPACE_URL, 'meson-vs-' + path_type + ':' + str(path))).upper() +def detect_microsoft_gdk(platform: str) -> bool: + return re.match(r'Gaming\.(Desktop|Xbox.XboxOne|Xbox.Scarlett)\.x64', platform, re.IGNORECASE) class Vs2010Backend(backends.Backend): def __init__(self, build: T.Optional[build.Build], interpreter: T.Optional[Interpreter]): @@ -182,7 +185,11 @@ class Vs2010Backend(backends.Backend): target_machine = self.interpreter.builtin['target_machine'].cpu_family_method(None, None) if target_machine in {'64', 'x86_64'}: # amd64 or x86_64 - self.platform = 'x64' + target_system = self.interpreter.builtin['target_machine'].system_method(None, None) + if detect_microsoft_gdk(target_system): + self.platform = target_system + else: + self.platform = 'x64' elif target_machine == 'x86': # x86 self.platform = 'Win32' @@ -1321,7 +1328,7 @@ class Vs2010Backend(backends.Backend): targetplatform = self.platform.lower() if targetplatform == 'win32': targetmachine.text = 'MachineX86' - elif targetplatform == 'x64': + elif targetplatform == 'x64' or detect_microsoft_gdk(targetplatform): targetmachine.text = 'MachineX64' elif targetplatform == 'arm': targetmachine.text = 'MachineARM' |