diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/Makefile.headersinst | 45 | ||||
-rw-r--r-- | scripts/headers_install.pl | 14 |
2 files changed, 39 insertions, 20 deletions
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst index 463b95acc15b..06ba4a70bd4d 100644 --- a/scripts/Makefile.headersinst +++ b/scripts/Makefile.headersinst | |||
@@ -8,7 +8,7 @@ | |||
8 | # ========================================================================== | 8 | # ========================================================================== |
9 | 9 | ||
10 | # called may set destination dir (when installing to asm/) | 10 | # called may set destination dir (when installing to asm/) |
11 | _dst := $(if $(dst),$(dst),$(obj)) | 11 | _dst := $(or $(destination-y),$(dst),$(obj)) |
12 | 12 | ||
13 | # generated header directory | 13 | # generated header directory |
14 | gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj))) | 14 | gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj))) |
@@ -16,47 +16,64 @@ gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj))) | |||
16 | kbuild-file := $(srctree)/$(obj)/Kbuild | 16 | kbuild-file := $(srctree)/$(obj)/Kbuild |
17 | include $(kbuild-file) | 17 | include $(kbuild-file) |
18 | 18 | ||
19 | _dst := $(if $(destination-y),$(destination-y),$(_dst)) | 19 | old-kbuild-file := $(srctree)/$(subst uapi/,,$(obj))/Kbuild |
20 | ifneq ($(wildcard $(old-kbuild-file)),) | ||
21 | include $(old-kbuild-file) | ||
22 | endif | ||
20 | 23 | ||
21 | include scripts/Kbuild.include | 24 | include scripts/Kbuild.include |
22 | 25 | ||
23 | install := $(INSTALL_HDR_PATH)/$(_dst) | 26 | installdir := $(INSTALL_HDR_PATH)/$(subst uapi/,,$(_dst)) |
24 | 27 | ||
25 | header-y := $(sort $(header-y)) | 28 | header-y := $(sort $(header-y)) |
26 | subdirs := $(patsubst %/,%,$(filter %/, $(header-y))) | 29 | subdirs := $(patsubst %/,%,$(filter %/, $(header-y))) |
27 | header-y := $(filter-out %/, $(header-y)) | 30 | header-y := $(filter-out %/, $(header-y)) |
28 | 31 | ||
29 | # files used to track state of install/check | 32 | # files used to track state of install/check |
30 | install-file := $(install)/.install | 33 | install-file := $(installdir)/.install |
31 | check-file := $(install)/.check | 34 | check-file := $(installdir)/.check |
32 | 35 | ||
33 | # generic-y list all files an architecture uses from asm-generic | 36 | # generic-y list all files an architecture uses from asm-generic |
34 | # Use this to build a list of headers which require a wrapper | 37 | # Use this to build a list of headers which require a wrapper |
35 | wrapper-files := $(filter $(header-y), $(generic-y)) | 38 | wrapper-files := $(filter $(header-y), $(generic-y)) |
36 | 39 | ||
40 | srcdir := $(srctree)/$(obj) | ||
41 | gendir := $(objtree)/$(gen) | ||
42 | |||
43 | oldsrcdir := $(srctree)/$(subst /uapi,,$(obj)) | ||
44 | |||
37 | # all headers files for this dir | 45 | # all headers files for this dir |
38 | header-y := $(filter-out $(generic-y), $(header-y)) | 46 | header-y := $(filter-out $(generic-y), $(header-y)) |
39 | all-files := $(header-y) $(genhdr-y) $(wrapper-files) | 47 | all-files := $(header-y) $(genhdr-y) $(wrapper-files) |
40 | input-files := $(addprefix $(srctree)/$(obj)/,$(header-y)) \ | 48 | output-files := $(addprefix $(installdir)/, $(all-files)) |
41 | $(addprefix $(objtree)/$(gen)/,$(genhdr-y)) | 49 | |
42 | output-files := $(addprefix $(install)/, $(all-files)) | 50 | input-files := $(foreach hdr, $(header-y), \ |
51 | $(or \ | ||
52 | $(wildcard $(srcdir)/$(hdr)), \ | ||
53 | $(wildcard $(oldsrcdir)/$(hdr)), \ | ||
54 | $(error Missing UAPI file $(srcdir)/$(hdr)) \ | ||
55 | )) \ | ||
56 | $(foreach hdr, $(genhdr-y), \ | ||
57 | $(or \ | ||
58 | $(wildcard $(gendir)/$(hdr)), \ | ||
59 | $(error Missing generated UAPI file $(gendir)/$(hdr)) \ | ||
60 | )) | ||
43 | 61 | ||
44 | # Work out what needs to be removed | 62 | # Work out what needs to be removed |
45 | oldheaders := $(patsubst $(install)/%,%,$(wildcard $(install)/*.h)) | 63 | oldheaders := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h)) |
46 | unwanted := $(filter-out $(all-files),$(oldheaders)) | 64 | unwanted := $(filter-out $(all-files),$(oldheaders)) |
47 | 65 | ||
48 | # Prefix unwanted with full paths to $(INSTALL_HDR_PATH) | 66 | # Prefix unwanted with full paths to $(INSTALL_HDR_PATH) |
49 | unwanted-file := $(addprefix $(install)/, $(unwanted)) | 67 | unwanted-file := $(addprefix $(installdir)/, $(unwanted)) |
50 | 68 | ||
51 | printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@)) | 69 | printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@)) |
52 | 70 | ||
53 | quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\ | 71 | quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\ |
54 | file$(if $(word 2, $(all-files)),s)) | 72 | file$(if $(word 2, $(all-files)),s)) |
55 | cmd_install = \ | 73 | cmd_install = \ |
56 | $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(header-y); \ | 74 | $(PERL) $< $(installdir) $(SRCARCH) $(input-files); \ |
57 | $(PERL) $< $(objtree)/$(gen) $(install) $(SRCARCH) $(genhdr-y); \ | ||
58 | for F in $(wrapper-files); do \ | 75 | for F in $(wrapper-files); do \ |
59 | echo "\#include <asm-generic/$$F>" > $(install)/$$F; \ | 76 | echo "\#include <asm-generic/$$F>" > $(installdir)/$$F; \ |
60 | done; \ | 77 | done; \ |
61 | touch $@ | 78 | touch $@ |
62 | 79 | ||
@@ -67,7 +84,7 @@ quiet_cmd_check = CHECK $(printdir) ($(words $(all-files)) files) | |||
67 | # Headers list can be pretty long, xargs helps to avoid | 84 | # Headers list can be pretty long, xargs helps to avoid |
68 | # the "Argument list too long" error. | 85 | # the "Argument list too long" error. |
69 | cmd_check = for f in $(all-files); do \ | 86 | cmd_check = for f in $(all-files); do \ |
70 | echo "$(install)/$${f}"; done \ | 87 | echo "$(installdir)/$${f}"; done \ |
71 | | xargs \ | 88 | | xargs \ |
72 | $(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \ | 89 | $(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \ |
73 | touch $@ | 90 | touch $@ |
diff --git a/scripts/headers_install.pl b/scripts/headers_install.pl index 48462be328bb..239d22d4207b 100644 --- a/scripts/headers_install.pl +++ b/scripts/headers_install.pl | |||
@@ -4,8 +4,7 @@ | |||
4 | # user space and copy the files to their destination. | 4 | # user space and copy the files to their destination. |
5 | # | 5 | # |
6 | # Usage: headers_install.pl readdir installdir arch [files...] | 6 | # Usage: headers_install.pl readdir installdir arch [files...] |
7 | # readdir: dir to open files | 7 | # installdir: dir to install the files to |
8 | # installdir: dir to install the files | ||
9 | # arch: current architecture | 8 | # arch: current architecture |
10 | # arch is used to force a reinstallation when the arch | 9 | # arch is used to force a reinstallation when the arch |
11 | # changes because kbuild then detect a command line change. | 10 | # changes because kbuild then detect a command line change. |
@@ -18,15 +17,18 @@ | |||
18 | 17 | ||
19 | use strict; | 18 | use strict; |
20 | 19 | ||
21 | my ($readdir, $installdir, $arch, @files) = @ARGV; | 20 | my ($installdir, $arch, @files) = @ARGV; |
22 | 21 | ||
23 | my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__"; | 22 | my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__"; |
24 | 23 | ||
25 | foreach my $file (@files) { | 24 | foreach my $filename (@files) { |
25 | my $file = $filename; | ||
26 | $file =~ s!^.*/!!; | ||
27 | |||
26 | my $tmpfile = "$installdir/$file.tmp"; | 28 | my $tmpfile = "$installdir/$file.tmp"; |
27 | 29 | ||
28 | open(my $in, '<', "$readdir/$file") | 30 | open(my $in, '<', $filename) |
29 | or die "$readdir/$file: $!\n"; | 31 | or die "$filename: $!\n"; |
30 | open(my $out, '>', $tmpfile) | 32 | open(my $out, '>', $tmpfile) |
31 | or die "$tmpfile: $!\n"; | 33 | or die "$tmpfile: $!\n"; |
32 | while (my $line = <$in>) { | 34 | while (my $line = <$in>) { |