buildroot/package/pkg-kernel-module.mk
Yann E. MORIN 2e95747ab9 core/pkg-kernel-module: drop now-useless check for CONFIG_MODULES
This reverts commit 8df95d9 (pkg-kernel-module: die if kernel module
support is disabled).

Now that we force-enable support for modules in the kernel config, we
need not check it.

Besides, the check was broken, because it did not use $$ to dereference
LINUX_DIR, thus leading to systematic build failures when a package
using the kernel-module infra was enabled.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Peter Korsgaard <jacmet@uclibc.org>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Noé Rubinstein <noe.rubinstein@gmail.com>
Cc: Jan Viktorin <viktorin@rehivetech.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2015-09-04 13:16:42 +02:00

102 lines
3.6 KiB
Makefile

################################################################################
# kernel module infrastructure for building Linux kernel modules
#
# This file implements an infrastructure that eases development of package
# .mk files for out-of-tree Linux kernel modules. It should be used for all
# packages that build a Linux kernel module using the kernel's out-of-tree
# buildsystem, unless they use a complex custom buildsystem.
#
# The kernel-module infrastructure requires the packages that use it to also
# use another package infrastructure. kernel-module only defines post-build
# and post-install hooks. This allows the package to build both kernel
# modules and/or user-space components (with any of the other *-package
# infra).
#
# As such, it is to be used in conjunction with another *-package infra,
# like so:
#
# $(eval $(kernel-module))
# $(eval $(generic-package))
#
# Note: if the caller needs access to the kernel modules (either after they
# are built or after they are installed), it will have to define its own
# post-build/install hooks *after* calling kernel-module, but *before*
# calling the other *-package infra, like so:
#
# $(eval $(kernel-module))
# define FOO_MOD_TWEAK
# # do something
# endef
# FOO_POST_BUILD_HOOKS += FOO_MOD_TWEAK
# $(eval $(generic-package))
#
# Note: this infra does not check that the kernel is enabled; it is expected
# to be enforced at the Kconfig level with proper 'depends on'.
################################################################################
################################################################################
# inner-kernel-module -- generates the make targets needed to support building
# a kernel module
#
# argument 1 is the lowercase package name
# argument 2 is the uppercase package name
################################################################################
define inner-kernel-module
# If the package is enabled, ensure the kernel will support modules
ifeq ($$(BR2_PACKAGE_$(2)),y)
LINUX_NEEDS_MODULES = y
endif
# The kernel must be built first.
$(2)_DEPENDENCIES += linux
# This is only defined in some infrastructures (e.g. autotools, cmake),
# but not in others (e.g. generic). So define it here as well.
$(2)_MAKE ?= $$(MAKE)
# If not specified, consider the source of the kernel module to be at
# the root of the package.
$(2)_MODULE_SUBDIRS ?= .
# Build the kernel module(s)
# Force PWD for those packages that want to use it to find their
# includes and other support files (Booo!)
define $(2)_KERNEL_MODULES_BUILD
@$$(call MESSAGE,"Building kernel module(s)")
$$(foreach d,$$($(2)_MODULE_SUBDIRS), \
$$(LINUX_MAKE_ENV) $$($$(PKG)_MAKE) \
-C $$(LINUX_DIR) \
$$(LINUX_MAKE_FLAGS) \
$$($(2)_MODULE_MAKE_OPTS) \
PWD=$$(@D)/$$(d) \
M=$$(@D)/$$(d) \
modules$$(sep))
endef
$(2)_POST_BUILD_HOOKS += $(2)_KERNEL_MODULES_BUILD
# Install the kernel module(s)
# Force PWD for those packages that want to use it to find their
# includes and other support files (Booo!)
define $(2)_KERNEL_MODULES_INSTALL
@$$(call MESSAGE,"Installing kernel module(s)")
$$(foreach d,$$($(2)_MODULE_SUBDIRS), \
$$(LINUX_MAKE_ENV) $$($$(PKG)_MAKE) \
-C $$(LINUX_DIR) \
$$(LINUX_MAKE_FLAGS) \
$$($(2)_MODULE_MAKE_OPTS) \
PWD=$$(@D)/$$(d) \
M=$$(@D)/$$(d) \
modules_install$$(sep))
endef
$(2)_POST_INSTALL_TARGET_HOOKS += $(2)_KERNEL_MODULES_INSTALL
endef
################################################################################
# kernel-module -- the target generator macro for kernel module packages
################################################################################
kernel-module = $(call inner-kernel-module,$(pkgname),$(call UPPERCASE,$(pkgname)))