Commit 2646719a authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'kbuild-v5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull Kbuild updates from Masahiro Yamada:

 - allow users to invoke 'make' out of the source tree

 - refactor scripts/mkmakefile

 - deprecate KBUILD_SRC, which was used to track the source tree
   location for O= build.

 - fix recordmcount.pl in case objdump output is localized

 - turn unresolved symbols in external modules to errors from warnings
   by default; pass KBUILD_MODPOST_WARN=1 to get them back to warnings

 - generate modules.builtin.modinfo to collect .modinfo data from
   built-in modules

 - misc Makefile cleanups

* tag 'kbuild-v5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (21 commits)
  .gitignore: add more all*.config patterns
  moduleparam: Save information about built-in modules in separate file
  Remove MODULE_ALIAS() calls that take undefined macro
  .gitignore: add leading and trailing slashes to generated directories
  scripts/tags.sh: fix direct execution of scripts/tags.sh
  scripts: override locale from environment when running recordmcount.pl
  samples: kobject: allow CONFIG_SAMPLE_KOBJECT to become y
  samples: seccomp: turn CONFIG_SAMPLE_SECCOMP into a bool option
  kbuild: move Documentation to vmlinux-alldirs
  kbuild: move samples/ to KBUILD_VMLINUX_OBJS
  modpost: make KBUILD_MODPOST_WARN also configurable for external modules
  kbuild: check arch/$(SRCARCH)/include/generated before out-of-tree build
  kbuild: remove unneeded dependency for include/config/kernel.release
  memory: squash drivers/memory/Makefile.asm-offsets
  kbuild: use $(srctree) instead of KBUILD_SRC to check out-of-tree build
  kbuild: mkmakefile: generate a simple wrapper of top Makefile
  kbuild: mkmakefile: do not check the generated Makefile marker
  kbuild: allow Kbuild to start from any directory
  kbuild: pass $(MAKECMDGOALS) to sub-make as is
  kbuild: fix warning "overriding recipe for target 'Makefile'"
  ...
