diff options
| author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2019-01-02 20:10:38 -0500 |
|---|---|---|
| committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2019-01-05 19:46:51 -0500 |
| commit | 919987318a129b4d0c2203a3c6fd2d804be77100 (patch) | |
| tree | e072c3709d30b9383ada73673ef9ee4dcc79e9c1 /scripts | |
| parent | d4ce5458ea1b7d8ca49c436d602095c4912777d3 (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>
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/Makefile.asm-generic | 4 | ||||
| -rw-r--r-- | scripts/Makefile.headersinst | 7 |
2 files changed, 4 insertions, 7 deletions
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 | ||
| 15 | include scripts/Kbuild.include | 15 | include scripts/Kbuild.include |
| 16 | 16 | ||
| 17 | # If arch does not implement mandatory headers, fallback to asm-generic ones. | ||
| 18 | mandatory-y := $(filter-out $(generated-y), $(mandatory-y)) | ||
| 19 | generic-y += $(foreach f, $(mandatory-y), $(if $(wildcard $(srctree)/$(src)/$(f)),,$(f))) | ||
| 20 | |||
| 17 | generic-y := $(addprefix $(obj)/, $(generic-y)) | 21 | generic-y := $(addprefix $(obj)/, $(generic-y)) |
| 18 | generated-y := $(addprefix $(obj)/, $(generated-y)) | 22 | generated-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 | |||
| 56 | all-files := $(header-files) $(genhdr-files) | 56 | all-files := $(header-files) $(genhdr-files) |
| 57 | output-files := $(addprefix $(installdir)/, $(all-files)) | 57 | output-files := $(addprefix $(installdir)/, $(all-files)) |
| 58 | 58 | ||
| 59 | ifneq ($(mandatory-y),) | ||
| 60 | missing := $(filter-out $(all-files),$(mandatory-y)) | ||
| 61 | ifneq ($(missing),) | ||
| 62 | $(error Some mandatory headers ($(missing)) are missing in $(obj)) | ||
| 63 | endif | ||
| 64 | endif | ||
| 65 | |||
| 66 | # Work out what needs to be removed | 59 | # Work out what needs to be removed |
| 67 | oldheaders := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h)) | 60 | oldheaders := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h)) |
| 68 | unwanted := $(filter-out $(all-files),$(oldheaders)) | 61 | unwanted := $(filter-out $(all-files),$(oldheaders)) |
