summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2021-01-17 12:51:59 +0000
committerAkira TAGOH <akira@tagoh.org>2021-02-15 12:53:32 +0000
commitae9ac2a1bfb6fa800b99791b6fc36711dd0c1fbc (patch)
treec0803cbd0a92b539ab3781e296cc89088dc7779d /src
parent7bfbaecf819a8b1630dfc8f56126e31f985d5fb3 (diff)
downloadfontconfig-ae9ac2a1bfb6fa800b99791b6fc36711dd0c1fbc.tar.gz
meson: fix cross-compilation issues with gperf header file preprocessing
Pass c_args to the compiler when preprocessing the gperf header file, they might contain important bits without which compilation/preprocessing might fail (e.g. with clang on Android). cc.cmd_array() does not include the c_args and we can't easily look them up from the meson.build file, so we have to retrieve from the introspection info. This is basically the Meson equivalent to commit 57103773.
Diffstat (limited to 'src')
-rw-r--r--src/cutout.py16
-rw-r--r--src/meson.build5
2 files changed, 18 insertions, 3 deletions
diff --git a/src/cutout.py b/src/cutout.py
index 96cafd2..323eec8 100644
--- a/src/cutout.py
+++ b/src/cutout.py
@@ -1,5 +1,6 @@
import argparse
import subprocess
+import json
import os
import re
@@ -7,12 +8,23 @@ if __name__== '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('input')
parser.add_argument('output')
+ parser.add_argument('buildroot')
args = parser.parse_known_args()
- print (args[0].output)
+
+ # c_args might contain things that are essential for crosscompilation, but
+ # are not included in cc.cmd_array(), so we have to look them up ourselves
+ host_cargs = []
+ buildroot = args[0].buildroot
+ with open(os.path.join(buildroot, 'meson-info', 'intro-buildoptions.json')) as json_file:
+ bopts = json.load(json_file)
+ for opt in bopts:
+ if opt['name'] == 'c_args' and opt['section'] == 'compiler' and opt['machine'] == 'host':
+ host_cargs = opt['value']
+ break
cpp = args[1]
- ret = subprocess.run(cpp + [args[0].input], stdout=subprocess.PIPE, check=True)
+ ret = subprocess.run(cpp + host_cargs + [args[0].input], stdout=subprocess.PIPE, check=True)
stdout = ret.stdout.decode('utf8')
diff --git a/src/meson.build b/src/meson.build
index f2a4861..7f9bf31 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -44,10 +44,13 @@ endif
cpp += ['-I', join_paths(meson.current_source_dir(), '..')]
+# Can use meson.project_build_dir() once we require Meson 0.56
+project_build_dir = meson.current_build_dir() / '..'
+
fcobjshash_gperf = custom_target('fcobjshash.gperf',
input: 'fcobjshash.gperf.h',
output: 'fcobjshash.gperf',
- command: [python3, files('cutout.py')[0], '@INPUT@', '@OUTPUT@', cpp],
+ command: [python3, files('cutout.py')[0], '@INPUT@', '@OUTPUT@', project_build_dir, cpp],
build_by_default: true,
)