summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--python/build/meson.py103
1 files changed, 53 insertions, 50 deletions
diff --git a/python/build/meson.py b/python/build/meson.py
index 427d51f0f..09dffe471 100644
--- a/python/build/meson.py
+++ b/python/build/meson.py
@@ -2,43 +2,37 @@ import os.path, subprocess, sys
from build.project import Project
-class MesonProject(Project):
- def __init__(self, url, md5, installed, configure_args=[],
- **kwargs):
- Project.__init__(self, url, md5, installed, **kwargs)
- self.configure_args = configure_args
-
- def _make_cross_file(self, toolchain):
- if toolchain.is_windows:
- system = 'windows'
+def make_cross_file(toolchain):
+ if toolchain.is_windows:
+ system = 'windows'
+ else:
+ system = 'linux'
+
+ if toolchain.is_arm:
+ cpu_family = 'arm'
+ if toolchain.is_armv7:
+ cpu = 'armv7'
else:
- system = 'linux'
-
- if toolchain.is_arm:
- cpu_family = 'arm'
- if toolchain.is_armv7:
- cpu = 'armv7'
- else:
- cpu = 'armv6'
- elif toolchain.is_aarch64:
- cpu_family = 'aarch64'
- cpu = 'arm64-v8a'
+ cpu = 'armv6'
+ elif toolchain.is_aarch64:
+ cpu_family = 'aarch64'
+ cpu = 'arm64-v8a'
+ else:
+ cpu_family = 'x86'
+ if 'x86_64' in toolchain.arch:
+ cpu = 'x86_64'
else:
- cpu_family = 'x86'
- if 'x86_64' in toolchain.arch:
- cpu = 'x86_64'
- else:
- cpu = 'i686'
+ cpu = 'i686'
- # TODO: support more CPUs
- endian = 'little'
+ # TODO: support more CPUs
+ endian = 'little'
- # TODO: write pkg-config wrapper
+ # TODO: write pkg-config wrapper
- path = os.path.join(toolchain.build_path, 'meson.cross')
- os.makedirs(toolchain.build_path, exist_ok=True)
- with open(path, 'w') as f:
- f.write("""
+ path = os.path.join(toolchain.build_path, 'meson.cross')
+ os.makedirs(toolchain.build_path, exist_ok=True)
+ with open(path, 'w') as f:
+ f.write("""
[binaries]
c = '%s'
cpp = '%s'
@@ -69,31 +63,40 @@ endian = '%s'
repr((toolchain.cppflags + ' ' + toolchain.cxxflags).split()),
repr(toolchain.ldflags.split()),
system, cpu_family, cpu, endian))
- return path
+ return path
- def configure(self, toolchain):
- src = self.unpack(toolchain)
- cross_file = self._make_cross_file(toolchain)
- build = self.make_build_path(toolchain)
- configure = [
- 'meson',
- src, build,
+def configure(toolchain, src, build, args=()):
+ cross_file = make_cross_file(toolchain)
+ configure = [
+ 'meson',
+ src, build,
+
+ '--prefix', toolchain.install_prefix,
- '--prefix', toolchain.install_prefix,
+ # this is necessary because Meson uses Debian's build machine
+ # MultiArch path (e.g. "lib/x86_64-linux-gnu") for cross
+ # builds, which is obviously wrong
+ '--libdir', 'lib',
- # this is necessary because Meson uses Debian's build machine
- # MultiArch path (e.g. "lib/x86_64-linux-gnu") for cross
- # builds, which is obviously wrong
- '--libdir', 'lib',
+ '--buildtype', 'plain',
- '--buildtype', 'plain',
+ '--default-library=static',
- '--default-library=static',
+ '--cross-file', cross_file,
+ ] + args
- '--cross-file', cross_file,
- ] + self.configure_args
+ subprocess.check_call(configure, env=toolchain.env)
- subprocess.check_call(configure, env=toolchain.env)
+class MesonProject(Project):
+ def __init__(self, url, md5, installed, configure_args=[],
+ **kwargs):
+ Project.__init__(self, url, md5, installed, **kwargs)
+ self.configure_args = configure_args
+
+ def configure(self, toolchain):
+ src = self.unpack(toolchain)
+ build = self.make_build_path(toolchain)
+ configure(toolchain, src, build, self.configure_args)
return build
def build(self, toolchain):