summaryrefslogtreecommitdiffstats
path: root/meson.build
diff options
context:
space:
mode:
authorMarc-André Lureau2019-08-18 14:13:08 +0200
committerPaolo Bonzini2020-08-21 12:30:38 +0200
commit3a30446aed8497b5928576c6d1aedba557363934 (patch)
treecc670735d6eb7f2b66d4da3b5e1f91c7168bb766 /meson.build
parentmeson: accel (diff)
downloadqemu-3a30446aed8497b5928576c6d1aedba557363934.tar.gz
qemu-3a30446aed8497b5928576c6d1aedba557363934.tar.xz
qemu-3a30446aed8497b5928576c6d1aedba557363934.zip
meson: linux-user
The most interesting or most complicated part here is the syscall_nr.h generators. In order to keep the generation logic all in meson.build, I am adding to config_target the name of the .tbl file, and making the generated file syscall<SUFFIX>_nr.h for input file syscall<SUFFIX>.tbl. For architectures where the input file is not named syscall_nr.tbl, syscall_nr.h has to be a source file; it's just a forwarder for x86 (i386/x86_64), while for MIPS64 it chooses between N32 and N64 ABIs. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build16
1 files changed, 15 insertions, 1 deletions
diff --git a/meson.build b/meson.build
index baf9b69e99..490f3d9c75 100644
--- a/meson.build
+++ b/meson.build
@@ -705,6 +705,10 @@ subdir('net')
subdir('replay')
subdir('hw')
subdir('accel')
+subdir('linux-user')
+
+linux_user_ss.add(files('gdbstub.c', 'thunk.c'))
+specific_ss.add_all(when: 'CONFIG_LINUX_USER', if_true: linux_user_ss)
# needed for fuzzing binaries
subdir('tests/qtest/libqos')
@@ -802,6 +806,7 @@ foreach target : target_dirs
arch_srcs += config_devices_h[target]
else
+ abi = config_target['TARGET_ABI_DIR']
target_type='user'
qemu_target_name = 'qemu-' + target_name
if 'CONFIG_LINUX_USER' in config_target
@@ -812,8 +817,17 @@ foreach target : target_dirs
endif
target_inc += include_directories(
base_dir,
- base_dir / config_target['TARGET_ABI_DIR'],
+ base_dir / abi,
)
+ if 'CONFIG_LINUX_USER' in config_target
+ dir = base_dir / abi
+ arch_srcs += files(dir / 'signal.c', dir / 'cpu_loop.c')
+ if config_target.has_key('TARGET_SYSTBL_ABI')
+ arch_srcs += \
+ syscall_nr_generators[abi].process(base_dir / abi / config_target['TARGET_SYSTBL'],
+ extra_args : config_target['TARGET_SYSTBL_ABI'])
+ endif
+ endif
endif
t = target_arch[arch].apply(config_target, strict: false)