Skip to content

Commit

Permalink
kbuild: generate asm-generic wrappers if mandatory headers are missing
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Masahiro Yamada <[email protected]>
Acked-by: Sam Ravnborg <[email protected]>
  • Loading branch information
masahir0y committed Jan 6, 2019
1 parent d4ce545 commit 9199873
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 10 deletions.
9 changes: 6 additions & 3 deletions Documentation/kbuild/makefiles.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1296,9 +1296,12 @@ See subsequent chapter for the syntax of the Kbuild file.

--- 7.4 mandatory-y

mandatory-y is essentially used by include/uapi/asm-generic/Kbuild.asm
to define the minimum set of headers that must be exported in
include/asm.
mandatory-y is essentially used by include/(uapi/)asm-generic/Kbuild.asm
to define the minimum set of ASM headers that all architectures must have.

This works like optional generic-y. If a mandatory header is missing
in arch/$(ARCH)/include/(uapi/)/asm, Kbuild will automatically generate
a wrapper of the asm-generic one.

The convention is to list one subdir per line and
preferably in alphabetic order.
Expand Down
4 changes: 4 additions & 0 deletions scripts/Makefile.asm-generic
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ src := $(subst /generated,,$(obj))

include scripts/Kbuild.include

# If arch does not implement mandatory headers, fallback to asm-generic ones.
mandatory-y := $(filter-out $(generated-y), $(mandatory-y))
generic-y += $(foreach f, $(mandatory-y), $(if $(wildcard $(srctree)/$(src)/$(f)),,$(f)))

generic-y := $(addprefix $(obj)/, $(generic-y))
generated-y := $(addprefix $(obj)/, $(generated-y))

Expand Down
7 changes: 0 additions & 7 deletions scripts/Makefile.headersinst
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,6 @@ check-file := $(installdir)/.check
all-files := $(header-files) $(genhdr-files)
output-files := $(addprefix $(installdir)/, $(all-files))

ifneq ($(mandatory-y),)
missing := $(filter-out $(all-files),$(mandatory-y))
ifneq ($(missing),)
$(error Some mandatory headers ($(missing)) are missing in $(obj))
endif
endif

# Work out what needs to be removed
oldheaders := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h))
unwanted := $(filter-out $(all-files),$(oldheaders))
Expand Down

0 comments on commit 9199873

Please sign in to comment.