Commit ff9b45c5 authored by Masahiro Yamada's avatar Masahiro Yamada

kbuild: modpost: read modules.order instead of $(MODVERDIR)/*.mod

Towards the goal of removing MODVERDIR, read out modules.order to get
the list of modules to be processed. This is simpler than parsing *.mod
files in $(MODVERDIR).

For external modules, $(KBUILD_EXTMOD)/modules.order should be read.

I removed the single target %.ko from the top Makefile. To make sure
modpost works correctly, vmlinux and the other modules must be built.
You cannot build a particular .ko file alone.
Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
parent c35c87d6
...@@ -1772,8 +1772,6 @@ build-dir = $(patsubst %/,%,$(dir $(build-target))) ...@@ -1772,8 +1772,6 @@ build-dir = $(patsubst %/,%,$(dir $(build-target)))
$(Q)$(MAKE) $(build)=$(build-dir) $(build-target) $(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
%.symtypes: prepare FORCE %.symtypes: prepare FORCE
$(Q)$(MAKE) $(build)=$(build-dir) $(build-target) $(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
%.ko: %.o
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
# Modules # Modules
PHONY += / PHONY += /
......
...@@ -8,9 +8,10 @@ ...@@ -8,9 +8,10 @@
# b) A <module>.o file which is the .o files above linked together # b) A <module>.o file which is the .o files above linked together
# c) A <module>.mod file in $(MODVERDIR)/, listing the name of the # c) A <module>.mod file in $(MODVERDIR)/, listing the name of the
# the preliminary <module>.o file, plus all .o files # the preliminary <module>.o file, plus all .o files
# d) modules.order, which lists all the modules
# Stage 2 is handled by this file and does the following # Stage 2 is handled by this file and does the following
# 1) Find all modules from the files listed in $(MODVERDIR)/ # 1) Find all modules listed in modules.order
# 2) modpost is then used to # 2) modpost is then used to
# 3) create one <module>.mod.c file pr. module # 3) create one <module>.mod.c file pr. module
# 4) create one Module.symvers file with CRC for all exported symbols # 4) create one Module.symvers file with CRC for all exported symbols
...@@ -60,10 +61,12 @@ include scripts/Makefile.lib ...@@ -60,10 +61,12 @@ include scripts/Makefile.lib
kernelsymfile := $(objtree)/Module.symvers kernelsymfile := $(objtree)/Module.symvers
modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers
# Step 1), find all modules listed in $(MODVERDIR)/ modorder := $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)modules.order
MODLISTCMD := find $(MODVERDIR) -name '*.mod' | xargs -r grep -h '\.ko$$' | sort -u
__modules := $(shell $(MODLISTCMD)) # Step 1), find all modules listed in modules.order
modules := $(patsubst %.o,%.ko, $(wildcard $(__modules:.ko=.o))) ifdef CONFIG_MODULES
modules := $(sort $(shell cat $(modorder)))
endif
# Stop after building .o files if NOFINAL is set. Makes compile tests quicker # Stop after building .o files if NOFINAL is set. Makes compile tests quicker
_modpost: $(if $(KBUILD_MODPOST_NOFINAL), $(modules:.ko:.o),$(modules)) _modpost: $(if $(KBUILD_MODPOST_NOFINAL), $(modules:.ko:.o),$(modules))
...@@ -84,7 +87,7 @@ MODPOST_OPT=$(subst -i,-n,$(filter -i,$(MAKEFLAGS))) ...@@ -84,7 +87,7 @@ MODPOST_OPT=$(subst -i,-n,$(filter -i,$(MAKEFLAGS)))
# We can go over command line length here, so be careful. # We can go over command line length here, so be careful.
quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
cmd_modpost = $(MODLISTCMD) | sed 's/\.ko$$/.o/' | $(modpost) $(MODPOST_OPT) -s -T - cmd_modpost = sed 's/ko$$/o/' $(modorder) | $(modpost) $(MODPOST_OPT) -s -T -
PHONY += __modpost PHONY += __modpost
__modpost: $(modules:.ko=.o) FORCE __modpost: $(modules:.ko=.o) FORCE
......
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