@@ -12,33 +12,71 @@ set -ueo pipefail
1212# to add new ioctl codes or a new architecture, and are unable to run it,
1313# please file an issue in the issue tracker.
1414
15+ linux_version=" $( sed -n ' s/^const LINUX_VERSION: &str = "\(v.*\)";$/\1/p' ../src/main.rs) "
16+
17+ pushd ../linux
18+ git clean -fd
19+ git checkout " $linux_version " -f
20+ git clean -fd
21+ popd
22+
23+ tmp_dir=" $( mktemp --tmpdir -d linux-raw-sys-ioctl.XXXXXXXXXX) "
24+ header_dir=" $tmp_dir /linux-headers"
25+ mkdir " $header_dir "
26+ touch list.o main.exe
27+
28+ cleanup () {
29+ rm -r " $tmp_dir "
30+ rm list.o main.exe
31+ }
32+ trap cleanup EXIT
33+
34+ install_headers () {
35+ arch=" $1 "
36+ rm -r " $header_dir "
37+ make -C ../linux headers_install ARCH=" $arch " INSTALL_HDR_PATH=" $header_dir "
38+ }
39+
1540cflags=" -Wall"
41+ includes=(
42+ -nostdinc
43+ -Iinclude
44+ " -I$header_dir /include"
45+ )
1646out=" ../modules/ioctl.h"
1747
1848echo " // This file is generated from the ioctl/generate.sh script." > " $out "
1949
20- i686-linux-gnu-gcc -Iinclude -c list.c $cflags
50+ install_headers x86
51+ i686-linux-gnu-gcc " ${includes[@]} " -c list.c $cflags
2152i686-linux-gnu-gcc main.c list.o -o main.exe $cflags
2253./main.exe >> " $out "
23- x86_64-linux-gnu-gcc -Iinclude -c list.c $cflags
54+ install_headers x86_64
55+ x86_64-linux-gnu-gcc " ${includes[@]} " -c list.c $cflags
2456x86_64-linux-gnu-gcc main.c list.o -o main.exe $cflags
2557./main.exe >> " $out "
26- aarch64-linux-gnu-gcc -Iinclude -c list.c $cflags
58+ install_headers arm64
59+ aarch64-linux-gnu-gcc " ${includes[@]} " -c list.c $cflags
2760aarch64-linux-gnu-gcc main.c list.o -o main.exe $cflags
2861qemu-aarch64 -L /usr/aarch64-linux-gnu ./main.exe >> " $out "
29- arm-linux-gnueabihf-gcc -Iinclude -c list.c $cflags
62+ install_headers arm
63+ arm-linux-gnueabihf-gcc " ${includes[@]} " -c list.c $cflags
3064arm-linux-gnueabihf-gcc main.c list.o -o main.exe $cflags
3165qemu-arm -L /usr/arm-linux-gnueabihf ./main.exe >> " $out "
32- powerpc64le-linux-gnu-gcc -Iinclude -c list.c $cflags
66+ install_headers powerpc
67+ powerpc64le-linux-gnu-gcc " ${includes[@]} " -c list.c $cflags
3368powerpc64le-linux-gnu-gcc main.c list.o -o main.exe $cflags
3469qemu-ppc64le -L /usr/powerpc64le-linux-gnu ./main.exe >> " $out "
35- powerpc-linux-gnu-gcc -Iinclude -c list.c $cflags
70+ install_headers powerpc
71+ powerpc-linux-gnu-gcc " ${includes[@]} " -c list.c $cflags
3672powerpc-linux-gnu-gcc main.c list.o -o main.exe $cflags
3773qemu-ppc -L /usr/powerpc-linux-gnu ./main.exe >> " $out "
38- mips64el-linux-gnuabi64-gcc -Iinclude -c list.c $cflags
74+ install_headers mips
75+ mips64el-linux-gnuabi64-gcc " ${includes[@]} " -c list.c $cflags
3976mips64el-linux-gnuabi64-gcc main.c list.o -o main.exe $cflags
4077qemu-mips64el -L /usr/mips64el-linux-gnuabi64 ./main.exe >> " $out "
41- mipsel-linux-gnu-gcc -Iinclude -c list.c $cflags
78+ install_headers mips
79+ mipsel-linux-gnu-gcc " ${includes[@]} " -c list.c $cflags
4280mipsel-linux-gnu-gcc main.c list.o -o main.exe $cflags
4381qemu-mipsel -L /usr/mipsel-linux-gnu ./main.exe >> " $out "
4482
@@ -51,10 +89,12 @@ qemu-mipsel -L /usr/mipsel-linux-gnu ./main.exe >> "$out"
5189# /opt/riscv/bin/qemu-riscv32 -L /opt/riscv/sysroot/ ./main.exe >> "$out"
5290cat riscv32-ioctls.txt >> " $out "
5391
54- riscv64-linux-gnu-gcc -Iinclude -c list.c $cflags
92+ install_headers riscv
93+ riscv64-linux-gnu-gcc " ${includes[@]} " -c list.c $cflags
5594riscv64-linux-gnu-gcc main.c list.o -o main.exe $cflags
5695qemu-riscv64 -L /usr/riscv64-linux-gnu ./main.exe >> " $out "
57- s390x-linux-gnu-gcc -Iinclude -c list.c $cflags
96+ install_headers s390
97+ s390x-linux-gnu-gcc " ${includes[@]} " -c list.c $cflags
5898s390x-linux-gnu-gcc main.c list.o -o main.exe $cflags
5999qemu-s390x -L /usr/s390x-linux-gnu ./main.exe >> " $out "
60100# As LoongArch and CSKY cross toolchain is not yet packaged in mainstream distros yet,
@@ -67,5 +107,3 @@ cat csky-ioctls.txt >> "$out"
67107
68108# Add any extra custom definitions at the end.
69109echo " #include \" ioctl-addendum.h\" " >> " $out "
70-
71- rm list.o main.exe
0 commit comments