mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 01:10:04 +00:00
![Michal Marek](/assets/img/avatar_default.png)
To make it easier for module-init-tools and scripts like mkinitrd to distinguish builtin and missing modules, install a modules.builtin file listing all builtin modules. This is done by generating an additional config file (tristate.conf) with tristate options set to uppercase 'Y' or 'M'. If we source that config file, the builtin modules appear in obj-Y. Signed-off-by: Michal Marek <mmarek@suse.cz>
55 lines
1.7 KiB
Makefile
55 lines
1.7 KiB
Makefile
# ==========================================================================
|
|
# Generating modules.builtin
|
|
# ==========================================================================
|
|
|
|
src := $(obj)
|
|
|
|
PHONY := __modbuiltin
|
|
__modbuiltin:
|
|
|
|
-include include/config/auto.conf
|
|
# tristate.conf sets tristate variables to uppercase 'Y' or 'M'
|
|
# That way, we get the list of built-in modules in obj-Y
|
|
-include include/config/tristate.conf
|
|
|
|
include scripts/Kbuild.include
|
|
|
|
# The filename Kbuild has precedence over Makefile
|
|
kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
|
|
kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)
|
|
include $(kbuild-file)
|
|
|
|
include scripts/Makefile.lib
|
|
__subdir-Y := $(patsubst %/,%,$(filter %/, $(obj-Y)))
|
|
subdir-Y += $(__subdir-Y)
|
|
subdir-ym := $(sort $(subdir-y) $(subdir-Y) $(subdir-m))
|
|
subdir-ym := $(addprefix $(obj)/,$(subdir-ym))
|
|
obj-Y := $(addprefix $(obj)/,$(obj-Y))
|
|
|
|
modbuiltin-subdirs := $(patsubst %,%/modules.builtin, $(subdir-ym))
|
|
modbuiltin-mods := $(filter %.ko, $(obj-Y:.o=.ko))
|
|
modbuiltin-target := $(obj)/modules.builtin
|
|
|
|
__modbuiltin: $(modbuiltin-target) $(subdir-ym)
|
|
@:
|
|
|
|
$(modbuiltin-target): $(subdir-ym) FORCE
|
|
$(Q)(for m in $(modbuiltin-mods); do echo kernel/$$m; done; \
|
|
cat /dev/null $(modbuiltin-subdirs)) > $@
|
|
|
|
PHONY += FORCE
|
|
|
|
FORCE:
|
|
|
|
# Descending
|
|
# ---------------------------------------------------------------------------
|
|
|
|
PHONY += $(subdir-ym)
|
|
$(subdir-ym):
|
|
$(Q)$(MAKE) $(modbuiltin)=$@
|
|
|
|
|
|
# Declare the contents of the .PHONY variable as phony. We keep that
|
|
# information in a variable se we can use it in if_changed and friends.
|
|
|
|
.PHONY: $(PHONY)
|