aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/Kbuild.include2
-rw-r--r--scripts/Makefile.headersinst4
-rw-r--r--scripts/headers_install.pl63
-rw-r--r--scripts/headers_install.sh43
-rw-r--r--scripts/mod/Makefile2
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)
150ld-option = $(call try-run,\ 150ld-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 $@))
72quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\ 72quiet_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
100targets += $(install-file) 100targets += $(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
18use strict;
19
20my ($installdir, $arch, @files) = @ARGV;
21
22my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__";
23
24foreach 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}
63exit 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
3if [ $# -lt 1 ]
4then
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
16fi
17
18# Grab arguments
19
20OUTDIR="$1"
21shift
22
23# Iterate through files listed on command line
24
25FILE=
26trap 'rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed"' EXIT
27for i in "$@"
28do
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"
42done
43trap - 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
40targets += $(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