Automatically generate syscall_nr.h from /usr/include/sys/syscall.h since we can only run on a system that matches... This should reduce the churn in the future.
Signed-off-by: Warner Losh <i...@bsdimp.com> --- bsd-user/freebsd/os-syscall.h | 2 +- bsd-user/meson.build | 4 ++++ bsd-user/syscallhdr.sh | 7 +++++++ meson.build | 2 ++ 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 bsd-user/syscallhdr.sh diff --git a/bsd-user/freebsd/os-syscall.h b/bsd-user/freebsd/os-syscall.h index 1f2c0acb1c5..b04d44ba78c 100644 --- a/bsd-user/freebsd/os-syscall.h +++ b/bsd-user/freebsd/os-syscall.h @@ -6,7 +6,7 @@ * OS-Specific portion of syscall_defs.h */ -#include "freebsd/syscall_nr.h" +#include "syscall_nr.h" /* * FreeBSD uses a 64bits time_t except on i386 so we have to add a special case diff --git a/bsd-user/meson.build b/bsd-user/meson.build index 7d1b4de78b1..67480dc5290 100644 --- a/bsd-user/meson.build +++ b/bsd-user/meson.build @@ -21,3 +21,7 @@ bsd_user_ss.add(files( subdir(targetos) specific_ss.add_all(when: 'CONFIG_BSD_USER', if_true: bsd_user_ss) + +bsd_syscall_nr = generator(sh, + arguments: [ meson.current_source_dir() / 'syscallhdr.sh', '@INPUT@', '@OUTPUT@', '@EXTRA_ARGS@'], + output: '@BASENAME@_nr.h') diff --git a/bsd-user/syscallhdr.sh b/bsd-user/syscallhdr.sh new file mode 100644 index 00000000000..c991c2df1d0 --- /dev/null +++ b/bsd-user/syscallhdr.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +in="$1" +out="$2" +bsd="$3" + +awk -v bsd="$3" '{sub("SYS_", "TARGET_" bsd "_NR_", $0); print;}' < $in > $out diff --git a/meson.build b/meson.build index 29f8644d6d0..aedf0798d81 100644 --- a/meson.build +++ b/meson.build @@ -3470,6 +3470,8 @@ foreach target : target_dirs target_inc += include_directories('bsd-user/host/' / host_arch) dir = base_dir / abi arch_srcs += files(dir / 'signal.c', dir / 'target_arch_cpu.c') + arch_srcs += bsd_syscall_nr.process('/usr/include/sys/syscall.h', + extra_args : targetos.to_upper()) endif target_inc += include_directories( base_dir, -- 2.40.0