diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Kbuild.include | 2 | ||||
-rw-r--r-- | scripts/Makefile.headersinst | 4 | ||||
-rw-r--r-- | scripts/headers_install.pl | 63 | ||||
-rw-r--r-- | scripts/headers_install.sh | 43 | ||||
-rw-r--r-- | scripts/mod/Makefile | 2 |
5 files changed, 48 insertions, 66 deletions
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index 978416dd31ca..547e15daf03d 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include | |||
@@ -148,7 +148,7 @@ cc-ldoption = $(call try-run,\ | |||
148 | # ld-option | 148 | # ld-option |
149 | # Usage: LDFLAGS += $(call ld-option, -X) | 149 | # Usage: LDFLAGS += $(call ld-option, -X) |
150 | ld-option = $(call try-run,\ | 150 | ld-option = $(call try-run,\ |
151 | $(CC) /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) | 151 | $(CC) -x c /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) |
152 | 152 | ||
153 | # ar-option | 153 | # ar-option |
154 | # Usage: KBUILD_ARFLAGS := $(call ar-option,D) | 154 | # Usage: KBUILD_ARFLAGS := $(call ar-option,D) |
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst index 477d137c0557..182084d728c8 100644 --- a/scripts/Makefile.headersinst +++ b/scripts/Makefile.headersinst | |||
@@ -72,7 +72,7 @@ printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@)) | |||
72 | quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\ | 72 | quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\ |
73 | file$(if $(word 2, $(all-files)),s)) | 73 | file$(if $(word 2, $(all-files)),s)) |
74 | cmd_install = \ | 74 | cmd_install = \ |
75 | $(PERL) $< $(installdir) $(SRCARCH) $(input-files); \ | 75 | $(CONFIG_SHELL) $< $(installdir) $(input-files); \ |
76 | for F in $(wrapper-files); do \ | 76 | for F in $(wrapper-files); do \ |
77 | echo "\#include <asm-generic/$$F>" > $(installdir)/$$F; \ | 77 | echo "\#include <asm-generic/$$F>" > $(installdir)/$$F; \ |
78 | done; \ | 78 | done; \ |
@@ -98,7 +98,7 @@ __headersinst: $(subdirs) $(install-file) | |||
98 | @: | 98 | @: |
99 | 99 | ||
100 | targets += $(install-file) | 100 | targets += $(install-file) |
101 | $(install-file): scripts/headers_install.pl $(input-files) FORCE | 101 | $(install-file): scripts/headers_install.sh $(input-files) FORCE |
102 | $(if $(unwanted),$(call cmd,remove),) | 102 | $(if $(unwanted),$(call cmd,remove),) |
103 | $(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@))) | 103 | $(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@))) |
104 | $(call if_changed,install) | 104 | $(call if_changed,install) |
diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl deleted file mode 100644 index 581ca99c96f2..000000000000 --- a/scripts/headers_install.pl +++ /dev/null | |||
@@ -1,63 +0,0 @@ | |||
1 | #!/usr/bin/perl -w | ||
2 | # | ||
3 | # headers_install prepare the listed header files for use in | ||
4 | # user space and copy the files to their destination. | ||
5 | # | ||
6 | # Usage: headers_install.pl readdir installdir arch [files...] | ||
7 | # installdir: dir to install the files to | ||
8 | # arch: current architecture | ||
9 | # arch is used to force a reinstallation when the arch | ||
10 | # changes because kbuild then detect a command line change. | ||
11 | # files: list of files to check | ||
12 | # | ||
13 | # Step in preparation for users space: | ||
14 | # 1) Drop all use of compiler.h definitions | ||
15 | # 2) Drop include of compiler.h | ||
16 | # 3) Drop all sections defined out by __KERNEL__ (using unifdef) | ||
17 | |||
18 | use strict; | ||
19 | |||
20 | my ($installdir, $arch, @files) = @ARGV; | ||
21 | |||
22 | my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__"; | ||
23 | |||
24 | foreach my $filename (@files) { | ||
25 | my $file = $filename; | ||
26 | $file =~ s!^.*/!!; | ||
27 | |||
28 | my $tmpfile = "$installdir/$file.tmp"; | ||
29 | |||
30 | open(my $in, '<', $filename) | ||
31 | or die "$filename: $!\n"; | ||
32 | open(my $out, '>', $tmpfile) | ||
33 | or die "$tmpfile: $!\n"; | ||
34 | while (my $line = <$in>) { | ||
35 | $line =~ s/([\s(])__user\s/$1/g; | ||
36 | $line =~ s/([\s(])__force\s/$1/g; | ||
37 | $line =~ s/([\s(])__iomem\s/$1/g; | ||
38 | $line =~ s/\s__attribute_const__\s/ /g; | ||
39 | $line =~ s/\s__attribute_const__$//g; | ||
40 | $line =~ s/\b__packed\b/__attribute__((packed))/g; | ||
41 | $line =~ s/^#include <linux\/compiler.h>//; | ||
42 | $line =~ s/(^|\s)(inline)\b/$1__$2__/g; | ||
43 | $line =~ s/(^|\s)(asm)\b(\s|[(]|$)/$1__$2__$3/g; | ||
44 | $line =~ s/(^|\s|[(])(volatile)\b(\s|[(]|$)/$1__$2__$3/g; | ||
45 | $line =~ s/#ifndef\s+_UAPI/#ifndef /; | ||
46 | $line =~ s/#define\s+_UAPI/#define /; | ||
47 | $line =~ s!#endif\s+/[*]\s*_UAPI!#endif /* !; | ||
48 | printf {$out} "%s", $line; | ||
49 | } | ||
50 | close $out; | ||
51 | close $in; | ||
52 | |||
53 | system $unifdef . " $tmpfile > $installdir/$file"; | ||
54 | # unifdef will exit 0 on success, and will exit 1 when the | ||
55 | # file was processed successfully but no changes were made, | ||
56 | # so abort only when it's higher than that. | ||
57 | my $e = $? >> 8; | ||
58 | if ($e > 1) { | ||
59 | die "$tmpfile: $!\n"; | ||
60 | } | ||
61 | unlink $tmpfile; | ||
62 | } | ||
63 | exit 0; | ||
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 | ||
diff --git a/scripts/mod/Makefile b/scripts/mod/Makefile index 9415b5663364..75d59fcd48b8 100644 --- a/scripts/mod/Makefile +++ b/scripts/mod/Makefile | |||
@@ -37,6 +37,8 @@ scripts/mod/devicetable-offsets.s: scripts/mod/devicetable-offsets.c FORCE | |||
37 | $(obj)/$(devicetable-offsets-file): scripts/mod/devicetable-offsets.s | 37 | $(obj)/$(devicetable-offsets-file): scripts/mod/devicetable-offsets.s |
38 | $(call cmd,offsets) | 38 | $(call cmd,offsets) |
39 | 39 | ||
40 | targets += $(devicetable-offsets-file) | ||
41 | |||
40 | # dependencies on generated files need to be listed explicitly | 42 | # dependencies on generated files need to be listed explicitly |
41 | 43 | ||
42 | $(obj)/modpost.o $(obj)/file2alias.o $(obj)/sumversion.o: $(obj)/elfconfig.h | 44 | $(obj)/modpost.o $(obj)/file2alias.o $(obj)/sumversion.o: $(obj)/elfconfig.h |