aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2019-01-02 20:10:38 -0500
committerMasahiro Yamada <yamada.masahiro@socionext.com>2019-01-05 19:46:51 -0500
commit919987318a129b4d0c2203a3c6fd2d804be77100 (patch)
treee072c3709d30b9383ada73673ef9ee4dcc79e9c1
parentd4ce5458ea1b7d8ca49c436d602095c4912777d3 (diff)
kbuild: generate asm-generic wrappers if mandatory headers are missing
Some time ago, Sam pointed out a certain degree of overwrap between generic-y and mandatory-y. (https://lkml.org/lkml/2017/7/10/121) I tweaked the meaning of mandatory-y a little bit; now it defines the minimum set of ASM headers that all architectures must have. If arch does not have specific implementation of a mandatory header, Kbuild will let it fallback to the asm-generic one by automatically generating a wrapper. This will allow to drop lots of redundant generic-y defines. Previously, "mandatory" was used in the context of UAPI, but I guess this can be extended to kernel space ASM headers. Suggested-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Acked-by: Sam Ravnborg <sam@ravnborg.org>
-rw-r--r--Documentation/kbuild/makefiles.txt9
-rw-r--r--scripts/Makefile.asm-generic4
-rw-r--r--scripts/Makefile.headersinst7
3 files changed, 10 insertions, 10 deletions
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
index 8da26c6dd886..bf28c47bfd72 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -1296,9 +1296,12 @@ See subsequent chapter for the syntax of the Kbuild file.
1296 1296
1297--- 7.4 mandatory-y 1297--- 7.4 mandatory-y
1298 1298
1299 mandatory-y is essentially used by include/uapi/asm-generic/Kbuild.asm 1299 mandatory-y is essentially used by include/(uapi/)asm-generic/Kbuild.asm
1300 to define the minimum set of headers that must be exported in 1300 to define the minimum set of ASM headers that all architectures must have.
1301 include/asm. 1301
1302 This works like optional generic-y. If a mandatory header is missing
1303 in arch/$(ARCH)/include/(uapi/)/asm, Kbuild will automatically generate
1304 a wrapper of the asm-generic one.
1302 1305
1303 The convention is to list one subdir per line and 1306 The convention is to list one subdir per line and
1304 preferably in alphabetic order. 1307 preferably in alphabetic order.
diff --git a/scripts/Makefile.asm-generic b/scripts/Makefile.asm-generic
index 760323e70ebc..a62d2823f6cf 100644
--- a/scripts/Makefile.asm-generic
+++ b/scripts/Makefile.asm-generic
@@ -14,6 +14,10 @@ src := $(subst /generated,,$(obj))
14 14
15include scripts/Kbuild.include 15include scripts/Kbuild.include
16 16
17# If arch does not implement mandatory headers, fallback to asm-generic ones.
18mandatory-y := $(filter-out $(generated-y), $(mandatory-y))
19generic-y += $(foreach f, $(mandatory-y), $(if $(wildcard $(srctree)/$(src)/$(f)),,$(f)))
20
17generic-y := $(addprefix $(obj)/, $(generic-y)) 21generic-y := $(addprefix $(obj)/, $(generic-y))
18generated-y := $(addprefix $(obj)/, $(generated-y)) 22generated-y := $(addprefix $(obj)/, $(generated-y))
19 23
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst
index 45927fcddbc0..3d1ebaabd1b6 100644
--- a/scripts/Makefile.headersinst
+++ b/scripts/Makefile.headersinst
@@ -56,13 +56,6 @@ check-file := $(installdir)/.check
56all-files := $(header-files) $(genhdr-files) 56all-files := $(header-files) $(genhdr-files)
57output-files := $(addprefix $(installdir)/, $(all-files)) 57output-files := $(addprefix $(installdir)/, $(all-files))
58 58
59ifneq ($(mandatory-y),)
60missing := $(filter-out $(all-files),$(mandatory-y))
61ifneq ($(missing),)
62$(error Some mandatory headers ($(missing)) are missing in $(obj))
63endif
64endif
65
66# Work out what needs to be removed 59# Work out what needs to be removed
67oldheaders := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h)) 60oldheaders := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h))
68unwanted := $(filter-out $(all-files),$(oldheaders)) 61unwanted := $(filter-out $(all-files),$(oldheaders))