Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions cross/darwin-aarch64.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[binaries]
c = 'aarch64-apple-darwin20.4-clang'
cpp = 'aarch64-apple-darwin20.4-clang++'
ar = 'aarch64-apple-darwin20.4-ar'
strip = 'aarch64-apple-darwin20.4-strip'

[host_machine]
system = 'darwin'
cpu_family = 'aarch64'
cpu = 'aarch64'
endian = 'little'

[properties]
needs_exe_wrapper = true

[required_binaries]
aarch64-apple-darwin20.4-clang = ''
aarch64-apple-darwin20.4-clang++ = ''
aarch64-apple-darwin20.4-ar = ''
aarch64-apple-darwin20.4-strip = ''

[required_packages]
osxcross = ''
23 changes: 23 additions & 0 deletions cross/darwin-x86_64.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[binaries]
c = 'x86_64-apple-darwin20.4-clang'
cpp = 'x86_64-apple-darwin20.4-clang++'
ar = 'x86_64-apple-darwin20.4-ar'
strip = 'x86_64-apple-darwin20.4-strip'

[host_machine]
system = 'darwin'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'

[properties]
needs_exe_wrapper = true

[required_binaries]
x86_64-apple-darwin20.4-clang = ''
x86_64-apple-darwin20.4-clang++ = ''
x86_64-apple-darwin20.4-ar = ''
x86_64-apple-darwin20.4-strip = ''

[required_packages]
osxcross = ''
26 changes: 26 additions & 0 deletions cross/linux-aarch32.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[binaries]
c = 'arm-linux-gnueabihf-gcc'
cpp = 'arm-linux-gnueabihf-g++'
ar = 'arm-linux-gnueabihf-ar'
strip = 'arm-linux-gnueabihf-strip'
pkg-config = 'arm-linux-gnueabihf-pkg-config'

