mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:02:20 +00:00
Kbuild updates for v5.3
- remove headers_{install,check}_all targets - remove unreasonable 'depends on !UML' from CONFIG_SAMPLES - re-implement 'make headers_install' more cleanly - add new header-test-y syntax to compile-test headers - compile-test exported headers to ensure they are compilable in user-space - compile-test headers under include/ to ensure they are self-contained - remove -Waggregate-return, -Wno-uninitialized, -Wno-unused-value flags - add -Werror=unknown-warning-option for Clang - add 128-bit built-in types support to genksyms - fix missed rebuild of modules.builtin - propagate 'No space left on device' error in fixdep to Make - allow Clang to use its integrated assembler - improve some coccinelle scripts - add a new flag KBUILD_ABS_SRCTREE to request Kbuild to use absolute path for $(srctree). - do not ignore errors when compression utility is missing - misc cleanups -----BEGIN PGP SIGNATURE----- iQJSBAABCgA8FiEEbmPs18K1szRHjPqEPYsBB53g2wYFAl0oxNkeHHlhbWFkYS5t YXNhaGlyb0Bzb2Npb25leHQuY29tAAoJED2LAQed4NsGnhcP/AuM8s+3SYFiLitJ ISbznLFP2Xatq0SPXp5+moez/AMTK6Mm1biPcdo20d+TjVEh4+9F2nq12Ii9U8/D tds9A6G8+Bb28r9GMIVQPdFohijW6ijtDziS31iQnIWyPsP/yx6PKfLAD9F4ca1x 7/4btmu+BOMjtN0NrMWSNz5MM47xUzoWIALL40SV4PzGVXLCQZ2PBNPeSRIk22Jt ynDNPuNsmDWcFfwAE+sLSDrhCHZlwM8rg8rf6jmYdc4LcN4cj0oho5+K1TRyC9mn fO3PT25juFejthxQulxEfyGggnyLM6BNTgPDGcCHSP4nD7mlXA9GcpZICtJOgGGu SlDadMZ0GRMK5zcZ0MF0GQboeyViwsbXgrRcYuXt6cUFWX4P/1SeAQ5Mf4u1EKqf hEbwFXV/g81ht0lFS8gyWkvdpoNPtxGHNPusLjp65C4rc0/48/s+7EE/u8JTPl1g dQTeIOds6XUOkJgqhEfuq+8gfngbjKc9bYhs+ACbkCzBltQdnb6m5aLgk0ODxe8I WbGn0+cQcS9VVwre7E5DnFSVWVOHAG5taiUwj0KDcHB0Jxw9Gvorq9WU1ppHHYH2 XQIFBx7XHdn28d+plS8R23vAPgDgrGdvE5RYK5tNQLhTJ6BbjlZ1n/Tmxzu62scK deG3aCOB13Om7OTzTUh9+C3TC9ZQ =E2Rz -----END PGP SIGNATURE----- Merge tag 'kbuild-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild Pull Kbuild updates from Masahiro Yamada: - remove headers_{install,check}_all targets - remove unreasonable 'depends on !UML' from CONFIG_SAMPLES - re-implement 'make headers_install' more cleanly - add new header-test-y syntax to compile-test headers - compile-test exported headers to ensure they are compilable in user-space - compile-test headers under include/ to ensure they are self-contained - remove -Waggregate-return, -Wno-uninitialized, -Wno-unused-value flags - add -Werror=unknown-warning-option for Clang - add 128-bit built-in types support to genksyms - fix missed rebuild of modules.builtin - propagate 'No space left on device' error in fixdep to Make - allow Clang to use its integrated assembler - improve some coccinelle scripts - add a new flag KBUILD_ABS_SRCTREE to request Kbuild to use absolute path for $(srctree). - do not ignore errors when compression utility is missing - misc cleanups * tag 'kbuild-v5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (49 commits) kbuild: use -- separater intead of $(filter-out ...) for cc-cross-prefix kbuild: Inform user to pass ARCH= for make mrproper kbuild: fix compression errors getting ignored kbuild: add a flag to force absolute path for srctree kbuild: replace KBUILD_SRCTREE with boolean building_out_of_srctree kbuild: remove src and obj from the top Makefile scripts/tags.sh: remove unused environment variables from comments scripts/tags.sh: drop SUBARCH support for ARM kbuild: compile-test kernel headers to ensure they are self-contained kheaders: include only headers into kheaders_data.tar.xz kheaders: remove meaningless -R option of 'ls' kbuild: support header-test-pattern-y kbuild: do not create wrappers for header-test-y kbuild: compile-test exported headers to ensure they are self-contained init/Kconfig: add CONFIG_CC_CAN_LINK kallsyms: exclude kasan local symbols on s390 kbuild: add more hints about SUBDIRS replacement coccinelle: api/stream_open: treat all wait_.*() calls as blocking coccinelle: put_device: Add a cast to an expression for an assignment coccinelle: put_device: Adjust a message construction ...
This commit is contained in:
commit
39ceda5ce1
@ -40,12 +40,5 @@ INSTALL_HDR_PATH indicates where to install the headers. It defaults to
|
|||||||
An 'include' directory is automatically created inside INSTALL_HDR_PATH and
|
An 'include' directory is automatically created inside INSTALL_HDR_PATH and
|
||||||
headers are installed in 'INSTALL_HDR_PATH/include'.
|
headers are installed in 'INSTALL_HDR_PATH/include'.
|
||||||
|
|
||||||
The command "make headers_install_all" exports headers for all architectures
|
|
||||||
simultaneously. (This is mostly of interest to distribution maintainers,
|
|
||||||
who create an architecture-independent tarball from the resulting include
|
|
||||||
directory.) You also can use HDR_ARCH_LIST to specify list of architectures.
|
|
||||||
Remember to provide the appropriate linux/asm directory via "mv" or "ln -s"
|
|
||||||
before building a C library with headers exported this way.
|
|
||||||
|
|
||||||
The kernel header export infrastructure is maintained by David Woodhouse
|
The kernel header export infrastructure is maintained by David Woodhouse
|
||||||
<dwmw2@infradead.org>.
|
<dwmw2@infradead.org>.
|
||||||
|
@ -200,6 +200,15 @@ The output directory is often set using "O=..." on the commandline.
|
|||||||
|
|
||||||
The value can be overridden in which case the default value is ignored.
|
The value can be overridden in which case the default value is ignored.
|
||||||
|
|
||||||
|
KBUILD_ABS_SRCTREE
|
||||||
|
--------------------------------------------------
|
||||||
|
Kbuild uses a relative path to point to the tree when possible. For instance,
|
||||||
|
when building in the source tree, the source tree path is '.'
|
||||||
|
|
||||||
|
Setting this flag requests Kbuild to use absolute path to the source tree.
|
||||||
|
There are some useful cases to do so, like when generating tag files with
|
||||||
|
absolute path entries etc.
|
||||||
|
|
||||||
KBUILD_SIGN_PIN
|
KBUILD_SIGN_PIN
|
||||||
---------------
|
---------------
|
||||||
This variable allows a passphrase or PIN to be passed to the sign-file
|
This variable allows a passphrase or PIN to be passed to the sign-file
|
||||||
|
@ -999,11 +999,7 @@ When kbuild executes, the following steps are followed (roughly):
|
|||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
The archheaders: rule is used to generate header files that
|
The archheaders: rule is used to generate header files that
|
||||||
may be installed into user space by "make header_install" or
|
may be installed into user space by "make header_install".
|
||||||
"make headers_install_all". In order to support
|
|
||||||
"make headers_install_all", this target has to be able to run
|
|
||||||
on an unconfigured tree, or a tree configured for another
|
|
||||||
architecture.
|
|
||||||
|
|
||||||
It is run before "make archprepare" when run on the
|
It is run before "make archprepare" when run on the
|
||||||
architecture itself.
|
architecture itself.
|
||||||
@ -1140,6 +1136,22 @@ When kbuild executes, the following steps are followed (roughly):
|
|||||||
In this example, extra-y is used to list object files that
|
In this example, extra-y is used to list object files that
|
||||||
shall be built, but shall not be linked as part of built-in.a.
|
shall be built, but shall not be linked as part of built-in.a.
|
||||||
|
|
||||||
|
header-test-y
|
||||||
|
|
||||||
|
header-test-y specifies headers (*.h) in the current directory that
|
||||||
|
should be compile tested to ensure they are self-contained,
|
||||||
|
i.e. compilable as standalone units. If CONFIG_HEADER_TEST is enabled,
|
||||||
|
this builds them as part of extra-y.
|
||||||
|
|
||||||
|
header-test-pattern-y
|
||||||
|
|
||||||
|
This works as a weaker version of header-test-y, and accepts wildcard
|
||||||
|
patterns. The typical usage is:
|
||||||
|
|
||||||
|
header-test-pattern-y += *.h
|
||||||
|
|
||||||
|
This specifies all the files that matches to '*.h' in the current
|
||||||
|
directory, but the files in 'header-test-' are excluded.
|
||||||
|
|
||||||
6.7 Commands useful for building a boot image
|
6.7 Commands useful for building a boot image
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
117
Makefile
117
Makefile
@ -212,6 +212,13 @@ endif
|
|||||||
ifdef SUBDIRS
|
ifdef SUBDIRS
|
||||||
$(warning ================= WARNING ================)
|
$(warning ================= WARNING ================)
|
||||||
$(warning 'SUBDIRS' will be removed after Linux 5.3)
|
$(warning 'SUBDIRS' will be removed after Linux 5.3)
|
||||||
|
$(warning )
|
||||||
|
$(warning If you are building an individual subdirectory)
|
||||||
|
$(warning in the kernel tree, you can do like this:)
|
||||||
|
$(warning $$ make path/to/dir/you/want/to/build/)
|
||||||
|
$(warning (Do not forget the trailing slash))
|
||||||
|
$(warning )
|
||||||
|
$(warning If you are building an external module,)
|
||||||
$(warning Please use 'M=' or 'KBUILD_EXTMOD' instead)
|
$(warning Please use 'M=' or 'KBUILD_EXTMOD' instead)
|
||||||
$(warning ==========================================)
|
$(warning ==========================================)
|
||||||
KBUILD_EXTMOD ?= $(SUBDIRS)
|
KBUILD_EXTMOD ?= $(SUBDIRS)
|
||||||
@ -221,9 +228,12 @@ ifeq ("$(origin M)", "command line")
|
|||||||
KBUILD_EXTMOD := $(M)
|
KBUILD_EXTMOD := $(M)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
export KBUILD_CHECKSRC KBUILD_EXTMOD
|
||||||
|
|
||||||
ifeq ($(abs_srctree),$(abs_objtree))
|
ifeq ($(abs_srctree),$(abs_objtree))
|
||||||
# building in the source tree
|
# building in the source tree
|
||||||
srctree := .
|
srctree := .
|
||||||
|
building_out_of_srctree :=
|
||||||
else
|
else
|
||||||
ifeq ($(abs_srctree)/,$(dir $(abs_objtree)))
|
ifeq ($(abs_srctree)/,$(dir $(abs_objtree)))
|
||||||
# building in a subdirectory of the source tree
|
# building in a subdirectory of the source tree
|
||||||
@ -231,22 +241,17 @@ else
|
|||||||
else
|
else
|
||||||
srctree := $(abs_srctree)
|
srctree := $(abs_srctree)
|
||||||
endif
|
endif
|
||||||
|
building_out_of_srctree := 1
|
||||||
# TODO:
|
|
||||||
# KBUILD_SRC is only used to distinguish in-tree/out-of-tree build.
|
|
||||||
# Replace it with $(srctree) or something.
|
|
||||||
KBUILD_SRC := $(abs_srctree)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
export KBUILD_CHECKSRC KBUILD_EXTMOD KBUILD_SRC
|
ifneq ($(KBUILD_ABS_SRCTREE),)
|
||||||
|
srctree := $(abs_srctree)
|
||||||
|
endif
|
||||||
|
|
||||||
objtree := .
|
objtree := .
|
||||||
src := $(srctree)
|
|
||||||
obj := $(objtree)
|
|
||||||
|
|
||||||
VPATH := $(srctree)
|
VPATH := $(srctree)
|
||||||
|
|
||||||
export srctree objtree VPATH
|
export building_out_of_srctree srctree objtree VPATH
|
||||||
|
|
||||||
# To make sure we do not include .config for any of the *config targets
|
# To make sure we do not include .config for any of the *config targets
|
||||||
# catch them early, and hand them over to scripts/kconfig/Makefile
|
# catch them early, and hand them over to scripts/kconfig/Makefile
|
||||||
@ -262,7 +267,7 @@ old_version_h := include/linux/version.h
|
|||||||
clean-targets := %clean mrproper cleandocs
|
clean-targets := %clean mrproper cleandocs
|
||||||
no-dot-config-targets := $(clean-targets) \
|
no-dot-config-targets := $(clean-targets) \
|
||||||
cscope gtags TAGS tags help% %docs check% coccicheck \
|
cscope gtags TAGS tags help% %docs check% coccicheck \
|
||||||
$(version_h) headers_% archheaders archscripts \
|
$(version_h) headers headers_% archheaders archscripts \
|
||||||
%asm-generic kernelversion %src-pkg
|
%asm-generic kernelversion %src-pkg
|
||||||
no-sync-config-targets := $(no-dot-config-targets) install %install \
|
no-sync-config-targets := $(no-dot-config-targets) install %install \
|
||||||
kernelrelease
|
kernelrelease
|
||||||
@ -449,7 +454,7 @@ USERINCLUDE := \
|
|||||||
LINUXINCLUDE := \
|
LINUXINCLUDE := \
|
||||||
-I$(srctree)/arch/$(SRCARCH)/include \
|
-I$(srctree)/arch/$(SRCARCH)/include \
|
||||||
-I$(objtree)/arch/$(SRCARCH)/include/generated \
|
-I$(objtree)/arch/$(SRCARCH)/include/generated \
|
||||||
$(if $(filter .,$(srctree)),,-I$(srctree)/include) \
|
$(if $(building_out_of_srctree),-I$(srctree)/include) \
|
||||||
-I$(objtree)/include \
|
-I$(objtree)/include \
|
||||||
$(USERINCLUDE)
|
$(USERINCLUDE)
|
||||||
|
|
||||||
@ -510,7 +515,7 @@ PHONY += outputmakefile
|
|||||||
# At the same time when output Makefile generated, generate .gitignore to
|
# At the same time when output Makefile generated, generate .gitignore to
|
||||||
# ignore whole output directory
|
# ignore whole output directory
|
||||||
outputmakefile:
|
outputmakefile:
|
||||||
ifneq ($(srctree),.)
|
ifdef building_out_of_srctree
|
||||||
$(Q)ln -fsn $(srctree) source
|
$(Q)ln -fsn $(srctree) source
|
||||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile $(srctree)
|
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile $(srctree)
|
||||||
$(Q)test -e .gitignore || \
|
$(Q)test -e .gitignore || \
|
||||||
@ -527,7 +532,10 @@ endif
|
|||||||
ifneq ($(GCC_TOOLCHAIN),)
|
ifneq ($(GCC_TOOLCHAIN),)
|
||||||
CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN)
|
CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN)
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(shell $(AS) --version 2>&1 | head -n 1 | grep clang),)
|
||||||
CLANG_FLAGS += -no-integrated-as
|
CLANG_FLAGS += -no-integrated-as
|
||||||
|
endif
|
||||||
|
CLANG_FLAGS += -Werror=unknown-warning-option
|
||||||
KBUILD_CFLAGS += $(CLANG_FLAGS)
|
KBUILD_CFLAGS += $(CLANG_FLAGS)
|
||||||
KBUILD_AFLAGS += $(CLANG_FLAGS)
|
KBUILD_AFLAGS += $(CLANG_FLAGS)
|
||||||
export CLANG_FLAGS
|
export CLANG_FLAGS
|
||||||
@ -608,6 +616,7 @@ ifeq ($(KBUILD_EXTMOD),)
|
|||||||
init-y := init/
|
init-y := init/
|
||||||
drivers-y := drivers/ sound/
|
drivers-y := drivers/ sound/
|
||||||
drivers-$(CONFIG_SAMPLES) += samples/
|
drivers-$(CONFIG_SAMPLES) += samples/
|
||||||
|
drivers-$(CONFIG_KERNEL_HEADER_TEST) += include/
|
||||||
net-y := net/
|
net-y := net/
|
||||||
libs-y := lib/
|
libs-y := lib/
|
||||||
core-y := usr/
|
core-y := usr/
|
||||||
@ -1053,9 +1062,6 @@ vmlinux: scripts/link-vmlinux.sh autoksyms_recursive $(vmlinux-deps) FORCE
|
|||||||
|
|
||||||
targets := vmlinux
|
targets := vmlinux
|
||||||
|
|
||||||
# Some samples need headers_install.
|
|
||||||
samples: headers_install
|
|
||||||
|
|
||||||
# The actual objects are generated when descending,
|
# The actual objects are generated when descending,
|
||||||
# make sure no implicit rule kicks in
|
# make sure no implicit rule kicks in
|
||||||
$(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
|
$(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
|
||||||
@ -1096,12 +1102,12 @@ PHONY += prepare archprepare prepare1 prepare3
|
|||||||
# and if so do:
|
# and if so do:
|
||||||
# 1) Check that make has not been executed in the kernel src $(srctree)
|
# 1) Check that make has not been executed in the kernel src $(srctree)
|
||||||
prepare3: include/config/kernel.release
|
prepare3: include/config/kernel.release
|
||||||
ifneq ($(srctree),.)
|
ifdef building_out_of_srctree
|
||||||
@$(kecho) ' Using $(srctree) as source for kernel'
|
@$(kecho) ' Using $(srctree) as source for kernel'
|
||||||
$(Q)if [ -f $(srctree)/.config -o \
|
$(Q)if [ -f $(srctree)/.config -o \
|
||||||
-d $(srctree)/include/config -o \
|
-d $(srctree)/include/config -o \
|
||||||
-d $(srctree)/arch/$(SRCARCH)/include/generated ]; then \
|
-d $(srctree)/arch/$(SRCARCH)/include/generated ]; then \
|
||||||
echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \
|
echo >&2 " $(srctree) is not clean, please run 'make ARCH=$(ARCH) mrproper'"; \
|
||||||
echo >&2 " in the '$(srctree)' directory.";\
|
echo >&2 " in the '$(srctree)' directory.";\
|
||||||
/bin/false; \
|
/bin/false; \
|
||||||
fi;
|
fi;
|
||||||
@ -1181,39 +1187,44 @@ headerdep:
|
|||||||
#Default location for installed headers
|
#Default location for installed headers
|
||||||
export INSTALL_HDR_PATH = $(objtree)/usr
|
export INSTALL_HDR_PATH = $(objtree)/usr
|
||||||
|
|
||||||
# If we do an all arch process set dst to include/arch-$(SRCARCH)
|
quiet_cmd_headers_install = INSTALL $(INSTALL_HDR_PATH)/include
|
||||||
hdr-dst = $(if $(KBUILD_HEADERS), dst=include/arch-$(SRCARCH), dst=include)
|
cmd_headers_install = \
|
||||||
|
mkdir -p $(INSTALL_HDR_PATH); \
|
||||||
|
rsync -mrl --include='*/' --include='*\.h' --exclude='*' \
|
||||||
|
usr/include $(INSTALL_HDR_PATH)
|
||||||
|
|
||||||
|
PHONY += headers_install
|
||||||
|
headers_install: headers
|
||||||
|
$(call cmd,headers_install)
|
||||||
|
|
||||||
PHONY += archheaders archscripts
|
PHONY += archheaders archscripts
|
||||||
|
|
||||||
PHONY += __headers
|
hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj
|
||||||
__headers: $(version_h) scripts_basic uapi-asm-generic archheaders archscripts
|
|
||||||
$(Q)$(MAKE) $(build)=scripts build_unifdef
|
|
||||||
|
|
||||||
PHONY += headers_install_all
|
PHONY += headers
|
||||||
headers_install_all:
|
headers: $(version_h) scripts_unifdef uapi-asm-generic archheaders archscripts
|
||||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh install
|
|
||||||
|
|
||||||
PHONY += headers_install
|
|
||||||
headers_install: __headers
|
|
||||||
$(if $(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/Kbuild),, \
|
$(if $(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/Kbuild),, \
|
||||||
$(error Headers not exportable for the $(SRCARCH) architecture))
|
$(error Headers not exportable for the $(SRCARCH) architecture))
|
||||||
$(Q)$(MAKE) $(hdr-inst)=include/uapi dst=include
|
$(Q)$(MAKE) $(hdr-inst)=include/uapi
|
||||||
$(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi $(hdr-dst)
|
$(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi
|
||||||
|
|
||||||
PHONY += headers_check_all
|
|
||||||
headers_check_all: headers_install_all
|
|
||||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/headers.sh check
|
|
||||||
|
|
||||||
PHONY += headers_check
|
PHONY += headers_check
|
||||||
headers_check: headers_install
|
headers_check: headers
|
||||||
$(Q)$(MAKE) $(hdr-inst)=include/uapi dst=include HDRCHECK=1
|
$(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1
|
||||||
$(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi $(hdr-dst) HDRCHECK=1
|
$(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi HDRCHECK=1
|
||||||
|
|
||||||
|
ifdef CONFIG_HEADERS_INSTALL
|
||||||
|
prepare: headers
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_HEADERS_CHECK
|
ifdef CONFIG_HEADERS_CHECK
|
||||||
all: headers_check
|
all: headers_check
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
PHONY += scripts_unifdef
|
||||||
|
scripts_unifdef: scripts_basic
|
||||||
|
$(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Kernel selftest
|
# Kernel selftest
|
||||||
|
|
||||||
@ -1283,18 +1294,24 @@ all: modules
|
|||||||
# using awk while concatenating to the final file.
|
# using awk while concatenating to the final file.
|
||||||
|
|
||||||
PHONY += modules
|
PHONY += modules
|
||||||
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
|
modules: $(if $(KBUILD_BUILTIN),vmlinux) modules.order modules.builtin
|
||||||
$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
|
|
||||||
@$(kecho) ' Building modules, stage 2.';
|
@$(kecho) ' Building modules, stage 2.';
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh
|
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh
|
||||||
|
|
||||||
modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
|
modules.order: $(vmlinux-dirs)
|
||||||
$(Q)$(AWK) '!x[$$0]++' $^ > $(objtree)/modules.builtin
|
$(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(vmlinux-dirs)) > $@
|
||||||
|
|
||||||
%/modules.builtin: include/config/auto.conf include/config/tristate.conf
|
modbuiltin-dirs := $(addprefix _modbuiltin_, $(vmlinux-dirs))
|
||||||
$(Q)$(MAKE) $(modbuiltin)=$*
|
|
||||||
|
|
||||||
|
modules.builtin: $(modbuiltin-dirs)
|
||||||
|
$(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(vmlinux-dirs)) > $@
|
||||||
|
|
||||||
|
PHONY += $(modbuiltin-dirs)
|
||||||
|
# tristate.conf is not included from this Makefile. Add it as a prerequisite
|
||||||
|
# here to make it self-healing in case somebody accidentally removes it.
|
||||||
|
$(modbuiltin-dirs): include/config/tristate.conf
|
||||||
|
$(Q)$(MAKE) $(modbuiltin)=$(patsubst _modbuiltin_%,%,$@)
|
||||||
|
|
||||||
# Target to prepare building external modules
|
# Target to prepare building external modules
|
||||||
PHONY += modules_prepare
|
PHONY += modules_prepare
|
||||||
@ -1360,7 +1377,7 @@ CLEAN_DIRS += $(MODVERDIR) include/ksym
|
|||||||
CLEAN_FILES += modules.builtin.modinfo
|
CLEAN_FILES += modules.builtin.modinfo
|
||||||
|
|
||||||
# Directories & files removed with 'make mrproper'
|
# Directories & files removed with 'make mrproper'
|
||||||
MRPROPER_DIRS += include/config usr/include include/generated \
|
MRPROPER_DIRS += include/config include/generated \
|
||||||
arch/$(SRCARCH)/include/generated .tmp_objdiff
|
arch/$(SRCARCH)/include/generated .tmp_objdiff
|
||||||
MRPROPER_FILES += .config .config.old .version \
|
MRPROPER_FILES += .config .config.old .version \
|
||||||
Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
|
Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
|
||||||
@ -1551,7 +1568,7 @@ $(DOC_TARGETS): scripts_basic FORCE
|
|||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
PHONY += scripts_gdb
|
PHONY += scripts_gdb
|
||||||
scripts_gdb: prepare
|
scripts_gdb: prepare0
|
||||||
$(Q)$(MAKE) $(build)=scripts/gdb
|
$(Q)$(MAKE) $(build)=scripts/gdb
|
||||||
$(Q)ln -fsn $(abspath $(srctree)/scripts/gdb/vmlinux-gdb.py)
|
$(Q)ln -fsn $(abspath $(srctree)/scripts/gdb/vmlinux-gdb.py)
|
||||||
|
|
||||||
@ -1698,7 +1715,7 @@ CHECKSTACK_ARCH := $(ARCH)
|
|||||||
endif
|
endif
|
||||||
checkstack:
|
checkstack:
|
||||||
$(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \
|
$(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \
|
||||||
$(PERL) $(src)/scripts/checkstack.pl $(CHECKSTACK_ARCH)
|
$(PERL) $(srctree)/scripts/checkstack.pl $(CHECKSTACK_ARCH)
|
||||||
|
|
||||||
kernelrelease:
|
kernelrelease:
|
||||||
@echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
|
@echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
|
||||||
@ -1717,11 +1734,11 @@ endif
|
|||||||
|
|
||||||
tools/: FORCE
|
tools/: FORCE
|
||||||
$(Q)mkdir -p $(objtree)/tools
|
$(Q)mkdir -p $(objtree)/tools
|
||||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(src)/tools/
|
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/
|
||||||
|
|
||||||
tools/%: FORCE
|
tools/%: FORCE
|
||||||
$(Q)mkdir -p $(objtree)/tools
|
$(Q)mkdir -p $(objtree)/tools
|
||||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(src)/tools/ $*
|
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
|
||||||
|
|
||||||
# Single targets
|
# Single targets
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@ -1755,8 +1772,6 @@ build-dir = $(patsubst %/,%,$(dir $(build-target)))
|
|||||||
PHONY += /
|
PHONY += /
|
||||||
/: ./
|
/: ./
|
||||||
|
|
||||||
# Make sure the latest headers are built for Documentation
|
|
||||||
Documentation/ samples/: headers_install
|
|
||||||
%/: prepare FORCE
|
%/: prepare FORCE
|
||||||
$(Q)$(MAKE) KBUILD_MODULES=1 $(build)=$(build-dir)
|
$(Q)$(MAKE) KBUILD_MODULES=1 $(build)=$(build-dir)
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ ifdef CONFIG_ARC_CURR_IN_REG
|
|||||||
# any kernel headers, and missing the r25 global register
|
# any kernel headers, and missing the r25 global register
|
||||||
# Can't do unconditionally because of recursive include issues
|
# Can't do unconditionally because of recursive include issues
|
||||||
# due to <linux/thread_info.h>
|
# due to <linux/thread_info.h>
|
||||||
LINUXINCLUDE += -include ${src}/arch/arc/include/asm/current.h
|
LINUXINCLUDE += -include $(srctree)/arch/arc/include/asm/current.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
cflags-y += -fsection-anchors
|
cflags-y += -fsection-anchors
|
||||||
|
@ -94,6 +94,7 @@ CONFIG_CONFIGFS_FS=y
|
|||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_STRIP_ASM_SYMS=y
|
CONFIG_STRIP_ASM_SYMS=y
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
|
CONFIG_HEADERS_INSTALL=y
|
||||||
CONFIG_HEADERS_CHECK=y
|
CONFIG_HEADERS_CHECK=y
|
||||||
CONFIG_DEBUG_SECTION_MISMATCH=y
|
CONFIG_DEBUG_SECTION_MISMATCH=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
@ -92,6 +92,7 @@ CONFIG_DEBUG_INFO=y
|
|||||||
CONFIG_DEBUG_INFO_DWARF4=y
|
CONFIG_DEBUG_INFO_DWARF4=y
|
||||||
CONFIG_GDB_SCRIPTS=y
|
CONFIG_GDB_SCRIPTS=y
|
||||||
CONFIG_READABLE_ASM=y
|
CONFIG_READABLE_ASM=y
|
||||||
|
CONFIG_HEADERS_INSTALL=y
|
||||||
CONFIG_HEADERS_CHECK=y
|
CONFIG_HEADERS_CHECK=y
|
||||||
CONFIG_DEBUG_SECTION_MISMATCH=y
|
CONFIG_DEBUG_SECTION_MISMATCH=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
@ -120,8 +120,8 @@ PALO := $(shell if (which palo 2>&1); then : ; \
|
|||||||
elif [ -x /sbin/palo ]; then echo /sbin/palo; \
|
elif [ -x /sbin/palo ]; then echo /sbin/palo; \
|
||||||
fi)
|
fi)
|
||||||
|
|
||||||
PALOCONF := $(shell if [ -f $(src)/palo.conf ]; then echo $(src)/palo.conf; \
|
PALOCONF := $(shell if [ -f $(srctree)/palo.conf ]; then echo $(srctree)/palo.conf; \
|
||||||
else echo $(obj)/palo.conf; \
|
else echo $(objtree)/palo.conf; \
|
||||||
fi)
|
fi)
|
||||||
|
|
||||||
palo lifimage: vmlinuz
|
palo lifimage: vmlinuz
|
||||||
@ -131,8 +131,8 @@ palo lifimage: vmlinuz
|
|||||||
false; \
|
false; \
|
||||||
fi
|
fi
|
||||||
@if test ! -f "$(PALOCONF)"; then \
|
@if test ! -f "$(PALOCONF)"; then \
|
||||||
cp $(src)/arch/parisc/defpalo.conf $(obj)/palo.conf; \
|
cp $(srctree)/arch/parisc/defpalo.conf $(objtree)/palo.conf; \
|
||||||
echo 'A generic palo config file ($(obj)/palo.conf) has been created for you.'; \
|
echo 'A generic palo config file ($(objree)/palo.conf) has been created for you.'; \
|
||||||
echo 'You should check it and re-run "make palo".'; \
|
echo 'You should check it and re-run "make palo".'; \
|
||||||
echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \
|
echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \
|
||||||
false; \
|
false; \
|
||||||
@ -162,10 +162,10 @@ vmlinuz: vmlinux
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
install:
|
install:
|
||||||
$(CONFIG_SHELL) $(src)/arch/parisc/install.sh \
|
$(CONFIG_SHELL) $(srctree)/arch/parisc/install.sh \
|
||||||
$(KERNELRELEASE) vmlinux System.map "$(INSTALL_PATH)"
|
$(KERNELRELEASE) vmlinux System.map "$(INSTALL_PATH)"
|
||||||
zinstall:
|
zinstall:
|
||||||
$(CONFIG_SHELL) $(src)/arch/parisc/install.sh \
|
$(CONFIG_SHELL) $(srctree)/arch/parisc/install.sh \
|
||||||
$(KERNELRELEASE) vmlinuz System.map "$(INSTALL_PATH)"
|
$(KERNELRELEASE) vmlinuz System.map "$(INSTALL_PATH)"
|
||||||
|
|
||||||
CLEAN_FILES += lifimage
|
CLEAN_FILES += lifimage
|
||||||
|
@ -166,6 +166,7 @@ CONFIG_NLS_ISO8859_1=m
|
|||||||
CONFIG_NLS_ISO8859_15=m
|
CONFIG_NLS_ISO8859_15=m
|
||||||
CONFIG_NLS_UTF8=m
|
CONFIG_NLS_UTF8=m
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
|
CONFIG_HEADERS_INSTALL=y
|
||||||
CONFIG_HEADERS_CHECK=y
|
CONFIG_HEADERS_CHECK=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||||
|
@ -90,6 +90,7 @@ CONFIG_NLS_ASCII=m
|
|||||||
CONFIG_NLS_ISO8859_1=m
|
CONFIG_NLS_ISO8859_1=m
|
||||||
CONFIG_NLS_ISO8859_15=m
|
CONFIG_NLS_ISO8859_15=m
|
||||||
CONFIG_NLS_UTF8=m
|
CONFIG_NLS_UTF8=m
|
||||||
|
CONFIG_HEADERS_INSTALL=y
|
||||||
CONFIG_HEADERS_CHECK=y
|
CONFIG_HEADERS_CHECK=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
|
@ -139,6 +139,7 @@ CONFIG_NLS_ISO8859_1=m
|
|||||||
CONFIG_NLS_ISO8859_15=m
|
CONFIG_NLS_ISO8859_15=m
|
||||||
CONFIG_NLS_UTF8=m
|
CONFIG_NLS_UTF8=m
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
|
CONFIG_HEADERS_INSTALL=y
|
||||||
CONFIG_HEADERS_CHECK=y
|
CONFIG_HEADERS_CHECK=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_MUTEXES=y
|
CONFIG_DEBUG_MUTEXES=y
|
||||||
|
@ -183,6 +183,7 @@ CONFIG_NLS_KOI8_R=m
|
|||||||
CONFIG_NLS_KOI8_U=m
|
CONFIG_NLS_KOI8_U=m
|
||||||
CONFIG_NLS_UTF8=y
|
CONFIG_NLS_UTF8=y
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
|
CONFIG_HEADERS_INSTALL=y
|
||||||
CONFIG_HEADERS_CHECK=y
|
CONFIG_HEADERS_CHECK=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
|
@ -1123,6 +1123,7 @@ CONFIG_NLS_KOI8_R=m
|
|||||||
CONFIG_NLS_KOI8_U=m
|
CONFIG_NLS_KOI8_U=m
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_UNUSED_SYMBOLS=y
|
CONFIG_UNUSED_SYMBOLS=y
|
||||||
|
CONFIG_HEADERS_INSTALL=y
|
||||||
CONFIG_HEADERS_CHECK=y
|
CONFIG_HEADERS_CHECK=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
|
@ -588,6 +588,7 @@ CONFIG_GDB_SCRIPTS=y
|
|||||||
CONFIG_FRAME_WARN=1024
|
CONFIG_FRAME_WARN=1024
|
||||||
CONFIG_READABLE_ASM=y
|
CONFIG_READABLE_ASM=y
|
||||||
CONFIG_UNUSED_SYMBOLS=y
|
CONFIG_UNUSED_SYMBOLS=y
|
||||||
|
CONFIG_HEADERS_INSTALL=y
|
||||||
CONFIG_HEADERS_CHECK=y
|
CONFIG_HEADERS_CHECK=y
|
||||||
CONFIG_DEBUG_SECTION_MISMATCH=y
|
CONFIG_DEBUG_SECTION_MISMATCH=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
@ -73,7 +73,7 @@ KBUILD_AFLAGS += $(ARCH_INCLUDE)
|
|||||||
USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -I%,,$(KBUILD_CFLAGS))) \
|
USER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -I%,,$(KBUILD_CFLAGS))) \
|
||||||
$(ARCH_INCLUDE) $(MODE_INCLUDE) $(filter -I%,$(CFLAGS)) \
|
$(ARCH_INCLUDE) $(MODE_INCLUDE) $(filter -I%,$(CFLAGS)) \
|
||||||
-D_FILE_OFFSET_BITS=64 -idirafter $(srctree)/include \
|
-D_FILE_OFFSET_BITS=64 -idirafter $(srctree)/include \
|
||||||
-idirafter $(obj)/include -D__KERNEL__ -D__UM_HOST__
|
-idirafter $(objtree)/include -D__KERNEL__ -D__UM_HOST__
|
||||||
|
|
||||||
#This will adjust *FLAGS accordingly to the platform.
|
#This will adjust *FLAGS accordingly to the platform.
|
||||||
include $(ARCH_DIR)/Makefile-os-$(OS)
|
include $(ARCH_DIR)/Makefile-os-$(OS)
|
||||||
|
1
drivers/gpu/drm/i915/.gitignore
vendored
1
drivers/gpu/drm/i915/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
header_test_*.c
|
|
@ -2,7 +2,7 @@
|
|||||||
# Copyright © 2019 Intel Corporation
|
# Copyright © 2019 Intel Corporation
|
||||||
|
|
||||||
# Test the headers are compilable as standalone units
|
# Test the headers are compilable as standalone units
|
||||||
header_test := \
|
header-test-$(CONFIG_DRM_I915_WERROR) := \
|
||||||
i915_active_types.h \
|
i915_active_types.h \
|
||||||
i915_gem_context_types.h \
|
i915_gem_context_types.h \
|
||||||
i915_priolist_types.h \
|
i915_priolist_types.h \
|
||||||
@ -35,13 +35,3 @@ header_test := \
|
|||||||
intel_sprite.h \
|
intel_sprite.h \
|
||||||
intel_tv.h \
|
intel_tv.h \
|
||||||
intel_workarounds_types.h
|
intel_workarounds_types.h
|
||||||
|
|
||||||
quiet_cmd_header_test = HDRTEST $@
|
|
||||||
cmd_header_test = echo "\#include \"$(<F)\"" > $@
|
|
||||||
|
|
||||||
header_test_%.c: %.h
|
|
||||||
$(call cmd,header_test)
|
|
||||||
|
|
||||||
i915-$(CONFIG_DRM_I915_WERROR) += $(foreach h,$(header_test),$(patsubst %.h,header_test_%.o,$(h)))
|
|
||||||
|
|
||||||
clean-files += $(foreach h,$(header_test),$(patsubst %.h,header_test_%.c,$(h)))
|
|
||||||
|
1270
include/Kbuild
Normal file
1270
include/Kbuild
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,14 +1,14 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/a.out.h),)
|
ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/a.out.h),)
|
||||||
no-export-headers += a.out.h
|
no-export-headers += linux/a.out.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm.h),)
|
ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm.h),)
|
||||||
no-export-headers += kvm.h
|
no-export-headers += linux/kvm.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm_para.h),)
|
ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm_para.h),)
|
||||||
ifeq ($(wildcard $(objtree)/arch/$(SRCARCH)/include/generated/uapi/asm/kvm_para.h),)
|
ifeq ($(wildcard $(objtree)/arch/$(SRCARCH)/include/generated/uapi/asm/kvm_para.h),)
|
||||||
no-export-headers += kvm_para.h
|
no-export-headers += linux/kvm_para.h
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
33
init/Kconfig
33
init/Kconfig
@ -24,6 +24,9 @@ config CLANG_VERSION
|
|||||||
int
|
int
|
||||||
default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
|
default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
|
||||||
|
|
||||||
|
config CC_CAN_LINK
|
||||||
|
def_bool $(success,$(srctree)/scripts/cc-can-link.sh $(CC))
|
||||||
|
|
||||||
config CC_HAS_ASM_GOTO
|
config CC_HAS_ASM_GOTO
|
||||||
def_bool $(success,$(srctree)/scripts/gcc-goto.sh $(CC))
|
def_bool $(success,$(srctree)/scripts/gcc-goto.sh $(CC))
|
||||||
|
|
||||||
@ -96,6 +99,36 @@ config COMPILE_TEST
|
|||||||
here. If you are a user/distributor, say N here to exclude useless
|
here. If you are a user/distributor, say N here to exclude useless
|
||||||
drivers to be distributed.
|
drivers to be distributed.
|
||||||
|
|
||||||
|
config HEADER_TEST
|
||||||
|
bool "Compile test headers that should be standalone compilable"
|
||||||
|
help
|
||||||
|
Compile test headers listed in header-test-y target to ensure they are
|
||||||
|
self-contained, i.e. compilable as standalone units.
|
||||||
|
|
||||||
|
If you are a developer or tester and want to ensure the requested
|
||||||
|
headers are self-contained, say Y here. Otherwise, choose N.
|
||||||
|
|
||||||
|
config KERNEL_HEADER_TEST
|
||||||
|
bool "Compile test kernel headers"
|
||||||
|
depends on HEADER_TEST
|
||||||
|
help
|
||||||
|
Headers in include/ are used to build external moduls.
|
||||||
|
Compile test them to ensure they are self-contained, i.e.
|
||||||
|
compilable as standalone units.
|
||||||
|
|
||||||
|
If you are a developer or tester and want to ensure the headers
|
||||||
|
in include/ are self-contained, say Y here. Otherwise, choose N.
|
||||||
|
|
||||||
|
config UAPI_HEADER_TEST
|
||||||
|
bool "Compile test UAPI headers"
|
||||||
|
depends on HEADER_TEST && HEADERS_INSTALL && CC_CAN_LINK
|
||||||
|
help
|
||||||
|
Compile test headers exported to user-space to ensure they are
|
||||||
|
self-contained, i.e. compilable as standalone units.
|
||||||
|
|
||||||
|
If you are a developer or tester and want to ensure the exported
|
||||||
|
headers are self-contained, say Y here. Otherwise, choose N.
|
||||||
|
|
||||||
config LOCALVERSION
|
config LOCALVERSION
|
||||||
string "Local version - append to kernel release"
|
string "Local version - append to kernel release"
|
||||||
help
|
help
|
||||||
|
@ -4,24 +4,12 @@
|
|||||||
# This script generates an archive consisting of kernel headers
|
# This script generates an archive consisting of kernel headers
|
||||||
# for CONFIG_IKHEADERS.
|
# for CONFIG_IKHEADERS.
|
||||||
set -e
|
set -e
|
||||||
spath="$(dirname "$(readlink -f "$0")")"
|
sfile="$(readlink -f "$0")"
|
||||||
kroot="$spath/.."
|
|
||||||
outdir="$(pwd)"
|
outdir="$(pwd)"
|
||||||
tarfile=$1
|
tarfile=$1
|
||||||
cpio_dir=$outdir/$tarfile.tmp
|
cpio_dir=$outdir/$tarfile.tmp
|
||||||
|
|
||||||
# Script filename relative to the kernel source root
|
dir_list="
|
||||||
# We add it to the archive because it is small and any changes
|
|
||||||
# to this script will also cause a rebuild of the archive.
|
|
||||||
sfile="$(realpath --relative-to $kroot "$(readlink -f "$0")")"
|
|
||||||
|
|
||||||
src_file_list="
|
|
||||||
include/
|
|
||||||
arch/$SRCARCH/include/
|
|
||||||
$sfile
|
|
||||||
"
|
|
||||||
|
|
||||||
obj_file_list="
|
|
||||||
include/
|
include/
|
||||||
arch/$SRCARCH/include/
|
arch/$SRCARCH/include/
|
||||||
"
|
"
|
||||||
@ -33,33 +21,29 @@ arch/$SRCARCH/include/
|
|||||||
# Uncomment it for debugging.
|
# Uncomment it for debugging.
|
||||||
# if [ ! -f /tmp/iter ]; then iter=1; echo 1 > /tmp/iter;
|
# if [ ! -f /tmp/iter ]; then iter=1; echo 1 > /tmp/iter;
|
||||||
# else iter=$(($(cat /tmp/iter) + 1)); echo $iter > /tmp/iter; fi
|
# else iter=$(($(cat /tmp/iter) + 1)); echo $iter > /tmp/iter; fi
|
||||||
# find $src_file_list -type f | xargs ls -lR > /tmp/src-ls-$iter
|
# find $src_file_list -name "*.h" | xargs ls -l > /tmp/src-ls-$iter
|
||||||
# find $obj_file_list -type f | xargs ls -lR > /tmp/obj-ls-$iter
|
# find $obj_file_list -name "*.h" | xargs ls -l > /tmp/obj-ls-$iter
|
||||||
|
|
||||||
# include/generated/compile.h is ignored because it is touched even when none
|
# include/generated/compile.h is ignored because it is touched even when none
|
||||||
# of the source files changed. This causes pointless regeneration, so let us
|
# of the source files changed. This causes pointless regeneration, so let us
|
||||||
# ignore them for md5 calculation.
|
# ignore them for md5 calculation.
|
||||||
pushd $kroot > /dev/null
|
pushd $srctree > /dev/null
|
||||||
src_files_md5="$(find $src_file_list -type f |
|
src_files_md5="$(find $dir_list -name "*.h" |
|
||||||
grep -v "include/generated/compile.h" |
|
grep -v "include/generated/compile.h" |
|
||||||
grep -v "include/generated/autoconf.h" |
|
grep -v "include/generated/autoconf.h" |
|
||||||
grep -v "include/config/auto.conf" |
|
xargs ls -l | md5sum | cut -d ' ' -f1)"
|
||||||
grep -v "include/config/auto.conf.cmd" |
|
|
||||||
grep -v "include/config/tristate.conf" |
|
|
||||||
xargs ls -lR | md5sum | cut -d ' ' -f1)"
|
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
obj_files_md5="$(find $obj_file_list -type f |
|
obj_files_md5="$(find $dir_list -name "*.h" |
|
||||||
grep -v "include/generated/compile.h" |
|
grep -v "include/generated/compile.h" |
|
||||||
grep -v "include/generated/autoconf.h" |
|
grep -v "include/generated/autoconf.h" |
|
||||||
grep -v "include/config/auto.conf" |
|
xargs ls -l | md5sum | cut -d ' ' -f1)"
|
||||||
grep -v "include/config/auto.conf.cmd" |
|
# Any changes to this script will also cause a rebuild of the archive.
|
||||||
grep -v "include/config/tristate.conf" |
|
this_file_md5="$(ls -l $sfile | md5sum | cut -d ' ' -f1)"
|
||||||
xargs ls -lR | md5sum | cut -d ' ' -f1)"
|
|
||||||
|
|
||||||
if [ -f $tarfile ]; then tarfile_md5="$(md5sum $tarfile | cut -d ' ' -f1)"; fi
|
if [ -f $tarfile ]; then tarfile_md5="$(md5sum $tarfile | cut -d ' ' -f1)"; fi
|
||||||
if [ -f kernel/kheaders.md5 ] &&
|
if [ -f kernel/kheaders.md5 ] &&
|
||||||
[ "$(cat kernel/kheaders.md5|head -1)" == "$src_files_md5" ] &&
|
[ "$(cat kernel/kheaders.md5|head -1)" == "$src_files_md5" ] &&
|
||||||
[ "$(cat kernel/kheaders.md5|head -2|tail -1)" == "$obj_files_md5" ] &&
|
[ "$(cat kernel/kheaders.md5|head -2|tail -1)" == "$obj_files_md5" ] &&
|
||||||
|
[ "$(cat kernel/kheaders.md5|head -3|tail -1)" == "$this_file_md5" ] &&
|
||||||
[ "$(cat kernel/kheaders.md5|tail -1)" == "$tarfile_md5" ]; then
|
[ "$(cat kernel/kheaders.md5|tail -1)" == "$tarfile_md5" ]; then
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@ -71,16 +55,16 @@ fi
|
|||||||
rm -rf $cpio_dir
|
rm -rf $cpio_dir
|
||||||
mkdir $cpio_dir
|
mkdir $cpio_dir
|
||||||
|
|
||||||
pushd $kroot > /dev/null
|
pushd $srctree > /dev/null
|
||||||
for f in $src_file_list;
|
for f in $dir_list;
|
||||||
do find "$f" ! -name "*.cmd" ! -name ".*";
|
do find "$f" -name "*.h";
|
||||||
done | cpio --quiet -pd $cpio_dir
|
done | cpio --quiet -pd $cpio_dir
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
|
|
||||||
# The second CPIO can complain if files already exist which can
|
# The second CPIO can complain if files already exist which can
|
||||||
# happen with out of tree builds. Just silence CPIO for now.
|
# happen with out of tree builds. Just silence CPIO for now.
|
||||||
for f in $obj_file_list;
|
for f in $dir_list;
|
||||||
do find "$f" ! -name "*.cmd" ! -name ".*";
|
do find "$f" -name "*.h";
|
||||||
done | cpio --quiet -pd $cpio_dir >/dev/null 2>&1
|
done | cpio --quiet -pd $cpio_dir >/dev/null 2>&1
|
||||||
|
|
||||||
# Remove comments except SDPX lines
|
# Remove comments except SDPX lines
|
||||||
@ -91,6 +75,7 @@ tar -Jcf $tarfile -C $cpio_dir/ . > /dev/null
|
|||||||
|
|
||||||
echo "$src_files_md5" > kernel/kheaders.md5
|
echo "$src_files_md5" > kernel/kheaders.md5
|
||||||
echo "$obj_files_md5" >> kernel/kheaders.md5
|
echo "$obj_files_md5" >> kernel/kheaders.md5
|
||||||
|
echo "$this_file_md5" >> kernel/kheaders.md5
|
||||||
echo "$(md5sum $tarfile | cut -d ' ' -f1)" >> kernel/kheaders.md5
|
echo "$(md5sum $tarfile | cut -d ' ' -f1)" >> kernel/kheaders.md5
|
||||||
|
|
||||||
rm -rf $cpio_dir
|
rm -rf $cpio_dir
|
||||||
|
@ -305,19 +305,26 @@ config DEBUG_FS
|
|||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
config HEADERS_CHECK
|
config HEADERS_INSTALL
|
||||||
bool "Run 'make headers_check' when building vmlinux"
|
bool "Install uapi headers to usr/include"
|
||||||
depends on !UML
|
depends on !UML
|
||||||
help
|
help
|
||||||
This option will extract the user-visible kernel headers whenever
|
This option will install uapi headers (headers exported to user-space)
|
||||||
building the kernel, and will run basic sanity checks on them to
|
into the usr/include directory for use during the kernel build.
|
||||||
ensure that exported files do not attempt to include files which
|
This is unneeded for building the kernel itself, but needed for some
|
||||||
were not exported, etc.
|
user-space program samples. It is also needed by some features such
|
||||||
|
as uapi header sanity checks.
|
||||||
|
|
||||||
|
config HEADERS_CHECK
|
||||||
|
bool "Run sanity checks on uapi headers when building 'all'"
|
||||||
|
depends on HEADERS_INSTALL
|
||||||
|
help
|
||||||
|
This option will run basic sanity checks on uapi headers when
|
||||||
|
building the 'all' target, for example, ensure that they do not
|
||||||
|
attempt to include files which were not exported, etc.
|
||||||
|
|
||||||
If you're making modifications to header files which are
|
If you're making modifications to header files which are
|
||||||
relevant for userspace, say 'Y', and check the headers
|
relevant for userspace, say 'Y'.
|
||||||
exported to $(INSTALL_HDR_PATH) (usually 'usr/include' in
|
|
||||||
your build tree), to make sure they're suitable.
|
|
||||||
|
|
||||||
config OPTIMIZE_INLINING
|
config OPTIMIZE_INLINING
|
||||||
bool "Allow compiler to uninline functions marked 'inline'"
|
bool "Allow compiler to uninline functions marked 'inline'"
|
||||||
|
@ -12,9 +12,6 @@ raid6_pq-$(CONFIG_S390) += s390vx8.o recov_s390xc.o
|
|||||||
|
|
||||||
hostprogs-y += mktables
|
hostprogs-y += mktables
|
||||||
|
|
||||||
quiet_cmd_unroll = UNROLL $@
|
|
||||||
cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$(UNROLL) < $< > $@
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_ALTIVEC),y)
|
ifeq ($(CONFIG_ALTIVEC),y)
|
||||||
altivec_flags := -maltivec $(call cc-option,-mabi=altivec)
|
altivec_flags := -maltivec $(call cc-option,-mabi=altivec)
|
||||||
|
|
||||||
@ -26,7 +23,6 @@ CFLAGS_REMOVE_altivec1.o += -msoft-float
|
|||||||
CFLAGS_REMOVE_altivec2.o += -msoft-float
|
CFLAGS_REMOVE_altivec2.o += -msoft-float
|
||||||
CFLAGS_REMOVE_altivec4.o += -msoft-float
|
CFLAGS_REMOVE_altivec4.o += -msoft-float
|
||||||
CFLAGS_REMOVE_altivec8.o += -msoft-float
|
CFLAGS_REMOVE_altivec8.o += -msoft-float
|
||||||
CFLAGS_REMOVE_altivec8.o += -msoft-float
|
|
||||||
CFLAGS_REMOVE_vpermxor1.o += -msoft-float
|
CFLAGS_REMOVE_vpermxor1.o += -msoft-float
|
||||||
CFLAGS_REMOVE_vpermxor2.o += -msoft-float
|
CFLAGS_REMOVE_vpermxor2.o += -msoft-float
|
||||||
CFLAGS_REMOVE_vpermxor4.o += -msoft-float
|
CFLAGS_REMOVE_vpermxor4.o += -msoft-float
|
||||||
@ -51,111 +47,39 @@ CFLAGS_REMOVE_neon8.o += -mgeneral-regs-only
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
targets += int1.c
|
quiet_cmd_unroll = UNROLL $@
|
||||||
$(obj)/int1.c: UNROLL := 1
|
cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$* < $< > $@
|
||||||
$(obj)/int1.c: $(src)/int.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
targets += int2.c
|
targets += int1.c int2.c int4.c int8.c int16.c int32.c
|
||||||
$(obj)/int2.c: UNROLL := 2
|
$(obj)/int%.c: $(src)/int.uc $(src)/unroll.awk FORCE
|
||||||
$(obj)/int2.c: $(src)/int.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
targets += int4.c
|
|
||||||
$(obj)/int4.c: UNROLL := 4
|
|
||||||
$(obj)/int4.c: $(src)/int.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
targets += int8.c
|
|
||||||
$(obj)/int8.c: UNROLL := 8
|
|
||||||
$(obj)/int8.c: $(src)/int.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
targets += int16.c
|
|
||||||
$(obj)/int16.c: UNROLL := 16
|
|
||||||
$(obj)/int16.c: $(src)/int.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
targets += int32.c
|
|
||||||
$(obj)/int32.c: UNROLL := 32
|
|
||||||
$(obj)/int32.c: $(src)/int.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
$(call if_changed,unroll)
|
||||||
|
|
||||||
CFLAGS_altivec1.o += $(altivec_flags)
|
CFLAGS_altivec1.o += $(altivec_flags)
|
||||||
targets += altivec1.c
|
|
||||||
$(obj)/altivec1.c: UNROLL := 1
|
|
||||||
$(obj)/altivec1.c: $(src)/altivec.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
CFLAGS_altivec2.o += $(altivec_flags)
|
CFLAGS_altivec2.o += $(altivec_flags)
|
||||||
targets += altivec2.c
|
|
||||||
$(obj)/altivec2.c: UNROLL := 2
|
|
||||||
$(obj)/altivec2.c: $(src)/altivec.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
CFLAGS_altivec4.o += $(altivec_flags)
|
CFLAGS_altivec4.o += $(altivec_flags)
|
||||||
targets += altivec4.c
|
|
||||||
$(obj)/altivec4.c: UNROLL := 4
|
|
||||||
$(obj)/altivec4.c: $(src)/altivec.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
CFLAGS_altivec8.o += $(altivec_flags)
|
CFLAGS_altivec8.o += $(altivec_flags)
|
||||||
targets += altivec8.c
|
targets += altivec1.c altivec2.c altivec4.c altivec8.c
|
||||||
$(obj)/altivec8.c: UNROLL := 8
|
$(obj)/altivec%.c: $(src)/altivec.uc $(src)/unroll.awk FORCE
|
||||||
$(obj)/altivec8.c: $(src)/altivec.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
$(call if_changed,unroll)
|
||||||
|
|
||||||
CFLAGS_vpermxor1.o += $(altivec_flags)
|
CFLAGS_vpermxor1.o += $(altivec_flags)
|
||||||
targets += vpermxor1.c
|
|
||||||
$(obj)/vpermxor1.c: UNROLL := 1
|
|
||||||
$(obj)/vpermxor1.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
CFLAGS_vpermxor2.o += $(altivec_flags)
|
CFLAGS_vpermxor2.o += $(altivec_flags)
|
||||||
targets += vpermxor2.c
|
|
||||||
$(obj)/vpermxor2.c: UNROLL := 2
|
|
||||||
$(obj)/vpermxor2.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
CFLAGS_vpermxor4.o += $(altivec_flags)
|
CFLAGS_vpermxor4.o += $(altivec_flags)
|
||||||
targets += vpermxor4.c
|
|
||||||
$(obj)/vpermxor4.c: UNROLL := 4
|
|
||||||
$(obj)/vpermxor4.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
CFLAGS_vpermxor8.o += $(altivec_flags)
|
CFLAGS_vpermxor8.o += $(altivec_flags)
|
||||||
targets += vpermxor8.c
|
targets += vpermxor1.o vpermxor2.o vpermxor4.o vpermxor8.o
|
||||||
$(obj)/vpermxor8.c: UNROLL := 8
|
$(obj)/vpermxor%.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
|
||||||
$(obj)/vpermxor8.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
$(call if_changed,unroll)
|
||||||
|
|
||||||
CFLAGS_neon1.o += $(NEON_FLAGS)
|
CFLAGS_neon1.o += $(NEON_FLAGS)
|
||||||
targets += neon1.c
|
|
||||||
$(obj)/neon1.c: UNROLL := 1
|
|
||||||
$(obj)/neon1.c: $(src)/neon.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
CFLAGS_neon2.o += $(NEON_FLAGS)
|
CFLAGS_neon2.o += $(NEON_FLAGS)
|
||||||
targets += neon2.c
|
|
||||||
$(obj)/neon2.c: UNROLL := 2
|
|
||||||
$(obj)/neon2.c: $(src)/neon.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
CFLAGS_neon4.o += $(NEON_FLAGS)
|
CFLAGS_neon4.o += $(NEON_FLAGS)
|
||||||
targets += neon4.c
|
|
||||||
$(obj)/neon4.c: UNROLL := 4
|
|
||||||
$(obj)/neon4.c: $(src)/neon.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
|
||||||
|
|
||||||
CFLAGS_neon8.o += $(NEON_FLAGS)
|
CFLAGS_neon8.o += $(NEON_FLAGS)
|
||||||
targets += neon8.c
|
targets += neon1.c neon2.c neon4.c neon8.c
|
||||||
$(obj)/neon8.c: UNROLL := 8
|
$(obj)/neon%.c: $(src)/neon.uc $(src)/unroll.awk FORCE
|
||||||
$(obj)/neon8.c: $(src)/neon.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
$(call if_changed,unroll)
|
||||||
|
|
||||||
targets += s390vx8.c
|
targets += s390vx8.c
|
||||||
$(obj)/s390vx8.c: UNROLL := 8
|
$(obj)/s390vx%.c: $(src)/s390vx.uc $(src)/unroll.awk FORCE
|
||||||
$(obj)/s390vx8.c: $(src)/s390vx.uc $(src)/unroll.awk FORCE
|
|
||||||
$(call if_changed,unroll)
|
$(call if_changed,unroll)
|
||||||
|
|
||||||
quiet_cmd_mktable = TABLE $@
|
quiet_cmd_mktable = TABLE $@
|
||||||
|
@ -9,7 +9,7 @@ menuconfig BPFILTER
|
|||||||
if BPFILTER
|
if BPFILTER
|
||||||
config BPFILTER_UMH
|
config BPFILTER_UMH
|
||||||
tristate "bpfilter kernel module with user mode helper"
|
tristate "bpfilter kernel module with user mode helper"
|
||||||
depends on $(success,$(srctree)/scripts/cc-can-link.sh $(CC))
|
depends on CC_CAN_LINK
|
||||||
default m
|
default m
|
||||||
help
|
help
|
||||||
This builds bpfilter kernel module with embedded user mode helper
|
This builds bpfilter kernel module with embedded user mode helper
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
menuconfig SAMPLES
|
menuconfig SAMPLES
|
||||||
bool "Sample kernel code"
|
bool "Sample kernel code"
|
||||||
depends on !UML
|
|
||||||
help
|
help
|
||||||
You can build and test sample kernel code here.
|
You can build and test sample kernel code here.
|
||||||
|
|
||||||
@ -95,16 +94,24 @@ config SAMPLE_CONFIGFS
|
|||||||
|
|
||||||
config SAMPLE_CONNECTOR
|
config SAMPLE_CONNECTOR
|
||||||
tristate "Build connector sample -- loadable modules only"
|
tristate "Build connector sample -- loadable modules only"
|
||||||
depends on CONNECTOR && m
|
depends on CONNECTOR && HEADERS_INSTALL && m
|
||||||
help
|
help
|
||||||
When enabled, this builds both a sample kernel module for
|
When enabled, this builds both a sample kernel module for
|
||||||
the connector interface and a user space tool to communicate
|
the connector interface and a user space tool to communicate
|
||||||
with it.
|
with it.
|
||||||
See also Documentation/connector/connector.txt
|
See also Documentation/connector/connector.txt
|
||||||
|
|
||||||
|
config SAMPLE_HIDRAW
|
||||||
|
bool "hidraw sample"
|
||||||
|
depends on HEADERS_INSTALL
|
||||||
|
|
||||||
|
config SAMPLE_PIDFD
|
||||||
|
bool "pidfd sample"
|
||||||
|
depends on HEADERS_INSTALL
|
||||||
|
|
||||||
config SAMPLE_SECCOMP
|
config SAMPLE_SECCOMP
|
||||||
bool "Build seccomp sample code"
|
bool "Build seccomp sample code"
|
||||||
depends on SECCOMP_FILTER
|
depends on SECCOMP_FILTER && HEADERS_INSTALL
|
||||||
help
|
help
|
||||||
Build samples of seccomp filters using various methods of
|
Build samples of seccomp filters using various methods of
|
||||||
BPF filter construction.
|
BPF filter construction.
|
||||||
@ -156,6 +163,7 @@ config SAMPLE_ANDROID_BINDERFS
|
|||||||
|
|
||||||
config SAMPLE_VFS
|
config SAMPLE_VFS
|
||||||
bool "Build example programs that use new VFS system calls"
|
bool "Build example programs that use new VFS system calls"
|
||||||
|
depends on HEADERS_INSTALL
|
||||||
help
|
help
|
||||||
Build example userspace programs that use new VFS system calls such
|
Build example userspace programs that use new VFS system calls such
|
||||||
as mount API and statx(). Note that this is restricted to the x86
|
as mount API and statx(). Note that this is restricted to the x86
|
||||||
|
@ -4,14 +4,14 @@
|
|||||||
obj-$(CONFIG_SAMPLE_ANDROID_BINDERFS) += binderfs/
|
obj-$(CONFIG_SAMPLE_ANDROID_BINDERFS) += binderfs/
|
||||||
obj-$(CONFIG_SAMPLE_CONFIGFS) += configfs/
|
obj-$(CONFIG_SAMPLE_CONFIGFS) += configfs/
|
||||||
obj-$(CONFIG_SAMPLE_CONNECTOR) += connector/
|
obj-$(CONFIG_SAMPLE_CONNECTOR) += connector/
|
||||||
subdir-y += hidraw
|
subdir-$(CONFIG_SAMPLE_HIDRAW) += hidraw
|
||||||
obj-$(CONFIG_SAMPLE_HW_BREAKPOINT) += hw_breakpoint/
|
obj-$(CONFIG_SAMPLE_HW_BREAKPOINT) += hw_breakpoint/
|
||||||
obj-$(CONFIG_SAMPLE_KDB) += kdb/
|
obj-$(CONFIG_SAMPLE_KDB) += kdb/
|
||||||
obj-$(CONFIG_SAMPLE_KFIFO) += kfifo/
|
obj-$(CONFIG_SAMPLE_KFIFO) += kfifo/
|
||||||
obj-$(CONFIG_SAMPLE_KOBJECT) += kobject/
|
obj-$(CONFIG_SAMPLE_KOBJECT) += kobject/
|
||||||
obj-$(CONFIG_SAMPLE_KPROBES) += kprobes/
|
obj-$(CONFIG_SAMPLE_KPROBES) += kprobes/
|
||||||
obj-$(CONFIG_SAMPLE_LIVEPATCH) += livepatch/
|
obj-$(CONFIG_SAMPLE_LIVEPATCH) += livepatch/
|
||||||
subdir-y += pidfd
|
subdir-$(CONFIG_SAMPLE_PIDFD) += pidfd
|
||||||
obj-$(CONFIG_SAMPLE_QMI_CLIENT) += qmi/
|
obj-$(CONFIG_SAMPLE_QMI_CLIENT) += qmi/
|
||||||
obj-$(CONFIG_SAMPLE_RPMSG_CLIENT) += rpmsg/
|
obj-$(CONFIG_SAMPLE_RPMSG_CLIENT) += rpmsg/
|
||||||
subdir-$(CONFIG_SAMPLE_SECCOMP) += seccomp
|
subdir-$(CONFIG_SAMPLE_SECCOMP) += seccomp
|
||||||
|
@ -79,8 +79,8 @@ endef
|
|||||||
# would try to directly execute the shell builtin 'command'. This workaround
|
# would try to directly execute the shell builtin 'command'. This workaround
|
||||||
# should be kept for a long time since this issue was fixed only after the
|
# should be kept for a long time since this issue was fixed only after the
|
||||||
# GNU Make 4.2.1 release.
|
# GNU Make 4.2.1 release.
|
||||||
cc-cross-prefix = $(firstword $(foreach c, $(filter-out -%, $(1)), \
|
cc-cross-prefix = $(firstword $(foreach c, $(1), \
|
||||||
$(if $(shell command -v $(c)gcc 2>/dev/null), $(c))))
|
$(if $(shell command -v -- $(c)gcc 2>/dev/null), $(c))))
|
||||||
|
|
||||||
# output directory for tests below
|
# output directory for tests below
|
||||||
TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/)
|
TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/)
|
||||||
@ -187,12 +187,6 @@ dtbinst := -f $(srctree)/scripts/Makefile.dtbinst obj
|
|||||||
# $(Q)$(MAKE) $(clean)=dir
|
# $(Q)$(MAKE) $(clean)=dir
|
||||||
clean := -f $(srctree)/scripts/Makefile.clean obj
|
clean := -f $(srctree)/scripts/Makefile.clean obj
|
||||||
|
|
||||||
###
|
|
||||||
# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.headersinst obj=
|
|
||||||
# Usage:
|
|
||||||
# $(Q)$(MAKE) $(hdr-inst)=dir
|
|
||||||
hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj
|
|
||||||
|
|
||||||
# echo command.
|
# echo command.
|
||||||
# Short version is used, if $(quiet) equals `quiet_', otherwise full one.
|
# Short version is used, if $(quiet) equals `quiet_', otherwise full one.
|
||||||
echo-cmd = $(if $($(quiet)cmd_$(1)),\
|
echo-cmd = $(if $($(quiet)cmd_$(1)),\
|
||||||
@ -213,12 +207,12 @@ objectify = $(foreach o,$(1),$(if $(filter /%,$(o)),$(o),$(obj)/$(o)))
|
|||||||
# See Documentation/kbuild/makefiles.rst for more info
|
# See Documentation/kbuild/makefiles.rst for more info
|
||||||
|
|
||||||
ifneq ($(KBUILD_NOCMDDEP),1)
|
ifneq ($(KBUILD_NOCMDDEP),1)
|
||||||
# Check if both arguments are the same including their order. Result is empty
|
# Check if both commands are the same including their order. Result is empty
|
||||||
# string if equal. User may override this check using make KBUILD_NOCMDDEP=1
|
# string if equal. User may override this check using make KBUILD_NOCMDDEP=1
|
||||||
arg-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(cmd_$@))), \
|
cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(cmd_$@))), \
|
||||||
$(subst $(space),$(space_escape),$(strip $(cmd_$1))))
|
$(subst $(space),$(space_escape),$(strip $(cmd_$1))))
|
||||||
else
|
else
|
||||||
arg-check = $(if $(strip $(cmd_$@)),,1)
|
cmd-check = $(if $(strip $(cmd_$@)),,1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Replace >$< with >$$< to preserve $ when reloading the .cmd file
|
# Replace >$< with >$$< to preserve $ when reloading the .cmd file
|
||||||
@ -231,15 +225,15 @@ make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1))))
|
|||||||
|
|
||||||
# Find any prerequisites that is newer than target or that does not exist.
|
# Find any prerequisites that is newer than target or that does not exist.
|
||||||
# PHONY targets skipped in both cases.
|
# PHONY targets skipped in both cases.
|
||||||
any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^)
|
any-prereq = $(filter-out $(PHONY),$?)$(filter-out $(PHONY) $(wildcard $^),$^)
|
||||||
|
|
||||||
# Execute command if command has changed or prerequisite(s) are updated.
|
# Execute command if command has changed or prerequisite(s) are updated.
|
||||||
if_changed = $(if $(strip $(any-prereq) $(arg-check)), \
|
if_changed = $(if $(any-prereq)$(cmd-check), \
|
||||||
$(cmd); \
|
$(cmd); \
|
||||||
printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
|
printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
|
||||||
|
|
||||||
# Execute the command and also postprocess generated .d dependencies file.
|
# Execute the command and also postprocess generated .d dependencies file.
|
||||||
if_changed_dep = $(if $(strip $(any-prereq) $(arg-check)),$(cmd_and_fixdep),@:)
|
if_changed_dep = $(if $(any-prereq)$(cmd-check),$(cmd_and_fixdep),@:)
|
||||||
|
|
||||||
cmd_and_fixdep = \
|
cmd_and_fixdep = \
|
||||||
$(cmd); \
|
$(cmd); \
|
||||||
@ -249,7 +243,7 @@ cmd_and_fixdep = \
|
|||||||
# Usage: $(call if_changed_rule,foo)
|
# Usage: $(call if_changed_rule,foo)
|
||||||
# Will check if $(cmd_foo) or any of the prerequisites changed,
|
# Will check if $(cmd_foo) or any of the prerequisites changed,
|
||||||
# and if so will execute $(rule_foo).
|
# and if so will execute $(rule_foo).
|
||||||
if_changed_rule = $(if $(strip $(any-prereq) $(arg-check)),$(rule_$(1)),@:)
|
if_changed_rule = $(if $(any-prereq)$(cmd-check),$(rule_$(1)),@:)
|
||||||
|
|
||||||
###
|
###
|
||||||
# why - tell why a target got built
|
# why - tell why a target got built
|
||||||
@ -274,8 +268,8 @@ ifeq ($(KBUILD_VERBOSE),2)
|
|||||||
why = \
|
why = \
|
||||||
$(if $(filter $@, $(PHONY)),- due to target is PHONY, \
|
$(if $(filter $@, $(PHONY)),- due to target is PHONY, \
|
||||||
$(if $(wildcard $@), \
|
$(if $(wildcard $@), \
|
||||||
$(if $(strip $(any-prereq)),- due to: $(any-prereq), \
|
$(if $(any-prereq),- due to: $(any-prereq), \
|
||||||
$(if $(arg-check), \
|
$(if $(cmd-check), \
|
||||||
$(if $(cmd_$@),- due to command line change, \
|
$(if $(cmd_$@),- due to command line change, \
|
||||||
$(if $(filter $@, $(targets)), \
|
$(if $(filter $@, $(targets)), \
|
||||||
- due to missing .cmd file, \
|
- due to missing .cmd file, \
|
||||||
|
@ -31,11 +31,6 @@ always := $(hostprogs-y) $(hostprogs-m)
|
|||||||
# The following hostprogs-y programs are only build on demand
|
# The following hostprogs-y programs are only build on demand
|
||||||
hostprogs-y += unifdef
|
hostprogs-y += unifdef
|
||||||
|
|
||||||
# These targets are used internally to avoid "is up to date" messages
|
|
||||||
PHONY += build_unifdef
|
|
||||||
build_unifdef: $(obj)/unifdef
|
|
||||||
@:
|
|
||||||
|
|
||||||
subdir-$(CONFIG_GCC_PLUGINS) += gcc-plugins
|
subdir-$(CONFIG_GCC_PLUGINS) += gcc-plugins
|
||||||
subdir-$(CONFIG_MODVERSIONS) += genksyms
|
subdir-$(CONFIG_MODVERSIONS) += genksyms
|
||||||
subdir-$(CONFIG_SECURITY_SELINUX) += selinux
|
subdir-$(CONFIG_SECURITY_SELINUX) += selinux
|
||||||
|
@ -294,6 +294,15 @@ quiet_cmd_cc_lst_c = MKLST $@
|
|||||||
$(obj)/%.lst: $(src)/%.c FORCE
|
$(obj)/%.lst: $(src)/%.c FORCE
|
||||||
$(call if_changed_dep,cc_lst_c)
|
$(call if_changed_dep,cc_lst_c)
|
||||||
|
|
||||||
|
# header test (header-test-y target)
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
quiet_cmd_cc_s_h = CC $@
|
||||||
|
cmd_cc_s_h = $(CC) $(c_flags) -S -o $@ -x c /dev/null -include $<
|
||||||
|
|
||||||
|
$(obj)/%.h.s: $(src)/%.h FORCE
|
||||||
|
$(call if_changed_dep,cc_s_h)
|
||||||
|
|
||||||
# Compile assembler sources (.S)
|
# Compile assembler sources (.S)
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -504,7 +513,7 @@ existing-targets := $(wildcard $(sort $(targets)))
|
|||||||
|
|
||||||
-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
|
-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
|
||||||
|
|
||||||
ifneq ($(srctree),.)
|
ifdef building_out_of_srctree
|
||||||
# Create directories for object files if they do not exist
|
# Create directories for object files if they do not exist
|
||||||
obj-dirs := $(sort $(obj) $(patsubst %/,%, $(dir $(targets))))
|
obj-dirs := $(sort $(obj) $(patsubst %/,%, $(dir $(targets))))
|
||||||
# If targets exist, their directories apparently exist. Skip mkdir.
|
# If targets exist, their directories apparently exist. Skip mkdir.
|
||||||
|
@ -34,7 +34,6 @@ warning-1 += $(call cc-option, -Wstringop-truncation)
|
|||||||
warning-1 += -Wno-missing-field-initializers
|
warning-1 += -Wno-missing-field-initializers
|
||||||
warning-1 += -Wno-sign-compare
|
warning-1 += -Wno-sign-compare
|
||||||
|
|
||||||
warning-2 := -Waggregate-return
|
|
||||||
warning-2 += -Wcast-align
|
warning-2 += -Wcast-align
|
||||||
warning-2 += -Wdisabled-optimization
|
warning-2 += -Wdisabled-optimization
|
||||||
warning-2 += -Wnested-externs
|
warning-2 += -Wnested-externs
|
||||||
@ -68,10 +67,8 @@ else
|
|||||||
|
|
||||||
ifdef CONFIG_CC_IS_CLANG
|
ifdef CONFIG_CC_IS_CLANG
|
||||||
KBUILD_CFLAGS += -Wno-initializer-overrides
|
KBUILD_CFLAGS += -Wno-initializer-overrides
|
||||||
KBUILD_CFLAGS += -Wno-unused-value
|
|
||||||
KBUILD_CFLAGS += -Wno-format
|
KBUILD_CFLAGS += -Wno-format
|
||||||
KBUILD_CFLAGS += -Wno-sign-compare
|
KBUILD_CFLAGS += -Wno-sign-compare
|
||||||
KBUILD_CFLAGS += -Wno-format-zero-length
|
KBUILD_CFLAGS += -Wno-format-zero-length
|
||||||
KBUILD_CFLAGS += -Wno-uninitialized
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@ -14,109 +14,89 @@ __headers:
|
|||||||
|
|
||||||
include scripts/Kbuild.include
|
include scripts/Kbuild.include
|
||||||
|
|
||||||
srcdir := $(srctree)/$(obj)
|
src := $(srctree)/$(obj)
|
||||||
|
gen := $(objtree)/$(subst include/,include/generated/,$(obj))
|
||||||
|
dst := usr/include
|
||||||
|
|
||||||
# When make is run under a fakechroot environment, the function
|
-include $(src)/Kbuild
|
||||||
# $(wildcard $(srcdir)/*/.) doesn't only return directories, but also regular
|
|
||||||
# files. So, we are using a combination of sort/dir/wildcard which works
|
|
||||||
# with fakechroot.
|
|
||||||
subdirs := $(patsubst $(srcdir)/%/,%,\
|
|
||||||
$(filter-out $(srcdir)/,\
|
|
||||||
$(sort $(dir $(wildcard $(srcdir)/*/)))))
|
|
||||||
|
|
||||||
# Recursion
|
# $(filter %/, ...) is a workaround for GNU Make <= 4.2.1, where
|
||||||
__headers: $(subdirs)
|
# $(wildcard $(src)/*/) contains not only directories but also regular files.
|
||||||
|
src-subdirs := $(patsubst $(src)/%/,%,$(filter %/, $(wildcard $(src)/*/)))
|
||||||
|
gen-subdirs := $(patsubst $(gen)/%/,%,$(filter %/, $(wildcard $(gen)/*/)))
|
||||||
|
all-subdirs := $(sort $(src-subdirs) $(gen-subdirs))
|
||||||
|
|
||||||
PHONY += $(subdirs)
|
src-headers := $(if $(src-subdirs), $(shell cd $(src) && find $(src-subdirs) -name '*.h'))
|
||||||
$(subdirs):
|
src-headers := $(filter-out $(no-export-headers), $(src-headers))
|
||||||
$(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(dst)/$@
|
gen-headers := $(if $(gen-subdirs), $(shell cd $(gen) && find $(gen-subdirs) -name '*.h'))
|
||||||
|
gen-headers := $(filter-out $(no-export-headers), $(gen-headers))
|
||||||
|
|
||||||
# Skip header install/check for include/uapi and arch/$(SRCARCH)/include/uapi.
|
# If the same header is exported from source and generated directories,
|
||||||
# We have only sub-directories there.
|
# the former takes precedence, but this should be warned.
|
||||||
skip-inst := $(if $(filter %/uapi,$(obj)),1)
|
duplicated := $(filter $(gen-headers), $(src-headers))
|
||||||
|
$(if $(duplicated), $(warning duplicated header export: $(duplicated)))
|
||||||
|
|
||||||
ifeq ($(skip-inst),)
|
gen-headers := $(filter-out $(duplicated), $(gen-headers))
|
||||||
|
|
||||||
# Kbuild file is optional
|
# Add dst path prefix
|
||||||
kbuild-file := $(srctree)/$(obj)/Kbuild
|
all-subdirs := $(addprefix $(dst)/, $(all-subdirs))
|
||||||
-include $(kbuild-file)
|
src-headers := $(addprefix $(dst)/, $(src-headers))
|
||||||
|
gen-headers := $(addprefix $(dst)/, $(gen-headers))
|
||||||
installdir := $(INSTALL_HDR_PATH)/$(dst)
|
all-headers := $(src-headers) $(gen-headers)
|
||||||
gendir := $(objtree)/$(subst include/,include/generated/,$(obj))
|
|
||||||
header-files := $(notdir $(wildcard $(srcdir)/*.h))
|
|
||||||
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
|
|
||||||
check-file := $(installdir)/.check
|
|
||||||
|
|
||||||
# all headers files for this dir
|
|
||||||
all-files := $(header-files) $(genhdr-files)
|
|
||||||
output-files := $(addprefix $(installdir)/, $(all-files))
|
|
||||||
|
|
||||||
# Work out what needs to be removed
|
# Work out what needs to be removed
|
||||||
oldheaders := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h))
|
old-subdirs := $(wildcard $(all-subdirs))
|
||||||
unwanted := $(filter-out $(all-files),$(oldheaders))
|
old-headers := $(if $(old-subdirs),$(shell find $(old-subdirs) -name '*.h'))
|
||||||
|
unwanted := $(filter-out $(all-headers), $(old-headers))
|
||||||
|
|
||||||
# Prefix unwanted with full paths to $(INSTALL_HDR_PATH)
|
# Create directories
|
||||||
unwanted-file := $(addprefix $(installdir)/, $(unwanted))
|
existing-dirs := $(sort $(dir $(old-headers)))
|
||||||
|
wanted-dirs := $(sort $(dir $(all-headers)))
|
||||||
|
new-dirs := $(filter-out $(existing-dirs), $(wanted-dirs))
|
||||||
|
$(if $(new-dirs), $(shell mkdir -p $(new-dirs)))
|
||||||
|
|
||||||
printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@))
|
# Rules
|
||||||
|
|
||||||
quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
|
|
||||||
file$(if $(word 2, $(all-files)),s))
|
|
||||||
cmd_install = \
|
|
||||||
$(CONFIG_SHELL) $< $(installdir) $(srcdir) $(header-files); \
|
|
||||||
$(CONFIG_SHELL) $< $(installdir) $(gendir) $(genhdr-files); \
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
quiet_cmd_remove = REMOVE $(unwanted)
|
|
||||||
cmd_remove = rm -f $(unwanted-file)
|
|
||||||
|
|
||||||
quiet_cmd_check = CHECK $(printdir) ($(words $(all-files)) files)
|
|
||||||
# Headers list can be pretty long, xargs helps to avoid
|
|
||||||
# the "Argument list too long" error.
|
|
||||||
cmd_check = for f in $(all-files); do \
|
|
||||||
echo "$(installdir)/$${f}"; done \
|
|
||||||
| xargs \
|
|
||||||
$(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \
|
|
||||||
touch $@
|
|
||||||
|
|
||||||
ifndef HDRCHECK
|
ifndef HDRCHECK
|
||||||
# Rules for installing headers
|
|
||||||
__headers: $(install-file)
|
|
||||||
@:
|
|
||||||
|
|
||||||
targets += $(install-file)
|
quiet_cmd_install = HDRINST $@
|
||||||
$(install-file): scripts/headers_install.sh \
|
cmd_install = $(CONFIG_SHELL) $(srctree)/scripts/headers_install.sh $< $@
|
||||||
$(addprefix $(srcdir)/,$(header-files)) \
|
|
||||||
$(addprefix $(gendir)/,$(genhdr-files)) FORCE
|
$(src-headers): $(dst)/%.h: $(src)/%.h $(srctree)/scripts/headers_install.sh FORCE
|
||||||
$(if $(unwanted),$(call cmd,remove),)
|
|
||||||
$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
|
|
||||||
$(call if_changed,install)
|
$(call if_changed,install)
|
||||||
|
|
||||||
else
|
$(gen-headers): $(dst)/%.h: $(gen)/%.h $(srctree)/scripts/headers_install.sh FORCE
|
||||||
__headers: $(check-file)
|
$(call if_changed,install)
|
||||||
|
|
||||||
|
quiet_cmd_remove = REMOVE $(unwanted)
|
||||||
|
cmd_remove = rm -f $(unwanted)
|
||||||
|
|
||||||
|
__headers: $(all-headers)
|
||||||
|
ifneq ($(unwanted),)
|
||||||
|
$(call cmd,remove)
|
||||||
|
endif
|
||||||
@:
|
@:
|
||||||
|
|
||||||
targets += $(check-file)
|
existing-headers := $(filter $(old-headers), $(all-headers))
|
||||||
$(check-file): scripts/headers_check.pl $(output-files) FORCE
|
|
||||||
$(call if_changed,check)
|
-include $(foreach f,$(existing-headers),$(dir $(f)).$(notdir $(f)).cmd)
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
quiet_cmd_check = HDRCHK $<
|
||||||
|
cmd_check = $(PERL) $(srctree)/scripts/headers_check.pl $(dst) $(SRCARCH) $<; touch $@
|
||||||
|
|
||||||
|
check-files := $(addsuffix .chk, $(all-headers))
|
||||||
|
|
||||||
|
$(check-files): $(dst)/%.chk : $(dst)/% $(srctree)/scripts/headers_check.pl
|
||||||
|
$(call cmd,check)
|
||||||
|
|
||||||
|
__headers: $(check-files)
|
||||||
|
@:
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
cmd_files := $(wildcard \
|
|
||||||
$(foreach f,$(sort $(targets)),$(dir $(f)).$(notdir $(f)).cmd))
|
|
||||||
|
|
||||||
ifneq ($(cmd_files),)
|
|
||||||
include $(cmd_files)
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif # skip-inst
|
|
||||||
|
|
||||||
PHONY += FORCE
|
PHONY += FORCE
|
||||||
FORCE: ;
|
FORCE:
|
||||||
|
|
||||||
.PHONY: $(PHONY)
|
.PHONY: $(PHONY)
|
||||||
|
@ -69,7 +69,7 @@ _hostcxx_flags = $(KBUILD_HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) \
|
|||||||
|
|
||||||
# $(objtree)/$(obj) for including generated headers from checkin source files
|
# $(objtree)/$(obj) for including generated headers from checkin source files
|
||||||
ifeq ($(KBUILD_EXTMOD),)
|
ifeq ($(KBUILD_EXTMOD),)
|
||||||
ifneq ($(srctree),.)
|
ifdef building_out_of_srctree
|
||||||
_hostc_flags += -I $(objtree)/$(obj)
|
_hostc_flags += -I $(objtree)/$(obj)
|
||||||
_hostcxx_flags += -I $(objtree)/$(obj)
|
_hostcxx_flags += -I $(objtree)/$(obj)
|
||||||
endif
|
endif
|
||||||
|
@ -66,6 +66,20 @@ extra-y += $(patsubst %.dtb,%.dt.yaml, $(dtb-y))
|
|||||||
extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-))
|
extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Test self-contained headers
|
||||||
|
|
||||||
|
# Wildcard searches in $(srctree)/$(src)/, but not in $(objtree)/$(obj)/.
|
||||||
|
# Stale generated headers are often left over, so pattern matching should
|
||||||
|
# be avoided. Please notice $(srctree)/$(src)/ and $(objtree)/$(obj) point
|
||||||
|
# to the same location for in-tree building. So, header-test-pattern-y should
|
||||||
|
# be used with care.
|
||||||
|
header-test-y += $(filter-out $(header-test-), \
|
||||||
|
$(patsubst $(srctree)/$(src)/%, %, \
|
||||||
|
$(wildcard $(addprefix $(srctree)/$(src)/, \
|
||||||
|
$(header-test-pattern-y)))))
|
||||||
|
|
||||||
|
extra-$(CONFIG_HEADER_TEST) += $(addsuffix .s, $(header-test-y))
|
||||||
|
|
||||||
# Add subdir path
|
# Add subdir path
|
||||||
|
|
||||||
extra-y := $(addprefix $(obj)/,$(extra-y))
|
extra-y := $(addprefix $(obj)/,$(extra-y))
|
||||||
@ -140,7 +154,7 @@ endif
|
|||||||
# $(srctree)/$(src) for including checkin headers from generated source files
|
# $(srctree)/$(src) for including checkin headers from generated source files
|
||||||
# $(objtree)/$(obj) for including generated headers from checkin source files
|
# $(objtree)/$(obj) for including generated headers from checkin source files
|
||||||
ifeq ($(KBUILD_EXTMOD),)
|
ifeq ($(KBUILD_EXTMOD),)
|
||||||
ifneq ($(srctree),.)
|
ifdef building_out_of_srctree
|
||||||
_c_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj)
|
_c_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj)
|
||||||
_a_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj)
|
_a_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj)
|
||||||
_cpp_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj)
|
_cpp_flags += -I $(srctree)/$(src) -I $(objtree)/$(obj)
|
||||||
@ -331,19 +345,19 @@ printf "%08x\n" $$dec_size | \
|
|||||||
)
|
)
|
||||||
|
|
||||||
quiet_cmd_bzip2 = BZIP2 $@
|
quiet_cmd_bzip2 = BZIP2 $@
|
||||||
cmd_bzip2 = { cat $(real-prereqs) | bzip2 -9 && $(size_append); } > $@
|
cmd_bzip2 = { cat $(real-prereqs) | bzip2 -9; $(size_append); } > $@
|
||||||
|
|
||||||
# Lzma
|
# Lzma
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
quiet_cmd_lzma = LZMA $@
|
quiet_cmd_lzma = LZMA $@
|
||||||
cmd_lzma = { cat $(real-prereqs) | lzma -9 && $(size_append); } > $@
|
cmd_lzma = { cat $(real-prereqs) | lzma -9; $(size_append); } > $@
|
||||||
|
|
||||||
quiet_cmd_lzo = LZO $@
|
quiet_cmd_lzo = LZO $@
|
||||||
cmd_lzo = { cat $(real-prereqs) | lzop -9 && $(size_append); } > $@
|
cmd_lzo = { cat $(real-prereqs) | lzop -9; $(size_append); } > $@
|
||||||
|
|
||||||
quiet_cmd_lz4 = LZ4 $@
|
quiet_cmd_lz4 = LZ4 $@
|
||||||
cmd_lz4 = { cat $(real-prereqs) | lz4c -l -c1 stdin stdout && \
|
cmd_lz4 = { cat $(real-prereqs) | lz4c -l -c1 stdin stdout; \
|
||||||
$(size_append); } > $@
|
$(size_append); } > $@
|
||||||
|
|
||||||
# U-Boot mkimage
|
# U-Boot mkimage
|
||||||
@ -386,7 +400,7 @@ quiet_cmd_uimage = UIMAGE $@
|
|||||||
# big dictionary would increase the memory usage too much in the multi-call
|
# big dictionary would increase the memory usage too much in the multi-call
|
||||||
# decompression mode. A BCJ filter isn't used either.
|
# decompression mode. A BCJ filter isn't used either.
|
||||||
quiet_cmd_xzkern = XZKERN $@
|
quiet_cmd_xzkern = XZKERN $@
|
||||||
cmd_xzkern = { cat $(real-prereqs) | sh $(srctree)/scripts/xz_wrap.sh && \
|
cmd_xzkern = { cat $(real-prereqs) | sh $(srctree)/scripts/xz_wrap.sh; \
|
||||||
$(size_append); } > $@
|
$(size_append); } > $@
|
||||||
|
|
||||||
quiet_cmd_xzmisc = XZMISC $@
|
quiet_cmd_xzmisc = XZMISC $@
|
||||||
|
@ -15,7 +15,7 @@ include include/config/tristate.conf
|
|||||||
|
|
||||||
include scripts/Kbuild.include
|
include scripts/Kbuild.include
|
||||||
|
|
||||||
ifneq ($(srctree),.)
|
ifdef building_out_of_srctree
|
||||||
# Create output directory if not already present
|
# Create output directory if not already present
|
||||||
_dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
|
_dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
|
||||||
endif
|
endif
|
||||||
|
@ -99,6 +99,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdarg.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -109,6 +110,36 @@ static void usage(void)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In the intended usage of this program, the stdout is redirected to .*.cmd
|
||||||
|
* files. The return value of printf() and putchar() must be checked to catch
|
||||||
|
* any error, e.g. "No space left on device".
|
||||||
|
*/
|
||||||
|
static void xprintf(const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
va_start(ap, format);
|
||||||
|
ret = vprintf(format, ap);
|
||||||
|
if (ret < 0) {
|
||||||
|
perror("fixdep");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void xputchar(int c)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = putchar(c);
|
||||||
|
if (ret == EOF) {
|
||||||
|
perror("fixdep");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print out a dependency path from a symbol name
|
* Print out a dependency path from a symbol name
|
||||||
*/
|
*/
|
||||||
@ -116,7 +147,7 @@ static void print_dep(const char *m, int slen, const char *dir)
|
|||||||
{
|
{
|
||||||
int c, prev_c = '/', i;
|
int c, prev_c = '/', i;
|
||||||
|
|
||||||
printf(" $(wildcard %s/", dir);
|
xprintf(" $(wildcard %s/", dir);
|
||||||
for (i = 0; i < slen; i++) {
|
for (i = 0; i < slen; i++) {
|
||||||
c = m[i];
|
c = m[i];
|
||||||
if (c == '_')
|
if (c == '_')
|
||||||
@ -124,10 +155,10 @@ static void print_dep(const char *m, int slen, const char *dir)
|
|||||||
else
|
else
|
||||||
c = tolower(c);
|
c = tolower(c);
|
||||||
if (c != '/' || prev_c != '/')
|
if (c != '/' || prev_c != '/')
|
||||||
putchar(c);
|
xputchar(c);
|
||||||
prev_c = c;
|
prev_c = c;
|
||||||
}
|
}
|
||||||
printf(".h) \\\n");
|
xprintf(".h) \\\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
struct item {
|
struct item {
|
||||||
@ -324,13 +355,13 @@ static void parse_dep_file(char *m, const char *target)
|
|||||||
*/
|
*/
|
||||||
if (!saw_any_target) {
|
if (!saw_any_target) {
|
||||||
saw_any_target = 1;
|
saw_any_target = 1;
|
||||||
printf("source_%s := %s\n\n",
|
xprintf("source_%s := %s\n\n",
|
||||||
target, m);
|
target, m);
|
||||||
printf("deps_%s := \\\n", target);
|
xprintf("deps_%s := \\\n", target);
|
||||||
}
|
}
|
||||||
is_first_dep = 0;
|
is_first_dep = 0;
|
||||||
} else {
|
} else {
|
||||||
printf(" %s \\\n", m);
|
xprintf(" %s \\\n", m);
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = read_file(m);
|
buf = read_file(m);
|
||||||
@ -353,8 +384,8 @@ static void parse_dep_file(char *m, const char *target)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("\n%s: $(deps_%s)\n\n", target, target);
|
xprintf("\n%s: $(deps_%s)\n\n", target, target);
|
||||||
printf("$(deps_%s):\n", target);
|
xprintf("$(deps_%s):\n", target);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
@ -369,7 +400,7 @@ int main(int argc, char *argv[])
|
|||||||
target = argv[2];
|
target = argv[2];
|
||||||
cmdline = argv[3];
|
cmdline = argv[3];
|
||||||
|
|
||||||
printf("cmd_%s := %s\n\n", target, cmdline);
|
xprintf("cmd_%s := %s\n\n", target, cmdline);
|
||||||
|
|
||||||
buf = read_file(depfile);
|
buf = read_file(depfile);
|
||||||
parse_dep_file(buf, target);
|
parse_dep_file(buf, target);
|
||||||
|
@ -77,7 +77,7 @@ p1 << r1.p1;
|
|||||||
p2 << r1.p2;
|
p2 << r1.p2;
|
||||||
@@
|
@@
|
||||||
|
|
||||||
cocci.print_main("WARNING opportunity for kstrdep",p1)
|
cocci.print_main("WARNING opportunity for kstrdup",p1)
|
||||||
cocci.print_secs("strcpy",p2)
|
cocci.print_secs("strcpy",p2)
|
||||||
|
|
||||||
@script:python depends on org@
|
@script:python depends on org@
|
||||||
@ -85,7 +85,7 @@ p1 << r2.p1;
|
|||||||
p2 << r2.p2;
|
p2 << r2.p2;
|
||||||
@@
|
@@
|
||||||
|
|
||||||
cocci.print_main("WARNING opportunity for kstrdep",p1)
|
cocci.print_main("WARNING opportunity for kstrdup",p1)
|
||||||
cocci.print_secs("memcpy",p2)
|
cocci.print_secs("memcpy",p2)
|
||||||
|
|
||||||
@script:python depends on report@
|
@script:python depends on report@
|
||||||
@ -93,7 +93,7 @@ p1 << r1.p1;
|
|||||||
p2 << r1.p2;
|
p2 << r1.p2;
|
||||||
@@
|
@@
|
||||||
|
|
||||||
msg = "WARNING opportunity for kstrdep (strcpy on line %s)" % (p2[0].line)
|
msg = "WARNING opportunity for kstrdup (strcpy on line %s)" % (p2[0].line)
|
||||||
coccilib.report.print_report(p1[0], msg)
|
coccilib.report.print_report(p1[0], msg)
|
||||||
|
|
||||||
@script:python depends on report@
|
@script:python depends on report@
|
||||||
@ -101,5 +101,5 @@ p1 << r2.p1;
|
|||||||
p2 << r2.p2;
|
p2 << r2.p2;
|
||||||
@@
|
@@
|
||||||
|
|
||||||
msg = "WARNING opportunity for kstrdep (memcpy on line %s)" % (p2[0].line)
|
msg = "WARNING opportunity for kstrdup (memcpy on line %s)" % (p2[0].line)
|
||||||
coccilib.report.print_report(p1[0], msg)
|
coccilib.report.print_report(p1[0], msg)
|
||||||
|
@ -35,11 +35,11 @@ type loff_t;
|
|||||||
// a function that blocks
|
// a function that blocks
|
||||||
@ blocks @
|
@ blocks @
|
||||||
identifier block_f;
|
identifier block_f;
|
||||||
identifier wait_event =~ "^wait_event_.*";
|
identifier wait =~ "^wait_.*";
|
||||||
@@
|
@@
|
||||||
block_f(...) {
|
block_f(...) {
|
||||||
... when exists
|
... when exists
|
||||||
wait_event(...)
|
wait(...)
|
||||||
... when exists
|
... when exists
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,12 +49,12 @@ identifier wait_event =~ "^wait_event_.*";
|
|||||||
// XXX currently reader_blocks supports only direct and 1-level indirect cases.
|
// XXX currently reader_blocks supports only direct and 1-level indirect cases.
|
||||||
@ reader_blocks_direct @
|
@ reader_blocks_direct @
|
||||||
identifier stream_reader.readstream;
|
identifier stream_reader.readstream;
|
||||||
identifier wait_event =~ "^wait_event_.*";
|
identifier wait =~ "^wait_.*";
|
||||||
@@
|
@@
|
||||||
readstream(...)
|
readstream(...)
|
||||||
{
|
{
|
||||||
... when exists
|
... when exists
|
||||||
wait_event(...)
|
wait(...)
|
||||||
... when exists
|
... when exists
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ if (id == NULL || ...) { ... return ...; }
|
|||||||
when != of_dev_put(id)
|
when != of_dev_put(id)
|
||||||
when != if (id) { ... put_device(&id->dev) ... }
|
when != if (id) { ... put_device(&id->dev) ... }
|
||||||
when != e1 = (T)id
|
when != e1 = (T)id
|
||||||
when != e1 = &id->dev
|
when != e1 = (T)(&id->dev)
|
||||||
when != e1 = get_device(&id->dev)
|
when != e1 = get_device(&id->dev)
|
||||||
when != e1 = (T1)platform_get_drvdata(id)
|
when != e1 = (T1)platform_get_drvdata(id)
|
||||||
(
|
(
|
||||||
@ -42,11 +42,10 @@ p1 << search.p1;
|
|||||||
p2 << search.p2;
|
p2 << search.p2;
|
||||||
@@
|
@@
|
||||||
|
|
||||||
coccilib.report.print_report(p2[0], "ERROR: missing put_device; "
|
coccilib.report.print_report(p2[0],
|
||||||
+ "call of_find_device_by_node on line "
|
"ERROR: missing put_device; call of_find_device_by_node on line "
|
||||||
+ p1[0].line
|
+ p1[0].line
|
||||||
+ ", but without a corresponding object release "
|
+ ", but without a corresponding object release within this function.")
|
||||||
+ "within this function.")
|
|
||||||
|
|
||||||
@script:python depends on org@
|
@script:python depends on org@
|
||||||
p1 << search.p1;
|
p1 << search.p1;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
ifneq ($(srctree),.)
|
ifdef building_out_of_srctree
|
||||||
|
|
||||||
symlinks := $(patsubst $(srctree)/$(src)/%,%,$(wildcard $(srctree)/$(src)/*.py))
|
symlinks := $(patsubst $(srctree)/$(src)/%,%,$(wildcard $(srctree)/$(src)/*.py))
|
||||||
|
|
||||||
|
@ -25,6 +25,10 @@ static struct resword {
|
|||||||
{ "__volatile__", VOLATILE_KEYW },
|
{ "__volatile__", VOLATILE_KEYW },
|
||||||
{ "__builtin_va_list", VA_LIST_KEYW },
|
{ "__builtin_va_list", VA_LIST_KEYW },
|
||||||
|
|
||||||
|
{ "__int128", BUILTIN_INT_KEYW },
|
||||||
|
{ "__int128_t", BUILTIN_INT_KEYW },
|
||||||
|
{ "__uint128_t", BUILTIN_INT_KEYW },
|
||||||
|
|
||||||
// According to rth, c99 defines "_Bool", __restrict", __restrict__", "restrict". KAO
|
// According to rth, c99 defines "_Bool", __restrict", __restrict__", "restrict". KAO
|
||||||
{ "_Bool", BOOL_KEYW },
|
{ "_Bool", BOOL_KEYW },
|
||||||
{ "_restrict", RESTRICT_KEYW },
|
{ "_restrict", RESTRICT_KEYW },
|
||||||
|
@ -76,6 +76,7 @@ static void record_compound(struct string_list **keyw,
|
|||||||
%token ATTRIBUTE_KEYW
|
%token ATTRIBUTE_KEYW
|
||||||
%token AUTO_KEYW
|
%token AUTO_KEYW
|
||||||
%token BOOL_KEYW
|
%token BOOL_KEYW
|
||||||
|
%token BUILTIN_INT_KEYW
|
||||||
%token CHAR_KEYW
|
%token CHAR_KEYW
|
||||||
%token CONST_KEYW
|
%token CONST_KEYW
|
||||||
%token DOUBLE_KEYW
|
%token DOUBLE_KEYW
|
||||||
@ -263,6 +264,7 @@ simple_type_specifier:
|
|||||||
| VOID_KEYW
|
| VOID_KEYW
|
||||||
| BOOL_KEYW
|
| BOOL_KEYW
|
||||||
| VA_LIST_KEYW
|
| VA_LIST_KEYW
|
||||||
|
| BUILTIN_INT_KEYW
|
||||||
| TYPE { (*$1)->tag = SYM_TYPEDEF; $$ = $1; }
|
| TYPE { (*$1)->tag = SYM_TYPEDEF; $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
|
||||||
# Run headers_$1 command for all suitable architectures
|
|
||||||
|
|
||||||
# Stop on error
|
|
||||||
set -e
|
|
||||||
|
|
||||||
do_command()
|
|
||||||
{
|
|
||||||
if [ -f ${srctree}/arch/$2/include/asm/Kbuild ]; then
|
|
||||||
make ARCH=$2 KBUILD_HEADERS=$1 headers_$1
|
|
||||||
else
|
|
||||||
printf "Ignoring arch: %s\n" ${arch}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
archs=${HDR_ARCH_LIST:-$(ls ${srctree}/arch)}
|
|
||||||
|
|
||||||
for arch in ${archs}; do
|
|
||||||
case ${arch} in
|
|
||||||
um) # no userspace export
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
if [ -d ${srctree}/arch/${arch} ]; then
|
|
||||||
do_command $1 ${arch}
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
@ -1,47 +1,39 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
if [ $# -lt 2 ]
|
if [ $# -ne 2 ]
|
||||||
then
|
then
|
||||||
echo "Usage: headers_install.sh OUTDIR SRCDIR [FILES...]"
|
echo "Usage: headers_install.sh INFILE OUTFILE"
|
||||||
echo
|
echo
|
||||||
echo "Prepares kernel header files for use by user space, by removing"
|
echo "Prepares kernel header files for use by user space, by removing"
|
||||||
echo "all compiler.h definitions and #includes, removing any"
|
echo "all compiler.h definitions and #includes, removing any"
|
||||||
echo "#ifdef __KERNEL__ sections, and putting __underscores__ around"
|
echo "#ifdef __KERNEL__ sections, and putting __underscores__ around"
|
||||||
echo "asm/inline/volatile keywords."
|
echo "asm/inline/volatile keywords."
|
||||||
echo
|
echo
|
||||||
echo "OUTDIR: directory to write each userspace header FILE to."
|
echo "INFILE: header file to operate on"
|
||||||
echo "SRCDIR: source directory where files are picked."
|
echo "OUTFILE: output file which the processed header is writen to"
|
||||||
echo "FILES: list of header files to operate on."
|
|
||||||
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Grab arguments
|
# Grab arguments
|
||||||
|
INFILE=$1
|
||||||
|
OUTFILE=$2
|
||||||
|
TMPFILE=$OUTFILE.tmp
|
||||||
|
|
||||||
OUTDIR="$1"
|
trap 'rm -f $OUTFILE $TMPFILE' EXIT
|
||||||
shift
|
|
||||||
SRCDIR="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
# Iterate through files listed on command line
|
sed -E -e '
|
||||||
|
s/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g
|
||||||
|
s/__attribute_const__([[:space:]]|$)/\1/g
|
||||||
|
s@^#include <linux/compiler(|_types).h>@@
|
||||||
|
s/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g
|
||||||
|
s/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g
|
||||||
|
s@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @
|
||||||
|
' $INFILE > $TMPFILE || exit 1
|
||||||
|
|
||||||
FILE=
|
scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ $TMPFILE > $OUTFILE
|
||||||
trap 'rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed"' EXIT
|
[ $? -gt 1 ] && exit 1
|
||||||
for i in "$@"
|
|
||||||
do
|
rm -f $TMPFILE
|
||||||
FILE="$(basename "$i")"
|
|
||||||
sed -E \
|
|
||||||
-e 's/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g' \
|
|
||||||
-e 's/__attribute_const__([[:space:]]|$)/\1/g' \
|
|
||||||
-e 's@^#include <linux/compiler(|_types).h>@@' \
|
|
||||||
-e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
|
|
||||||
-e 's/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g' \
|
|
||||||
-e 's@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @' \
|
|
||||||
"$SRCDIR/$i" > "$OUTDIR/$FILE.sed" || exit 1
|
|
||||||
scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
|
|
||||||
> "$OUTDIR/$FILE"
|
|
||||||
[ $? -gt 1 ] && exit 1
|
|
||||||
rm -f "$OUTDIR/$FILE.sed"
|
|
||||||
done
|
|
||||||
trap - EXIT
|
trap - EXIT
|
||||||
|
@ -150,6 +150,9 @@ static int read_symbol(FILE *in, struct sym_entry *s)
|
|||||||
/* exclude debugging symbols */
|
/* exclude debugging symbols */
|
||||||
else if (stype == 'N' || stype == 'n')
|
else if (stype == 'N' || stype == 'n')
|
||||||
return -1;
|
return -1;
|
||||||
|
/* exclude s390 kasan local symbols */
|
||||||
|
else if (!strncmp(sym, ".LASANPC", 8))
|
||||||
|
return -1;
|
||||||
|
|
||||||
/* include the type field in the symbol name, so that it gets
|
/* include the type field in the symbol name, so that it gets
|
||||||
* compressed together */
|
* compressed together */
|
||||||
|
@ -130,7 +130,7 @@ if is_enabled CONFIG_MODULES; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$ARCH" != "um" ]; then
|
if [ "$ARCH" != "um" ]; then
|
||||||
$MAKE -f $srctree/Makefile headers_check
|
$MAKE -f $srctree/Makefile headers
|
||||||
$MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH="$libc_headers_dir/usr"
|
$MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH="$libc_headers_dir/usr"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
|
|||||||
__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
|
__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
|
||||||
EXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \
|
EXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \
|
||||||
--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
|
--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
|
||||||
--exclude=.config.old --exclude=.missing-syscalls.d"
|
--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
|
||||||
|
|
||||||
# We can label the here-doc lines for conditional output to the spec file
|
# We can label the here-doc lines for conditional output to the spec file
|
||||||
#
|
#
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
# mode may be any of: tags, TAGS, cscope
|
# mode may be any of: tags, TAGS, cscope
|
||||||
#
|
#
|
||||||
# Uses the following environment variables:
|
# Uses the following environment variables:
|
||||||
# ARCH, SUBARCH, SRCARCH, srctree, src, obj
|
# SUBARCH, SRCARCH, srctree
|
||||||
|
|
||||||
if [ "$KBUILD_VERBOSE" = "1" ]; then
|
if [ "$KBUILD_VERBOSE" = "1" ]; then
|
||||||
set -x
|
set -x
|
||||||
@ -17,8 +17,7 @@ ignore="$(echo "$RCS_FIND_IGNORE" | sed 's|\\||g' )"
|
|||||||
# tags and cscope files should also ignore MODVERSION *.mod.c files
|
# tags and cscope files should also ignore MODVERSION *.mod.c files
|
||||||
ignore="$ignore ( -name *.mod.c ) -prune -o"
|
ignore="$ignore ( -name *.mod.c ) -prune -o"
|
||||||
|
|
||||||
# Do not use full path if we do not use O=.. builds
|
# Use make KBUILD_ABS_SRCTREE=1 {tags|cscope}
|
||||||
# Use make O=. {tags|cscope}
|
|
||||||
# to force full paths for a non-O= build
|
# to force full paths for a non-O= build
|
||||||
if [ "${srctree}" = "." -o -z "${srctree}" ]; then
|
if [ "${srctree}" = "." -o -z "${srctree}" ]; then
|
||||||
tree=
|
tree=
|
||||||
@ -36,21 +35,19 @@ elif [ "${ALLSOURCE_ARCHS}" = "all" ]; then
|
|||||||
ALLSOURCE_ARCHS=$(find ${tree}arch/ -mindepth 1 -maxdepth 1 -type d -printf '%f ')
|
ALLSOURCE_ARCHS=$(find ${tree}arch/ -mindepth 1 -maxdepth 1 -type d -printf '%f ')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# find sources in arch/$ARCH
|
# find sources in arch/$1
|
||||||
find_arch_sources()
|
find_arch_sources()
|
||||||
{
|
{
|
||||||
for i in $archincludedir; do
|
for i in $archincludedir; do
|
||||||
prune="$prune -wholename $i -prune -o"
|
prune="$prune -wholename $i -prune -o"
|
||||||
done
|
done
|
||||||
find ${tree}arch/$1 $ignore $subarchprune $prune -name "$2" \
|
find ${tree}arch/$1 $ignore $prune -name "$2" -not -type l -print;
|
||||||
-not -type l -print;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# find sources in arch/$1/include
|
# find sources in arch/$1/include
|
||||||
find_arch_include_sources()
|
find_arch_include_sources()
|
||||||
{
|
{
|
||||||
include=$(find ${tree}arch/$1/ $subarchprune \
|
include=$(find ${tree}arch/$1/ -name include -type d -print);
|
||||||
-name include -type d -print);
|
|
||||||
if [ -n "$include" ]; then
|
if [ -n "$include" ]; then
|
||||||
archincludedir="$archincludedir $include"
|
archincludedir="$archincludedir $include"
|
||||||
find $include $ignore -name "$2" -not -type l -print;
|
find $include $ignore -name "$2" -not -type l -print;
|
||||||
@ -306,36 +303,6 @@ if [ "${ARCH}" = "um" ]; then
|
|||||||
else
|
else
|
||||||
archinclude=${SUBARCH}
|
archinclude=${SUBARCH}
|
||||||
fi
|
fi
|
||||||
elif [ "${SRCARCH}" = "arm" -a "${SUBARCH}" != "" ]; then
|
|
||||||
subarchdir=$(find ${tree}arch/$SRCARCH/ -name "mach-*" -type d -o \
|
|
||||||
-name "plat-*" -type d);
|
|
||||||
mach_suffix=$SUBARCH
|
|
||||||
plat_suffix=$SUBARCH
|
|
||||||
|
|
||||||
# Special cases when $plat_suffix != $mach_suffix
|
|
||||||
case $mach_suffix in
|
|
||||||
"omap1" | "omap2")
|
|
||||||
plat_suffix="omap"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ ! -d ${tree}arch/$SRCARCH/mach-$mach_suffix ]; then
|
|
||||||
echo "Warning: arch/arm/mach-$mach_suffix/ not found." >&2
|
|
||||||
echo " Fix your \$SUBARCH appropriately" >&2
|
|
||||||
fi
|
|
||||||
|
|
||||||
for i in $subarchdir; do
|
|
||||||
case "$i" in
|
|
||||||
*"mach-"${mach_suffix})
|
|
||||||
;;
|
|
||||||
*"plat-"${plat_suffix})
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
subarchprune="$subarchprune \
|
|
||||||
-wholename $i -prune -o"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
remove_structs=
|
remove_structs=
|
||||||
|
@ -74,7 +74,7 @@ endif
|
|||||||
# Append kselftest to KBUILD_OUTPUT to avoid cluttering
|
# Append kselftest to KBUILD_OUTPUT to avoid cluttering
|
||||||
# KBUILD_OUTPUT with selftest objects and headers installed
|
# KBUILD_OUTPUT with selftest objects and headers installed
|
||||||
# by selftests Makefile or lib.mk.
|
# by selftests Makefile or lib.mk.
|
||||||
ifneq ($(KBUILD_SRC),)
|
ifdef building_out_of_srctree
|
||||||
override LDFLAGS =
|
override LDFLAGS =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ define RUN_TESTS
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
run_tests: all
|
run_tests: all
|
||||||
ifneq ($(KBUILD_SRC),)
|
ifdef building_out_of_srctree
|
||||||
@if [ "X$(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES)" != "X" ]; then
|
@if [ "X$(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES)" != "X" ]; then
|
||||||
@rsync -aq $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(OUTPUT)
|
@rsync -aq $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(OUTPUT)
|
||||||
fi
|
fi
|
||||||
@ -125,7 +125,7 @@ clean:
|
|||||||
# When make O= with kselftest target from main level
|
# When make O= with kselftest target from main level
|
||||||
# the following aren't defined.
|
# the following aren't defined.
|
||||||
#
|
#
|
||||||
ifneq ($(KBUILD_SRC),)
|
ifdef building_out_of_srctree
|
||||||
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
|
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
|
||||||
COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
|
COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
|
||||||
LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
|
LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
|
||||||
|
1
usr/.gitignore
vendored
1
usr/.gitignore
vendored
@ -7,4 +7,3 @@ initramfs_data.cpio.gz
|
|||||||
initramfs_data.cpio.bz2
|
initramfs_data.cpio.bz2
|
||||||
initramfs_data.cpio.lzma
|
initramfs_data.cpio.lzma
|
||||||
initramfs_list
|
initramfs_list
|
||||||
include
|
|
||||||
|
@ -56,3 +56,5 @@ $(deps_initramfs): klibcdirs
|
|||||||
$(obj)/$(datafile_y): $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
|
$(obj)/$(datafile_y): $(obj)/gen_init_cpio $(deps_initramfs) klibcdirs
|
||||||
$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/$(datafile_d_y)
|
$(Q)$(initramfs) -l $(ramfs-input) > $(obj)/$(datafile_d_y)
|
||||||
$(call if_changed,initfs)
|
$(call if_changed,initfs)
|
||||||
|
|
||||||
|
subdir-$(CONFIG_UAPI_HEADER_TEST) += include
|
||||||
|
3
usr/include/.gitignore
vendored
Normal file
3
usr/include/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
*
|
||||||
|
!.gitignore
|
||||||
|
!Makefile
|
132
usr/include/Makefile
Normal file
132
usr/include/Makefile
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
# Unlike the kernel space, exported headers are written in standard C.
|
||||||
|
# - Forbid C++ style comments
|
||||||
|
# - Use '__inline__', '__asm__' instead of 'inline', 'asm'
|
||||||
|
#
|
||||||
|
# -std=c90 (equivalent to -ansi) catches the violation of those.
|
||||||
|
# We cannot go as far as adding -Wpedantic since it emits too many warnings.
|
||||||
|
UAPI_CFLAGS := -std=c90 -Wall -Werror=implicit-function-declaration
|
||||||
|
|
||||||
|
override c_flags = $(UAPI_CFLAGS) -Wp,-MD,$(depfile) -I$(objtree)/usr/include
|
||||||
|
|
||||||
|
# The following are excluded for now because they fail to build.
|
||||||
|
#
|
||||||
|
# Do not add a new header to the blacklist without legitimate reason.
|
||||||
|
# Please consider to fix the header first.
|
||||||
|
#
|
||||||
|
# Sorted alphabetically.
|
||||||
|
header-test- += asm/ipcbuf.h
|
||||||
|
header-test- += asm/msgbuf.h
|
||||||
|
header-test- += asm/sembuf.h
|
||||||
|
header-test- += asm/shmbuf.h
|
||||||
|
header-test- += asm/signal.h
|
||||||
|
header-test- += asm/ucontext.h
|
||||||
|
header-test- += drm/vmwgfx_drm.h
|
||||||
|
header-test- += linux/am437x-vpfe.h
|
||||||
|
header-test- += linux/android/binder.h
|
||||||
|
header-test- += linux/android/binderfs.h
|
||||||
|
header-test-$(CONFIG_CPU_BIG_ENDIAN) += linux/byteorder/big_endian.h
|
||||||
|
header-test-$(CONFIG_CPU_LITTLE_ENDIAN) += linux/byteorder/little_endian.h
|
||||||
|
header-test- += linux/coda.h
|
||||||
|
header-test- += linux/coda_psdev.h
|
||||||
|
header-test- += linux/dvb/audio.h
|
||||||
|
header-test- += linux/dvb/osd.h
|
||||||
|
header-test- += linux/elfcore.h
|
||||||
|
header-test- += linux/errqueue.h
|
||||||
|
header-test- += linux/fsmap.h
|
||||||
|
header-test- += linux/hdlc/ioctl.h
|
||||||
|
header-test- += linux/ivtv.h
|
||||||
|
header-test- += linux/jffs2.h
|
||||||
|
header-test- += linux/kexec.h
|
||||||
|
header-test- += linux/matroxfb.h
|
||||||
|
header-test- += linux/netfilter_bridge/ebtables.h
|
||||||
|
header-test- += linux/netfilter_ipv4/ipt_LOG.h
|
||||||
|
header-test- += linux/netfilter_ipv6/ip6t_LOG.h
|
||||||
|
header-test- += linux/nfc.h
|
||||||
|
header-test- += linux/nilfs2_ondisk.h
|
||||||
|
header-test- += linux/omap3isp.h
|
||||||
|
header-test- += linux/omapfb.h
|
||||||
|
header-test- += linux/patchkey.h
|
||||||
|
header-test- += linux/phonet.h
|
||||||
|
header-test- += linux/reiserfs_xattr.h
|
||||||
|
header-test- += linux/scc.h
|
||||||
|
header-test- += linux/sctp.h
|
||||||
|
header-test- += linux/signal.h
|
||||||
|
header-test- += linux/sysctl.h
|
||||||
|
header-test- += linux/usb/audio.h
|
||||||
|
header-test- += linux/v4l2-mediabus.h
|
||||||
|
header-test- += linux/v4l2-subdev.h
|
||||||
|
header-test- += linux/videodev2.h
|
||||||
|
header-test- += linux/vm_sockets.h
|
||||||
|
header-test- += misc/ocxl.h
|
||||||
|
header-test- += mtd/mtd-abi.h
|
||||||
|
header-test- += mtd/mtd-user.h
|
||||||
|
header-test- += scsi/scsi_bsg_fc.h
|
||||||
|
header-test- += scsi/scsi_netlink.h
|
||||||
|
header-test- += scsi/scsi_netlink_fc.h
|
||||||
|
header-test- += sound/asequencer.h
|
||||||
|
header-test- += sound/asoc.h
|
||||||
|
header-test- += sound/asound.h
|
||||||
|
header-test- += sound/compress_offload.h
|
||||||
|
header-test- += sound/emu10k1.h
|
||||||
|
header-test- += sound/sfnt_info.h
|
||||||
|
header-test- += sound/sof/eq.h
|
||||||
|
header-test- += sound/sof/fw.h
|
||||||
|
header-test- += sound/sof/header.h
|
||||||
|
header-test- += sound/sof/manifest.h
|
||||||
|
header-test- += sound/sof/trace.h
|
||||||
|
header-test- += xen/evtchn.h
|
||||||
|
header-test- += xen/gntdev.h
|
||||||
|
header-test- += xen/privcmd.h
|
||||||
|
|
||||||
|
# More headers are broken in some architectures
|
||||||
|
|
||||||
|
ifeq ($(SRCARCH),arc)
|
||||||
|
header-test- += linux/bpf_perf_event.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(SRCARCH),ia64)
|
||||||
|
header-test- += asm/setup.h
|
||||||
|
header-test- += asm/sigcontext.h
|
||||||
|
header-test- += asm/perfmon.h
|
||||||
|
header-test- += asm/perfmon_default_smpl.h
|
||||||
|
header-test- += linux/if_bonding.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(SRCARCH),mips)
|
||||||
|
header-test- += asm/stat.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(SRCARCH),powerpc)
|
||||||
|
header-test- += asm/stat.h
|
||||||
|
header-test- += linux/bpf_perf_event.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(SRCARCH),riscv)
|
||||||
|
header-test- += linux/bpf_perf_event.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(SRCARCH),s390)
|
||||||
|
header-test- += asm/runtime_instr.h
|
||||||
|
header-test- += asm/zcrypt.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(SRCARCH),sparc)
|
||||||
|
header-test- += asm/stat.h
|
||||||
|
header-test- += asm/uctx.h
|
||||||
|
header-test- += asm/fbio.h
|
||||||
|
header-test- += asm/openpromio.h
|
||||||
|
endif
|
||||||
|
|
||||||
|
# asm-generic/*.h is used by asm/*.h, and should not be included directly
|
||||||
|
header-test- += asm-generic/%
|
||||||
|
|
||||||
|
# The rest are compile-tested
|
||||||
|
header-test-y += $(filter-out $(header-test-), \
|
||||||
|
$(patsubst $(obj)/%,%, $(wildcard \
|
||||||
|
$(addprefix $(obj)/, *.h */*.h */*/*.h */*/*/*.h))))
|
||||||
|
|
||||||
|
# For GNU Make <= 4.2.1, $(wildcard $(obj)/*/) matches to not only directories
|
||||||
|
# but also regular files. Use $(filter %/, ...) just in case.
|
||||||
|
clean-dirs += $(patsubst $(obj)/%/,%,$(filter %/, $(wildcard $(obj)/*/)))
|
Loading…
Reference in New Issue
Block a user