Commit 3e3005df authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

kbuild: unify modules(_install) for in-tree and external modules



If you attempt to build or install modules ('make modules(_install)'
with CONFIG_MODULES disabled, you will get a clear error message, but
nothing for external module builds.

Factor out the modules and modules_install rules into the common part,
so you will get the same error message when you try to build external
modules with CONFIG_MODULES=n.

Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent 4b97ec0e
Loading
Loading
Loading
Loading
+36 −49
Original line number Diff line number Diff line
@@ -1458,7 +1458,6 @@ endif

PHONY += modules
modules: $(if $(KBUILD_BUILTIN),vmlinux) modules_check modules_prepare
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost

PHONY += modules_check
modules_check: modules.order
@@ -1476,12 +1475,9 @@ PHONY += modules_prepare
modules_prepare: prepare
	$(Q)$(MAKE) $(build)=scripts scripts/module.lds

# Target to install modules
PHONY += modules_install
modules_install: _modinst_ _modinst_post

PHONY += _modinst_
_modinst_:
modules_install: __modinst_pre
PHONY += __modinst_pre
__modinst_pre:
	@rm -rf $(MODLIB)/kernel
	@rm -f $(MODLIB)/source
	@mkdir -p $(MODLIB)/kernel
@@ -1493,14 +1489,6 @@ _modinst_:
	@sed 's:^:kernel/:' modules.order > $(MODLIB)/modules.order
	@cp -f modules.builtin $(MODLIB)/
	@cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst

# This depmod is only for convenience to give the initial
# boot a modules.dep even before / is mounted read-write.  However the
# boot script depmod is the master version.
PHONY += _modinst_post
_modinst_post: _modinst_
	$(call cmd,depmod)

ifeq ($(CONFIG_MODULE_SIG), y)
PHONY += modules_sign
@@ -1508,20 +1496,6 @@ modules_sign:
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modsign
endif

else # CONFIG_MODULES

# Modules not configured
# ---------------------------------------------------------------------------

PHONY += modules modules_install
modules modules_install:
	@echo >&2
	@echo >&2 "The present kernel configuration has modules disabled."
	@echo >&2 "Type 'make config' and enable loadable module support."
	@echo >&2 "Then build a kernel with module support enabled."
	@echo >&2
	@exit 1

endif # CONFIG_MODULES

###
@@ -1769,24 +1743,9 @@ KBUILD_BUILTIN :=
KBUILD_MODULES := 1

build-dirs := $(KBUILD_EXTMOD)
PHONY += modules
modules: $(MODORDER)
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost

$(MODORDER): descend
	@:

PHONY += modules_install
modules_install: _emodinst_ _emodinst_post

PHONY += _emodinst_
_emodinst_:
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst

PHONY += _emodinst_post
_emodinst_post: _emodinst_
	$(call cmd,depmod)

compile_commands.json: $(extmod-prefix)compile_commands.json
PHONY += compile_commands.json

@@ -1809,6 +1768,39 @@ PHONY += prepare modules_prepare

endif # KBUILD_EXTMOD

# ---------------------------------------------------------------------------
# Modules

PHONY += modules modules_install

ifdef CONFIG_MODULES

modules: $(MODORDER)
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost

quiet_cmd_depmod = DEPMOD  $(KERNELRELEASE)
      cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
                   $(KERNELRELEASE)

modules_install:
	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
	$(call cmd,depmod)

else # CONFIG_MODULES

# Modules not configured
# ---------------------------------------------------------------------------

modules modules_install:
	@echo >&2 '***'
	@echo >&2 '*** The present kernel configuration has modules disabled.'
	@echo >&2 '*** To use the module feature, please run "make menuconfig" etc.'
	@echo >&2 '*** to enable CONFIG_MODULES.'
	@echo >&2 '***'
	@exit 1

endif # CONFIG_MODULES

# Single targets
# ---------------------------------------------------------------------------
# To build individual files in subdirectories, you can do like this:
@@ -1997,11 +1989,6 @@ tools/%: FORCE
quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN   $(wildcard $(rm-files)))
      cmd_rmfiles = rm -rf $(rm-files)

# Run depmod only if we have System.map and depmod is executable
quiet_cmd_depmod = DEPMOD  $(KERNELRELEASE)
      cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
                   $(KERNELRELEASE)

# read saved command lines for existing targets
existing-targets := $(wildcard $(sort $(targets)))