1+ local arch = ({
2+ aarch64 = ' aarch64' ,
3+ x86_64 = ' x86_64' ,
4+ })[config .target .platform :match (' [^-]*' )]
5+ -- NOTE: strace is architecture specific, skip generation on unsupported archs
6+ if not arch then return end
7+
18cflags {
29 ' -D HAVE_CONFIG_H' ,
310 ' -D IN_STRACE' ,
411 -- it is important that the arch-specific directory is searched first
5- ' -I $srcdir/src/linux/x86_64 ' ,
12+ ' -I $srcdir/src/linux/' .. arch ,
613 ' -I $srcdir/src/linux/generic' ,
714 ' -I $srcdir/src' ,
815 ' -I $outdir' ,
916 ' -isystem $builddir/pkg/linux-headers/include' ,
1017}
1118
19+ local arch_cflags = {}
20+ arch_cflags [' aarch64' ] = {' -D AARCH64=1' }
21+ arch_cflags [' x86_64' ] = {
22+ ' -D X86_64=1' ,
23+ ' -D HAVE_STRUCT_KVM_CPUID2=1' ,
24+ ' -D HAVE_STRUCT_USER_DESC=1' ,
25+ ' -D HAVE_STRUCT_USER_DESC_LM=1' ,
26+ ' -D HAVE_STRUCT___OLD_KERNEL_STAT=1' ,
27+ }
28+ cflags (arch_cflags [arch ])
29+
1230build (' cat' , ' $outdir/config.h' , {
1331 ' $builddir/probe/HAVE___BUILTIN_POPCOUNT' ,
1432 ' $dir/config.h' ,
@@ -22,16 +40,21 @@ build('sed', '$outdir/ioctl_iocdef.h', '$outdir/ioctl_iocdef.i', {
2240sub (' tools.ninja' , function ()
2341 toolchain (config .host )
2442 cflags {
25- ' -D X86_64=1' ,
26- ' -I $srcdir/src/linux/x86_64' ,
43+ ' -I $srcdir/src/linux/' .. arch ,
2744 ' -I $srcdir/src/linux' ,
2845 ' -I $outdir' ,
2946 }
47+ cflags (arch_cflags [arch ])
48+
49+ local arch_h_count = {
50+ aarch64 = 1 ,
51+ x86_64 = 2 ,
52+ }
3053
31- for i = 0 , 2 do
54+ for i = 0 , arch_h_count [ arch ] do
3255 build (' cat' , ' $outdir/ioctls_all' .. i .. ' .h' , {
33- ' $srcdir/src/linux/x86_64 /ioctls_inc' .. i .. ' .h' ,
34- ' $srcdir/src/linux/x86_64 /ioctls_arch' .. i .. ' .h' ,
56+ ' $srcdir/src/linux/' .. arch .. ' /ioctls_inc' .. i .. ' .h' ,
57+ ' $srcdir/src/linux/' .. arch .. ' /ioctls_arch' .. i .. ' .h' ,
3558 })
3659 build (' cc' , ' $outdir/ioctlsort' .. i .. ' .c.o' , {
3760 ' $srcdir/src/ioctlsort.c' ,
0 commit comments