mirror of
https://github.com/torvalds/linux.git
synced 2026-01-24 23:16:46 +00:00
uapi: export all headers under uapi directories
Regularly, when a new header is created in include/uapi/, the developer forgets to add it in the corresponding Kbuild file. This error is usually detected after the release is out. In fact, all headers under uapi directories should be exported, thus it's useless to have an exhaustive list. After this patch, the following files, which were not exported, are now exported (with make headers_install_all): asm-arc/kvm_para.h asm-arc/ucontext.h asm-blackfin/shmparam.h asm-blackfin/ucontext.h asm-c6x/shmparam.h asm-c6x/ucontext.h asm-cris/kvm_para.h asm-h8300/shmparam.h asm-h8300/ucontext.h asm-hexagon/shmparam.h asm-m32r/kvm_para.h asm-m68k/kvm_para.h asm-m68k/shmparam.h asm-metag/kvm_para.h asm-metag/shmparam.h asm-metag/ucontext.h asm-mips/hwcap.h asm-mips/reg.h asm-mips/ucontext.h asm-nios2/kvm_para.h asm-nios2/ucontext.h asm-openrisc/shmparam.h asm-parisc/kvm_para.h asm-powerpc/perf_regs.h asm-sh/kvm_para.h asm-sh/ucontext.h asm-tile/shmparam.h asm-unicore32/shmparam.h asm-unicore32/ucontext.h asm-x86/hwcap2.h asm-xtensa/kvm_para.h drm/armada_drm.h drm/etnaviv_drm.h drm/vgem_drm.h linux/aspeed-lpc-ctrl.h linux/auto_dev-ioctl.h linux/bcache.h linux/btrfs_tree.h linux/can/vxcan.h linux/cifs/cifs_mount.h linux/coresight-stm.h linux/cryptouser.h linux/fsmap.h linux/genwqe/genwqe_card.h linux/hash_info.h linux/kcm.h linux/kcov.h linux/kfd_ioctl.h linux/lightnvm.h linux/module.h linux/nbd-netlink.h linux/nilfs2_api.h linux/nilfs2_ondisk.h linux/nsfs.h linux/pr.h linux/qrtr.h linux/rpmsg.h linux/sched/types.h linux/sed-opal.h linux/smc.h linux/smc_diag.h linux/stm.h linux/switchtec_ioctl.h linux/vfio_ccw.h linux/wil6210_uapi.h rdma/bnxt_re-abi.h Note that I have removed from this list the files which are generated in every exported directories (like .install or .install.cmd). Thanks to Julien Floret <julien.floret@6wind.com> for the tip to get all subdirs with a pure makefile command. For the record, note that exported files for asm directories are a mix of files listed by: - include/uapi/asm-generic/Kbuild.asm; - arch/<arch>/include/uapi/asm/Kbuild; - arch/<arch>/include/asm/Kbuild. Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Acked-by: Russell King <rmk+kernel@armlinux.org.uk> Acked-by: Mark Salter <msalter@redhat.com> Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
committed by
Masahiro Yamada
parent
ea6819e1f2
commit
fcc8487d47
@@ -1,17 +1,19 @@
|
||||
# ==========================================================================
|
||||
# Installing headers
|
||||
#
|
||||
# header-y - list files to be installed. They are preprocessed
|
||||
# to remove __KERNEL__ section of the file
|
||||
# genhdr-y - Same as header-y but in a generated/ directory
|
||||
# All headers under include/uapi, include/generated/uapi,
|
||||
# arch/<arch>/include/uapi/asm and arch/<arch>/include/generated/uapi/asm are
|
||||
# exported.
|
||||
# They are preprocessed to remove __KERNEL__ section of the file.
|
||||
#
|
||||
# ==========================================================================
|
||||
|
||||
# generated header directory
|
||||
gen := $(if $(gen),$(gen),$(subst include/,include/generated/,$(obj)))
|
||||
|
||||
# Kbuild file is optional
|
||||
kbuild-file := $(srctree)/$(obj)/Kbuild
|
||||
include $(kbuild-file)
|
||||
-include $(kbuild-file)
|
||||
|
||||
# called may set destination dir (when installing to asm/)
|
||||
_dst := $(if $(dst),$(dst),$(obj))
|
||||
@@ -25,9 +27,15 @@ include scripts/Kbuild.include
|
||||
|
||||
installdir := $(INSTALL_HDR_PATH)/$(subst uapi/,,$(_dst))
|
||||
|
||||
header-y := $(sort $(header-y))
|
||||
subdirs := $(patsubst %/,%,$(filter %/, $(header-y)))
|
||||
header-y := $(filter-out %/, $(header-y))
|
||||
srcdir := $(srctree)/$(obj)
|
||||
gendir := $(objtree)/$(gen)
|
||||
subdirs := $(patsubst $(srcdir)/%/.,%,$(wildcard $(srcdir)/*/.))
|
||||
subdirs += $(subdir-y)
|
||||
header-files := $(notdir $(wildcard $(srcdir)/*.h))
|
||||
header-files += $(notdir $(wildcard $(srcdir)/*.agh))
|
||||
header-files := $(filter-out $(no-export-headers), $(header-files))
|
||||
genhdr-files := $(notdir $(wildcard $(gendir)/*.h))
|
||||
genhdr-files := $(filter-out $(header-files), $(genhdr-files))
|
||||
|
||||
# files used to track state of install/check
|
||||
install-file := $(installdir)/.install
|
||||
@@ -35,25 +43,20 @@ check-file := $(installdir)/.check
|
||||
|
||||
# generic-y list all files an architecture uses from asm-generic
|
||||
# Use this to build a list of headers which require a wrapper
|
||||
wrapper-files := $(filter $(header-y), $(generic-y))
|
||||
|
||||
srcdir := $(srctree)/$(obj)
|
||||
gendir := $(objtree)/$(gen)
|
||||
generic-files := $(notdir $(wildcard $(srctree)/include/uapi/asm-generic/*.h))
|
||||
wrapper-files := $(filter $(generic-files), $(generic-y))
|
||||
wrapper-files := $(filter-out $(header-files), $(wrapper-files))
|
||||
|
||||
# all headers files for this dir
|
||||
header-y := $(filter-out $(generic-y), $(header-y))
|
||||
all-files := $(header-y) $(genhdr-y) $(wrapper-files)
|
||||
all-files := $(header-files) $(genhdr-files) $(wrapper-files)
|
||||
output-files := $(addprefix $(installdir)/, $(all-files))
|
||||
|
||||
# Check that all expected files exist
|
||||
$(foreach hdr, $(header-y), \
|
||||
$(if $(wildcard $(srcdir)/$(hdr)),, \
|
||||
$(error Missing UAPI file $(srcdir)/$(hdr)) \
|
||||
))
|
||||
$(foreach hdr, $(genhdr-y), \
|
||||
$(if $(wildcard $(gendir)/$(hdr)),, \
|
||||
$(error Missing generated UAPI file $(gendir)/$(hdr)) \
|
||||
))
|
||||
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))
|
||||
@@ -67,8 +70,8 @@ printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@))
|
||||
quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
|
||||
file$(if $(word 2, $(all-files)),s))
|
||||
cmd_install = \
|
||||
$(CONFIG_SHELL) $< $(installdir) $(srcdir) $(header-y); \
|
||||
$(CONFIG_SHELL) $< $(installdir) $(gendir) $(genhdr-y); \
|
||||
$(CONFIG_SHELL) $< $(installdir) $(srcdir) $(header-files); \
|
||||
$(CONFIG_SHELL) $< $(installdir) $(gendir) $(genhdr-files); \
|
||||
for F in $(wrapper-files); do \
|
||||
echo "\#include <asm-generic/$$F>" > $(installdir)/$$F; \
|
||||
done; \
|
||||
@@ -95,8 +98,8 @@ __headersinst: $(subdirs) $(install-file)
|
||||
|
||||
targets += $(install-file)
|
||||
$(install-file): scripts/headers_install.sh \
|
||||
$(addprefix $(srcdir)/,$(header-y)) \
|
||||
$(addprefix $(gendir)/,$(genhdr-y)) FORCE
|
||||
$(addprefix $(srcdir)/,$(header-files)) \
|
||||
$(addprefix $(gendir)/,$(genhdr-files)) FORCE
|
||||
$(if $(unwanted),$(call cmd,remove),)
|
||||
$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
|
||||
$(call if_changed,install)
|
||||
|
||||
Reference in New Issue
Block a user