parents 019d7316 7fb1fc42
...@@ -58,6 +58,7 @@ modules.builtin ...@@ -58,6 +58,7 @@ modules.builtin
/vmlinuz /vmlinuz
/System.map /System.map
/Module.markers /Module.markers
/modules.builtin.modinfo
# #
# RPM spec file (make rpm-pkg) # RPM spec file (make rpm-pkg)
...@@ -90,10 +91,10 @@ modules.builtin ...@@ -90,10 +91,10 @@ modules.builtin
# #
# Generated include files # Generated include files
# #
include/config /include/config/
include/generated /include/generated/
include/ksym /include/ksym/
arch/*/include/generated /arch/*/include/generated/
# stgit generated dirs # stgit generated dirs
patches-* patches-*
...@@ -129,7 +130,12 @@ signing_key.x509 ...@@ -129,7 +130,12 @@ signing_key.x509
x509.genkey x509.genkey
# Kconfig presets # Kconfig presets
all.config /all.config
/alldef.config
/allmod.config
/allno.config
/allrandom.config
/allyes.config
# Kdevelop4 # Kdevelop4
*.kdev4 *.kdev4
...@@ -179,6 +179,7 @@ mktree ...@@ -179,6 +179,7 @@ mktree
mkutf8data mkutf8data
modpost modpost
modules.builtin modules.builtin
modules.builtin.modinfo
modules.order modules.order
modversions.h* modversions.h*
nconf nconf
......
...@@ -11,6 +11,11 @@ modules.builtin ...@@ -11,6 +11,11 @@ modules.builtin
This file lists all modules that are built into the kernel. This is used This file lists all modules that are built into the kernel. This is used
by modprobe to not fail when trying to load something builtin. by modprobe to not fail when trying to load something builtin.
modules.builtin.modinfo
--------------------------------------------------
This file contains modinfo from all modules that are built into the kernel.
Unlike modinfo of a separate module, all fields are prefixed with module name.
Environment variables Environment variables
......
This diff is collapsed.
...@@ -1449,7 +1449,6 @@ static void __exit omap_system_dma_exit(void) ...@@ -1449,7 +1449,6 @@ static void __exit omap_system_dma_exit(void)
MODULE_DESCRIPTION("OMAP SYSTEM DMA DRIVER"); MODULE_DESCRIPTION("OMAP SYSTEM DMA DRIVER");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:" DRIVER_NAME);
MODULE_AUTHOR("Texas Instruments Inc"); MODULE_AUTHOR("Texas Instruments Inc");
/* /*
......
...@@ -970,5 +970,4 @@ module_platform_driver(omap_dm_timer_driver); ...@@ -970,5 +970,4 @@ module_platform_driver(omap_dm_timer_driver);
MODULE_DESCRIPTION("OMAP Dual-Mode Timer Driver"); MODULE_DESCRIPTION("OMAP Dual-Mode Timer Driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:" DRIVER_NAME);
MODULE_AUTHOR("Texas Instruments Inc"); MODULE_AUTHOR("Texas Instruments Inc");
...@@ -28,6 +28,9 @@ ti-emif-sram-objs := ti-emif-pm.o ti-emif-sram-pm.o ...@@ -28,6 +28,9 @@ ti-emif-sram-objs := ti-emif-pm.o ti-emif-sram-pm.o
AFLAGS_ti-emif-sram-pm.o :=-Wa,-march=armv7-a AFLAGS_ti-emif-sram-pm.o :=-Wa,-march=armv7-a
include drivers/memory/Makefile.asm-offsets
drivers/memory/ti-emif-sram-pm.o: include/generated/ti-emif-asm-offsets.h drivers/memory/ti-emif-sram-pm.o: include/generated/ti-emif-asm-offsets.h
include/generated/ti-emif-asm-offsets.h: drivers/memory/emif-asm-offsets.s FORCE
$(call filechk,offsets,__TI_EMIF_ASM_OFFSETS_H__)
targets += emif-asm-offsets.s
include/generated/ti-emif-asm-offsets.h: drivers/memory/emif-asm-offsets.s FORCE
$(call filechk,offsets,__TI_EMIF_ASM_OFFSETS_H__)
targets += emif-asm-offsets.s
...@@ -459,7 +459,6 @@ EXPORT_SYMBOL_GPL(omap_tll_disable); ...@@ -459,7 +459,6 @@ EXPORT_SYMBOL_GPL(omap_tll_disable);
MODULE_AUTHOR("Keshava Munegowda <keshava_mgowda@ti.com>"); MODULE_AUTHOR("Keshava Munegowda <keshava_mgowda@ti.com>");
MODULE_AUTHOR("Roger Quadros <rogerq@ti.com>"); MODULE_AUTHOR("Roger Quadros <rogerq@ti.com>");
MODULE_ALIAS("platform:" USBHS_DRIVER_NAME);
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_DESCRIPTION("usb tll driver for TI OMAP EHCI and OHCI controllers"); MODULE_DESCRIPTION("usb tll driver for TI OMAP EHCI and OHCI controllers");
......
...@@ -844,6 +844,7 @@ ...@@ -844,6 +844,7 @@
EXIT_CALL \ EXIT_CALL \
*(.discard) \ *(.discard) \
*(.discard.*) \ *(.discard.*) \
*(.modinfo) \
} }
/** /**
......
...@@ -253,6 +253,7 @@ extern typeof(name) __mod_##type##__##name##_device_table \ ...@@ -253,6 +253,7 @@ extern typeof(name) __mod_##type##__##name##_device_table \
#define MODULE_VERSION(_version) MODULE_INFO(version, _version) #define MODULE_VERSION(_version) MODULE_INFO(version, _version)
#else #else
#define MODULE_VERSION(_version) \ #define MODULE_VERSION(_version) \
MODULE_INFO(version, _version); \
static struct module_version_attribute ___modver_attr = { \ static struct module_version_attribute ___modver_attr = { \
.mattr = { \ .mattr = { \
.attr = { \ .attr = { \
......
...@@ -10,23 +10,21 @@ ...@@ -10,23 +10,21 @@
module name. */ module name. */
#ifdef MODULE #ifdef MODULE
#define MODULE_PARAM_PREFIX /* empty */ #define MODULE_PARAM_PREFIX /* empty */
#define __MODULE_INFO_PREFIX /* empty */
#else #else
#define MODULE_PARAM_PREFIX KBUILD_MODNAME "." #define MODULE_PARAM_PREFIX KBUILD_MODNAME "."
/* We cannot use MODULE_PARAM_PREFIX because some modules override it. */
#define __MODULE_INFO_PREFIX KBUILD_MODNAME "."
#endif #endif
/* Chosen so that structs with an unsigned long line up. */ /* Chosen so that structs with an unsigned long line up. */
#define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long)) #define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long))
#ifdef MODULE
#define __MODULE_INFO(tag, name, info) \ #define __MODULE_INFO(tag, name, info) \
static const char __UNIQUE_ID(name)[] \ static const char __UNIQUE_ID(name)[] \
__used __attribute__((section(".modinfo"), unused, aligned(1))) \ __used __attribute__((section(".modinfo"), unused, aligned(1))) \
= __stringify(tag) "=" info = __MODULE_INFO_PREFIX __stringify(tag) "=" info
#else /* !MODULE */
/* This struct is here for syntactic coherency, it is not used */
#define __MODULE_INFO(tag, name, info) \
struct __UNIQUE_ID(name) {}
#endif
#define __MODULE_PARM_TYPE(name, _type) \ #define __MODULE_PARM_TYPE(name, _type) \
__MODULE_INFO(parmtype, name##type, #name ":" _type) __MODULE_INFO(parmtype, name##type, #name ":" _type)
......
...@@ -20,8 +20,7 @@ config SAMPLE_TRACE_PRINTK ...@@ -20,8 +20,7 @@ config SAMPLE_TRACE_PRINTK
test various trace_printk() calls from a module. test various trace_printk() calls from a module.
config SAMPLE_KOBJECT config SAMPLE_KOBJECT
tristate "Build kobject examples -- loadable modules only" tristate "Build kobject examples"
depends on m
help help
This config option will allow you to build a number of This config option will allow you to build a number of
different kobject sample modules showing how to use kobjects, different kobject sample modules showing how to use kobjects,
...@@ -103,8 +102,8 @@ config SAMPLE_CONNECTOR ...@@ -103,8 +102,8 @@ config SAMPLE_CONNECTOR
See also Documentation/connector/connector.txt See also Documentation/connector/connector.txt
config SAMPLE_SECCOMP config SAMPLE_SECCOMP
tristate "Build seccomp sample code -- loadable modules only" bool "Build seccomp sample code"
depends on SECCOMP_FILTER && m depends on SECCOMP_FILTER
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.
......
# Makefile for Linux samples code # Makefile for Linux samples code
obj-$(CONFIG_SAMPLES) += kobject/ kprobes/ trace_events/ livepatch/ \ obj-y += kobject/ kprobes/ trace_events/ livepatch/ \
hw_breakpoint/ kfifo/ kdb/ hidraw/ rpmsg/ seccomp/ \ hw_breakpoint/ kfifo/ kdb/ hidraw/ rpmsg/ seccomp/ \
configfs/ connector/ v4l/ trace_printk/ \ configfs/ connector/ v4l/ trace_printk/ \
vfio-mdev/ vfs/ qmi/ binderfs/ pidfd/ vfio-mdev/ vfs/ qmi/ binderfs/ pidfd/
...@@ -40,5 +40,5 @@ HOSTLDLIBS_bpf-fancy += $(MFLAG) ...@@ -40,5 +40,5 @@ HOSTLDLIBS_bpf-fancy += $(MFLAG)
HOSTLDLIBS_dropper += $(MFLAG) HOSTLDLIBS_dropper += $(MFLAG)
HOSTLDLIBS_user-trap += $(MFLAG) HOSTLDLIBS_user-trap += $(MFLAG)
endif endif
always := $(hostprogs-m) always := $(hostprogs-y)
endif endif
...@@ -504,7 +504,7 @@ existing-targets := $(wildcard $(sort $(targets))) ...@@ -504,7 +504,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 ($(KBUILD_SRC),) ifneq ($(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.
......
...@@ -71,7 +71,7 @@ __hostc_flags = $(_hostc_flags) ...@@ -71,7 +71,7 @@ __hostc_flags = $(_hostc_flags)
__hostcxx_flags = $(_hostcxx_flags) __hostcxx_flags = $(_hostcxx_flags)
ifeq ($(KBUILD_EXTMOD),) ifeq ($(KBUILD_EXTMOD),)
ifneq ($(KBUILD_SRC),) ifneq ($(srctree),.)
__hostc_flags = -I$(obj) $(call flags,_hostc_flags) __hostc_flags = -I$(obj) $(call flags,_hostc_flags)
__hostcxx_flags = -I$(obj) $(call flags,_hostcxx_flags) __hostcxx_flags = -I$(obj) $(call flags,_hostcxx_flags)
endif endif
......
...@@ -144,7 +144,7 @@ __cpp_flags = $(_cpp_flags) ...@@ -144,7 +144,7 @@ __cpp_flags = $(_cpp_flags)
# If building the kernel in a separate objtree expand all occurrences # If building the kernel in a separate objtree expand all occurrences
# of -Idir to -I$(srctree)/dir except for absolute paths (starting with '/'). # of -Idir to -I$(srctree)/dir except for absolute paths (starting with '/').
ifeq ($(KBUILD_EXTMOD),) ifeq ($(KBUILD_EXTMOD),)
ifneq ($(KBUILD_SRC),) ifneq ($(srctree),.)
# -I$(obj) locates generated .h files # -I$(obj) locates generated .h files
# $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files # $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files
......
...@@ -15,7 +15,7 @@ include include/config/tristate.conf ...@@ -15,7 +15,7 @@ include include/config/tristate.conf
include scripts/Kbuild.include include scripts/Kbuild.include
ifneq ($(KBUILD_SRC),) ifneq ($(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
......
...@@ -78,7 +78,7 @@ modpost = scripts/mod/modpost \ ...@@ -78,7 +78,7 @@ modpost = scripts/mod/modpost \
$(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(KBUILD_EXTRA_SYMBOLS))) \ $(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(KBUILD_EXTRA_SYMBOLS))) \
$(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \ $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
$(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \ $(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \
$(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w) $(if $(KBUILD_MODPOST_WARN),-w)
MODPOST_OPT=$(subst -i,-n,$(filter -i,$(MAKEFLAGS))) MODPOST_OPT=$(subst -i,-n,$(filter -i,$(MAKEFLAGS)))
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ifneq ($(KBUILD_SRC),) ifneq ($(srctree),.)
symlinks := $(patsubst $(srctree)/$(src)/%,%,$(wildcard $(srctree)/$(src)/*.py)) symlinks := $(patsubst $(srctree)/$(src)/%,%,$(wildcard $(srctree)/$(src)/*.py))
......
...@@ -212,6 +212,9 @@ modpost_link vmlinux.o ...@@ -212,6 +212,9 @@ modpost_link vmlinux.o
# modpost vmlinux.o to check for section mismatches # modpost vmlinux.o to check for section mismatches
${MAKE} -f "${srctree}/scripts/Makefile.modpost" vmlinux.o ${MAKE} -f "${srctree}/scripts/Makefile.modpost" vmlinux.o
info MODINFO modules.builtin.modinfo
${OBJCOPY} -j .modinfo -O binary vmlinux.o modules.builtin.modinfo
kallsymso="" kallsymso=""
kallsyms_vmlinux="" kallsyms_vmlinux=""
if [ -n "${CONFIG_KALLSYMS}" ]; then if [ -n "${CONFIG_KALLSYMS}" ]; then
......
...@@ -7,33 +7,11 @@ ...@@ -7,33 +7,11 @@
# Usage # Usage
# $1 - Kernel src directory # $1 - Kernel src directory
# Only overwrite automatically generated Makefiles
# (so we do not overwrite kernel Makefile)
if test -e Makefile && ! grep -q Automatically Makefile
then
exit 0
fi
if [ "${quiet}" != "silent_" ]; then if [ "${quiet}" != "silent_" ]; then
echo " GEN Makefile" echo " GEN Makefile"
fi fi
cat << EOF > Makefile cat << EOF > Makefile
# Automatically generated by $0: don't edit # Automatically generated by $(realpath $0): don't edit
include $(realpath $1/Makefile)
ifeq ("\$(origin V)", "command line")
VERBOSE := \$(V)
endif
ifneq (\$(VERBOSE),1)
Q := @
endif
MAKEFLAGS += --no-print-directory
.PHONY: __sub-make \$(MAKECMDGOALS)
__sub-make:
\$(Q)\$(MAKE) -C $1 O=\$(CURDIR) \$(MAKECMDGOALS)
\$(filter-out __sub-make, \$(MAKECMDGOALS)): __sub-make
@:
EOF EOF
...@@ -496,7 +496,7 @@ sub update_funcs ...@@ -496,7 +496,7 @@ sub update_funcs
# #
# Step 2: find the sections and mcount call sites # Step 2: find the sections and mcount call sites
# #
open(IN, "$objdump -hdr $inputfile|") || die "error running $objdump"; open(IN, "LANG=C $objdump -hdr $inputfile|") || die "error running $objdump";
my $text; my $text;
......
...@@ -19,7 +19,7 @@ ignore="$ignore ( -name *.mod.c ) -prune -o" ...@@ -19,7 +19,7 @@ ignore="$ignore ( -name *.mod.c ) -prune -o"
# Do not use full path if we do not use O=.. builds # Do not use full path if we do not use O=.. builds
# Use make O=. {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 [ "${KBUILD_SRC}" = "" ]; then if [ "${srctree}" = "." -o -z "${srctree}" ]; then
tree= tree=
else else
tree=${srctree}/ tree=${srctree}/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment