diff options
Diffstat (limited to 'scripts/headers_install.sh')
-rw-r--r-- | scripts/headers_install.sh | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh new file mode 100644 index 000000000000..643764f53ea7 --- /dev/null +++ b/scripts/headers_install.sh | |||
@@ -0,0 +1,43 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | if [ $# -lt 1 ] | ||
4 | then | ||
5 | echo "Usage: headers_install.sh OUTDIR [FILES...] | ||
6 | echo | ||
7 | echo "Prepares kernel header files for use by user space, by removing" | ||
8 | echo "all compiler.h definitions and #includes, removing any" | ||
9 | echo "#ifdef __KERNEL__ sections, and putting __underscores__ around" | ||
10 | echo "asm/inline/volatile keywords." | ||
11 | echo | ||
12 | echo "OUTDIR: directory to write each userspace header FILE to." | ||
13 | echo "FILES: list of header files to operate on." | ||
14 | |||
15 | exit 1 | ||
16 | fi | ||
17 | |||
18 | # Grab arguments | ||
19 | |||
20 | OUTDIR="$1" | ||
21 | shift | ||
22 | |||
23 | # Iterate through files listed on command line | ||
24 | |||
25 | FILE= | ||
26 | trap 'rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed"' EXIT | ||
27 | for i in "$@" | ||
28 | do | ||
29 | FILE="$(basename "$i")" | ||
30 | sed -r \ | ||
31 | -e 's/([ \t(])(__user|__force|__iomem)[ \t]/\1/g' \ | ||
32 | -e 's/__attribute_const__([ \t]|$)/\1/g' \ | ||
33 | -e 's@^#include <linux/compiler.h>@@' \ | ||
34 | -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \ | ||
35 | -e 's/(^|[ \t(])(inline|asm|volatile)([ \t(]|$)/\1__\2__\3/g' \ | ||
36 | -e 's@#(ifndef|define|endif[ \t]*/[*])[ \t]*_UAPI@#\1 @' \ | ||
37 | "$i" > "$OUTDIR/$FILE.sed" || exit 1 | ||
38 | scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \ | ||
39 | > "$OUTDIR/$FILE" | ||
40 | [ $? -gt 1 ] && exit 1 | ||
41 | rm -f "$OUTDIR/$FILE.sed" | ||
42 | done | ||
43 | trap - EXIT | ||