[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'armv7'
endian = 'little'

[properties]
needs_exe_wrapper = true

[required_binaries]
arm-linux-gnueabihf-gcc = ''
arm-linux-gnueabihf-g++ = ''
arm-linux-gnueabihf-ar = ''
arm-linux-gnueabihf-strip = ''
arm-linux-gnueabihf-pkg-config = ''

[required_packages]
g++-arm-linux-gnueabihf = ''
binutils-arm-linux-gnueabihf = ''
26 changes: 26 additions & 0 deletions cross/linux-aarch64.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[binaries]
c = 'aarch64-linux-gnu-gcc'
cpp = 'aarch64-linux-gnu-g++'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
pkg-config = 'aarch64-linux-gnu-pkg-config'

[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'aarch64'
endian = 'little'

[properties]
needs_exe_wrapper = true

[required_binaries]
aarch64-linux-gnu-gcc = ''
aarch64-linux-gnu-g++ = ''
aarch64-linux-gnu-ar = ''
aarch64-linux-gnu-strip = ''
aarch64-linux-gnu-pkg-config = ''

[required_packages]
g++-aarch64-linux-gnu = ''
binutils-aarch64-linux-gnu = ''
26 changes: 26 additions & 0 deletions cross/linux-x86.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[binaries]
c = 'i686-linux-gnu-gcc'
cpp = 'i686-linux-gnu-g++'
ar = 'i686-linux-gnu-ar'
strip = 'i686-linux-gnu-strip'
pkg-config = 'i686-linux-gnu-pkg-config'

[host_machine]
system = 'linux'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'

[properties]
needs_exe_wrapper = true

[required_binaries]
i686-linux-gnu-gcc = ''
i686-linux-gnu-g++ = ''
i686-linux-gnu-ar = ''
i686-linux-gnu-strip = ''
i686-linux-gnu-pkg-config = ''

[required_packages]
g++-i686-linux-gnu = ''
binutils-i686-linux-gnu = ''
26 changes: 26 additions & 0 deletions cross/linux-x86_64.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[binaries]
c = 'x86_64-linux-gnu-gcc'
cpp = 'x86_64-linux-gnu-g++'
ar = 'x86_64-linux-gnu-ar'
strip = 'x86_64-linux-gnu-strip'
pkg-config = 'x86_64-linux-gnu-pkg-config'

[host_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'

[properties]
needs_exe_wrapper = true

[required_binaries]
x86_64-linux-gnu-gcc = ''
x86_64-linux-gnu-g++ = ''
x86_64-linux-gnu-ar = ''
x86_64-linux-gnu-strip = ''
x86_64-linux-gnu-pkg-config = ''

[required_packages]
g++-x86-64-linux-gnu = ''
binutils-x86-64-linux-gnu = ''
27 changes: 27 additions & 0 deletions cross/windows-aarch64.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
[binaries]
c = 'aarch64-w64-mingw32-gcc'
cpp = 'aarch64-w64-mingw32-g++'
ar = 'aarch64-w64-mingw32-ar'
strip = 'aarch64-w64-mingw32-strip'
pkg-config = 'aarch64-w64-mingw32-pkg-config'
windres = 'aarch64-w64-mingw32-windres'

[host_machine]
system = 'windows'
cpu_family = 'aarch64'
cpu = 'aarch64'
endian = 'little'

[properties]
needs_exe_wrapper = true

[required_binaries]
aarch64-w64-mingw32-gcc = ''
aarch64-w64-mingw32-g++ = ''
aarch64-w64-mingw32-ar = ''
aarch64-w64-mingw32-strip = ''
aarch64-w64-mingw32-pkg-config = ''
aarch64-w64-mingw32-windres = ''

[required_packages]
mingw-w64-aarch64-dev = ''
27 changes: 27 additions & 0 deletions cross/windows-x86.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
[binaries]
c = 'i686-w64-mingw32-gcc'
cpp = 'i686-w64-mingw32-g++'
ar = 'i686-w64-mingw32-ar'
strip = 'i686-w64-mingw32-strip'
pkg-config = 'i686-w64-mingw32-pkg-config'
windres = 'i686-w64-mingw32-windres'

[host_machine]
system = 'windows'
cpu_family = 'x86'
cpu = 'i686'
endian = 'little'

[properties]
needs_exe_wrapper = true

[required_binaries]
i686-w64-mingw32-gcc = ''
i686-w64-mingw32-g++ = ''
i686-w64-mingw32-ar = ''
i686-w64-mingw32-strip = ''
i686-w64-mingw32-pkg-config = ''
i686-w64-mingw32-windres = ''

[required_packages]
mingw-w64-i686-dev = ''
27 changes: 27 additions & 0 deletions cross/windows-x86_64.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
[binaries]
c = 'x86_64-w64-mingw32-gcc'
cpp = 'x86_64-w64-mingw32-g++'
ar = 'x86_64-w64-mingw32-ar'
strip = 'x86_64-w64-mingw32-strip'
pkg-config = 'x86_64-w64-mingw32-pkg-config'
windres = 'x86_64-w64-mingw32-windres'

[host_machine]
system = 'windows'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'

[properties]
needs_exe_wrapper = true

[required_binaries]
x86_64-w64-mingw32-gcc = ''
x86_64-w64-mingw32-g++ = ''
x86_64-w64-mingw32-ar = ''
x86_64-w64-mingw32-strip = ''
x86_64-w64-mingw32-pkg-config = ''
x86_64-w64-mingw32-windres = ''

[required_packages]
mingw-w64-x86-64-dev = ''
16 changes: 15 additions & 1 deletion mesonbuild/cmdline.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ class SharedCMDOptions(Protocol):
d_keys: T.Set[OptionKey]
cross_file: T.List[str]
native_file: T.List[str]
cross_os: T.Optional[str]
cross_arch: T.Optional[str]


class CmdLineFileParser(configparser.ConfigParser):
Expand Down Expand Up @@ -77,16 +79,24 @@ def read_cmd_line_file(build_dir: str, options: SharedCMDOptions) -> None:
# This will be a string in the form: "['first', 'second', ...]", use
# literal_eval to get it into the list of strings.
options.native_file = ast.literal_eval(properties.get('native_file', '[]'))
if options.cross_os is None:
options.cross_os = properties.get('cross_os')
if options.cross_arch is None:
options.cross_arch = properties.get('cross_arch')

def write_cmd_line_file(build_dir: str, options: SharedCMDOptions) -> None:
filename = get_cmd_line_file(build_dir)
config = CmdLineFileParser()

properties: T.Dict[str, T.List[str]] = {}
properties: T.Dict[str, T.Union[str, T.List[str]]] = {}
if options.cross_file:
properties['cross_file'] = options.cross_file
if options.native_file:
properties['native_file'] = options.native_file
if options.cross_os:
properties['cross_os'] = options.cross_os
if options.cross_arch:
properties['cross_arch'] = options.cross_arch

config['options'] = {str(k): str(v) for k, v in options.cmd_line_options.items()}
config['properties'] = {k: repr(v) for k, v in properties.items()}
Expand Down Expand Up @@ -118,6 +128,10 @@ def format_cmd_line_options(options: SharedCMDOptions) -> str:
cmdline += [f'--cross-file={f}' for f in options.cross_file]
if options.native_file:
cmdline += [f'--native-file={f}' for f in options.native_file]
if options.cross_os:
cmdline += [f'--cross-os={options.cross_os}']
if options.cross_arch:
cmdline += [f'--cross-arch={options.cross_arch}']
return ' '.join([shlex.quote(x) for x in cmdline])


Expand Down
12 changes: 12 additions & 0 deletions mesonbuild/cross/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# SPDX-License-Identifier: Apache-2.0
# Copyright 2025 The Meson development team

from .registry import CrossConfigRegistry, CrossConfigNotFoundError
from .checker import DependencyChecker, DependencyCheckResult

__all__ = [
'CrossConfigRegistry',
'CrossConfigNotFoundError',
'DependencyChecker',
'DependencyCheckResult',
]
Loading
Loading