2020-09-22 02:48:37 +00:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2015-03-29 07:29:18 +00:00
|
|
|
#
|
2020-09-22 02:48:37 +00:00
|
|
|
# Copyright (C) 2006-2020 OpenWrt.org
|
2006-11-11 23:11:02 +00:00
|
|
|
|
2016-12-14 14:36:39 +00:00
|
|
|
ifneq ($(filter check,$(MAKECMDGOALS)),)
|
|
|
|
CHECK:=1
|
|
|
|
DUMP:=1
|
|
|
|
endif
|
|
|
|
|
2017-06-13 11:04:35 +00:00
|
|
|
ifneq ($(SOURCE_DATE_EPOCH),)
|
|
|
|
ifndef DUMP
|
|
|
|
KBUILD_BUILD_TIMESTAMP:=$(shell perl -e 'print scalar gmtime($(SOURCE_DATE_EPOCH))')
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2007-09-08 19:55:42 +00:00
|
|
|
ifeq ($(__target_inc),)
|
2016-12-14 14:36:39 +00:00
|
|
|
ifndef CHECK
|
|
|
|
include $(INCLUDE_DIR)/target.mk
|
|
|
|
endif
|
2007-09-08 19:55:42 +00:00
|
|
|
endif
|
2007-08-26 13:26:02 +00:00
|
|
|
|
2006-06-23 00:49:42 +00:00
|
|
|
ifeq ($(DUMP),1)
|
2006-11-11 23:11:02 +00:00
|
|
|
KERNEL?=<KERNEL>
|
|
|
|
BOARD?=<BOARD>
|
|
|
|
LINUX_VERSION?=<LINUX_VERSION>
|
2012-01-08 15:23:11 +00:00
|
|
|
LINUX_VERMAGIC?=<LINUX_VERMAGIC>
|
2006-06-23 00:49:42 +00:00
|
|
|
else
|
2011-07-25 10:32:38 +00:00
|
|
|
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
|
|
|
export GCC_HONOUR_COPTS=s
|
|
|
|
endif
|
2007-07-31 00:52:27 +00:00
|
|
|
|
2010-07-12 16:01:13 +00:00
|
|
|
LINUX_KMOD_SUFFIX=ko
|
|
|
|
|
2006-08-16 00:35:30 +00:00
|
|
|
ifneq (,$(findstring uml,$(BOARD)))
|
2007-10-23 06:23:23 +00:00
|
|
|
KERNEL_CC?=$(HOSTCC)
|
|
|
|
KERNEL_CROSS?=
|
2006-08-16 00:35:30 +00:00
|
|
|
else
|
2007-10-23 06:23:23 +00:00
|
|
|
KERNEL_CC?=$(TARGET_CC)
|
|
|
|
KERNEL_CROSS?=$(TARGET_CROSS)
|
2006-08-16 00:35:30 +00:00
|
|
|
endif
|
2006-07-20 21:06:47 +00:00
|
|
|
|
2010-03-29 03:07:54 +00:00
|
|
|
ifeq ($(TARGET_BUILD),1)
|
2016-08-05 12:08:47 +00:00
|
|
|
PATCH_DIR ?= $(CURDIR)/patches$(if $(wildcard ./patches-$(KERNEL_PATCHVER)),-$(KERNEL_PATCHVER))
|
|
|
|
FILES_DIR ?= $(foreach dir,$(wildcard $(CURDIR)/files $(CURDIR)/files-$(KERNEL_PATCHVER)),"$(dir)")
|
2010-03-29 03:07:54 +00:00
|
|
|
endif
|
2012-12-02 15:26:24 +00:00
|
|
|
KERNEL_BUILD_DIR ?= $(BUILD_DIR)/linux-$(BOARD)$(if $(SUBTARGET),_$(SUBTARGET))
|
2007-08-07 00:04:25 +00:00
|
|
|
LINUX_DIR ?= $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)
|
2015-01-24 22:13:22 +00:00
|
|
|
LINUX_UAPI_DIR=uapi/
|
2012-01-08 15:23:11 +00:00
|
|
|
LINUX_VERMAGIC:=$(strip $(shell cat $(LINUX_DIR)/.vermagic 2>/dev/null))
|
|
|
|
LINUX_VERMAGIC:=$(if $(LINUX_VERMAGIC),$(LINUX_VERMAGIC),unknown)
|
|
|
|
|
2017-11-17 21:55:03 +00:00
|
|
|
LINUX_UNAME_VERSION:=$(KERNEL_BASE)
|
2011-07-24 21:42:33 +00:00
|
|
|
ifneq ($(findstring -rc,$(LINUX_VERSION)),)
|
|
|
|
LINUX_UNAME_VERSION:=$(LINUX_UNAME_VERSION)-$(strip $(lastword $(subst -, ,$(LINUX_VERSION))))
|
|
|
|
endif
|
|
|
|
|
2006-08-16 00:35:30 +00:00
|
|
|
LINUX_KERNEL:=$(KERNEL_BUILD_DIR)/vmlinux
|
2006-11-11 23:11:02 +00:00
|
|
|
|
2018-12-03 08:16:23 +00:00
|
|
|
ifneq (,$(findstring -rc,$(LINUX_VERSION)))
|
|
|
|
LINUX_SOURCE:=linux-$(LINUX_VERSION).tar.gz
|
|
|
|
else
|
|
|
|
LINUX_SOURCE:=linux-$(LINUX_VERSION).tar.xz
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq (,$(findstring -rc,$(LINUX_VERSION)))
|
|
|
|
LINUX_SITE:=https://git.kernel.org/torvalds/t
|
|
|
|
else ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE))$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),)
|
2018-10-15 18:00:05 +00:00
|
|
|
LINUX_SITE:=@KERNEL/linux/kernel/v$(word 1,$(subst ., ,$(KERNEL_BASE))).x
|
2017-05-11 21:33:43 +00:00
|
|
|
else
|
2017-10-24 23:59:15 +00:00
|
|
|
LINUX_UNAME_VERSION:=$(strip $(shell cat $(LINUX_DIR)/include/config/kernel.release 2>/dev/null))
|
2009-12-14 13:54:03 +00:00
|
|
|
endif
|
2006-11-11 23:11:02 +00:00
|
|
|
|
2017-05-11 21:33:43 +00:00
|
|
|
MODULES_SUBDIR:=lib/modules/$(LINUX_UNAME_VERSION)
|
|
|
|
TARGET_MODULES_DIR:=$(LINUX_TARGET_DIR)/$(MODULES_SUBDIR)
|
|
|
|
|
2007-09-10 04:21:21 +00:00
|
|
|
ifneq ($(TARGET_BUILD),1)
|
2019-08-03 20:45:06 +00:00
|
|
|
PKG_BUILD_DIR ?= $(KERNEL_BUILD_DIR)/$(if $(BUILD_VARIANT),$(PKG_NAME)-$(BUILD_VARIANT)/)$(PKG_NAME)$(if $(PKG_VERSION),-$(PKG_VERSION))
|
2007-09-10 04:21:21 +00:00
|
|
|
endif
|
2005-11-01 17:30:26 +00:00
|
|
|
endif
|
2007-09-08 19:55:42 +00:00
|
|
|
|
|
|
|
ifneq (,$(findstring uml,$(BOARD)))
|
2009-03-03 14:55:53 +00:00
|
|
|
LINUX_KARCH=um
|
2015-11-02 18:12:29 +00:00
|
|
|
else ifneq (,$(findstring $(ARCH) , aarch64 aarch64_be ))
|
2014-12-12 18:28:03 +00:00
|
|
|
LINUX_KARCH := arm64
|
2015-11-22 19:06:07 +00:00
|
|
|
else ifneq (,$(findstring $(ARCH) , arceb ))
|
|
|
|
LINUX_KARCH := arc
|
2015-11-02 18:12:29 +00:00
|
|
|
else ifneq (,$(findstring $(ARCH) , armeb ))
|
2014-12-12 18:28:03 +00:00
|
|
|
LINUX_KARCH := arm
|
2015-11-02 18:12:29 +00:00
|
|
|
else ifneq (,$(findstring $(ARCH) , mipsel mips64 mips64el ))
|
2014-12-12 18:28:03 +00:00
|
|
|
LINUX_KARCH := mips
|
2016-11-03 12:58:24 +00:00
|
|
|
else ifneq (,$(findstring $(ARCH) , powerpc64 ))
|
|
|
|
LINUX_KARCH := powerpc
|
2018-12-16 09:45:53 +00:00
|
|
|
else ifneq (,$(findstring $(ARCH) , riscv64 ))
|
|
|
|
LINUX_KARCH := riscv
|
2015-11-02 18:12:29 +00:00
|
|
|
else ifneq (,$(findstring $(ARCH) , sh2 sh3 sh4 ))
|
2014-12-12 18:28:03 +00:00
|
|
|
LINUX_KARCH := sh
|
2015-11-02 18:12:29 +00:00
|
|
|
else ifneq (,$(findstring $(ARCH) , i386 x86_64 ))
|
2014-12-12 18:28:03 +00:00
|
|
|
LINUX_KARCH := x86
|
2007-09-08 19:55:42 +00:00
|
|
|
else
|
2014-12-12 18:28:03 +00:00
|
|
|
LINUX_KARCH := $(ARCH)
|
2007-09-08 19:55:42 +00:00
|
|
|
endif
|
2005-08-15 10:43:09 +00:00
|
|
|
|
2017-03-16 08:53:30 +00:00
|
|
|
KERNEL_MAKE = $(MAKE) $(KERNEL_MAKEOPTS)
|
|
|
|
|
2018-09-29 15:45:54 +00:00
|
|
|
KERNEL_MAKE_FLAGS = \
|
2022-06-21 13:15:40 +00:00
|
|
|
KCFLAGS="$(call iremap,$(BUILD_DIR),$(notdir $(BUILD_DIR))) $(filter-out -fno-plt,$(call qstrip,$(CONFIG_EXTRA_OPTIMIZATION))) $(call qstrip,$(CONFIG_KERNEL_CFLAGS))" \
|
2017-03-16 08:53:30 +00:00
|
|
|
HOSTCFLAGS="$(HOST_CFLAGS) -Wall -Wmissing-prototypes -Wstrict-prototypes" \
|
|
|
|
CROSS_COMPILE="$(KERNEL_CROSS)" \
|
|
|
|
ARCH="$(LINUX_KARCH)" \
|
|
|
|
KBUILD_HAVE_NLS=no \
|
|
|
|
KBUILD_BUILD_USER="$(call qstrip,$(CONFIG_KERNEL_BUILD_USER))" \
|
|
|
|
KBUILD_BUILD_HOST="$(call qstrip,$(CONFIG_KERNEL_BUILD_DOMAIN))" \
|
|
|
|
KBUILD_BUILD_TIMESTAMP="$(KBUILD_BUILD_TIMESTAMP)" \
|
|
|
|
KBUILD_BUILD_VERSION="0" \
|
2022-03-29 13:32:25 +00:00
|
|
|
KBUILD_HOSTLDFLAGS="-L$(STAGING_DIR_HOST)/lib" \
|
2017-03-16 08:53:30 +00:00
|
|
|
CONFIG_SHELL="$(BASH)" \
|
|
|
|
$(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') \
|
|
|
|
$(if $(PKG_BUILD_ID),LDFLAGS_MODULE=--build-id=0x$(PKG_BUILD_ID)) \
|
2020-10-23 09:26:48 +00:00
|
|
|
cmd_syscalls= \
|
|
|
|
$(if $(__package_mk),KBUILD_EXTRA_SYMBOLS="$(wildcard $(PKG_SYMVERS_DIR)/*.symvers)")
|
2017-03-16 08:53:30 +00:00
|
|
|
|
2023-09-30 00:54:58 +00:00
|
|
|
ifneq (,$(KERNEL_CC))
|
|
|
|
KERNEL_MAKE_FLAGS += CC="$(KERNEL_CC)"
|
|
|
|
endif
|
|
|
|
|
2021-03-18 06:22:11 +00:00
|
|
|
KERNEL_NOSTDINC_FLAGS = \
|
|
|
|
-nostdinc $(if $(DUMP),, -isystem $(shell $(TARGET_CC) -print-file-name=include))
|
|
|
|
|
2017-03-16 08:53:30 +00:00
|
|
|
ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE))$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),)
|
2017-06-18 21:27:51 +00:00
|
|
|
KERNEL_MAKE_FLAGS += \
|
2017-03-16 08:53:30 +00:00
|
|
|
KERNELRELEASE=$(LINUX_VERSION)
|
|
|
|
endif
|
|
|
|
|
kernel: disable stack validation for external module builds as needed
c3e31b6a9b04 and 5f8e5872406d disable stack validation when the build
host is not running Linux, as the objtool kernel build tool required for
stack validation is not portable to other build host environments. This
was achieved by setting CONFIG_STACK_VALIDATION= in KERNEL_MAKEOPTS, and
by setting SKIP_STACK_VALIDATION=1 in the environment. KERNEL_MAKEOPTS
only has effect for the kernel build, not for external module builds,
but through kernel 5.14, SKIP_STACK_VALIDATION worked to disable this
feature too, so stack validation was disabled for external module builds
as well. Since kernel 0d989ac2c90b, the kernel build no longer considers
SKIP_STACK_VALIDATION, so the feature will be disabled for the kernel
build, but not for external module builds.
When building OpenWrt on a non-Linux build host targeting x86 (the only
target architecture for which OpenWrt enables the kernel
CONFIG_STACK_VALIDATION) and using kernel 5.15 (such as via
CONFIG_TESTING_KERNEL), this caused a build failure during any external
module build, such as kmod-button-hotplug. This manifested as build
errors such as:
make[4]: *** No rule to make target
'.../build_dir/target-x86_64_musl/linux-x86_64/button-hotplug/button-hotplug.o',
needed by
'.../build_dir/target-x86_64_musl/linux-x86_64/button-hotplug/button-hotplug.mod'.
Stop.
Although button-hotplug.c was present, the implicit rule to make
$(obj)/%.o from $(src)/%.c in the kernel's scripts/Makefile.build could
not be satisfied in this case, as it also depends on $(objtool_dep),
non-empty as a result of the failure to propagate disabling of stack
validation to external module builds, in a configuration where it is not
possible to build objtool.
KERNEL_MAKEOPTS is used for just the kernel build itself, while
KERNEL_MAKE_FLAGS is used for both the kernel build and for external
module builds. This restores the ability to build OpenWrt in such
configurations by moving the CONFIG_STACK_VALIDATION= make argument from
KERNEL_MAKEOPTS to KERNEL_MAKE_FLAGS where it is able to affect external
module builds properly.
Note that the kernel's objtool and related configuration have seen a
major overhaul since kernel 5.15, and may need more attention again
after 22922deae13f, in kernel 5.19.
Signed-off-by: Mark Mentovai <mark@mentovai.com>
2022-09-11 17:48:17 +00:00
|
|
|
ifneq ($(HOST_OS),Linux)
|
|
|
|
KERNEL_MAKE_FLAGS += CONFIG_STACK_VALIDATION=
|
|
|
|
export SKIP_STACK_VALIDATION:=1
|
|
|
|
endif
|
|
|
|
|
2022-12-14 15:29:16 +00:00
|
|
|
KERNEL_MAKEOPTS = -C $(LINUX_DIR) $(KERNEL_MAKE_FLAGS)
|
2017-03-16 08:53:30 +00:00
|
|
|
|
|
|
|
ifdef CONFIG_USE_SPARSE
|
|
|
|
KERNEL_MAKEOPTS += C=1 CHECK=$(STAGING_DIR_HOST)/bin/sparse
|
|
|
|
endif
|
|
|
|
|
2017-07-20 20:34:54 +00:00
|
|
|
PKG_EXTMOD_SUBDIRS ?= .
|
|
|
|
|
2020-04-09 07:41:16 +00:00
|
|
|
PKG_SYMVERS_DIR = $(KERNEL_BUILD_DIR)/symvers
|
|
|
|
|
2017-07-20 20:34:54 +00:00
|
|
|
define collect_module_symvers
|
|
|
|
for subdir in $(PKG_EXTMOD_SUBDIRS); do \
|
2019-04-12 15:26:03 +00:00
|
|
|
realdir=$$$$(readlink -f $(PKG_BUILD_DIR)); \
|
|
|
|
grep -F $(PKG_BUILD_DIR) $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \
|
|
|
|
[ "$(PKG_BUILD_DIR)" = "$$$$realdir" ] || \
|
|
|
|
grep -F $$$$realdir $(PKG_BUILD_DIR)/$$$$subdir/Module.symvers >> $(PKG_BUILD_DIR)/Module.symvers.tmp; \
|
2017-07-20 20:34:54 +00:00
|
|
|
done; \
|
|
|
|
sort -u $(PKG_BUILD_DIR)/Module.symvers.tmp > $(PKG_BUILD_DIR)/Module.symvers; \
|
2020-11-18 21:58:58 +00:00
|
|
|
mkdir -p $(PKG_SYMVERS_DIR); \
|
2020-04-09 07:41:16 +00:00
|
|
|
mv $(PKG_BUILD_DIR)/Module.symvers $(PKG_SYMVERS_DIR)/$(PKG_NAME).symvers
|
2017-07-20 20:34:54 +00:00
|
|
|
endef
|
|
|
|
|
|
|
|
define KernelPackage/hooks
|
|
|
|
ifneq ($(PKG_NAME),kernel)
|
|
|
|
Hooks/Compile/Post += collect_module_symvers
|
|
|
|
endif
|
|
|
|
define KernelPackage/hooks
|
|
|
|
endef
|
|
|
|
endef
|
|
|
|
|
2006-10-17 16:13:10 +00:00
|
|
|
define KernelPackage/Defaults
|
|
|
|
FILES:=
|
|
|
|
AUTOLOAD:=
|
2017-08-23 20:27:32 +00:00
|
|
|
MODPARAMS:=
|
2016-04-15 08:26:36 +00:00
|
|
|
PKGFLAGS+=nonshared
|
2006-10-17 16:13:10 +00:00
|
|
|
endef
|
|
|
|
|
2017-08-23 20:27:32 +00:00
|
|
|
# 1: name
|
|
|
|
# 2: install prefix
|
|
|
|
# 3: module priority prefix
|
|
|
|
# 4: required for boot
|
|
|
|
# 5: module list
|
2006-10-17 16:13:10 +00:00
|
|
|
define ModuleAutoLoad
|
2017-08-23 20:27:32 +00:00
|
|
|
$(if $(5), \
|
|
|
|
mkdir -p $(2)/etc/modules.d; \
|
|
|
|
($(foreach mod,$(5), \
|
|
|
|
echo "$(mod)$(if $(MODPARAMS.$(mod)), $(MODPARAMS.$(mod)),$(if $(MODPARAMS), $(MODPARAMS)))"; )) > $(2)/etc/modules.d/$(3)$(1); \
|
|
|
|
$(if $(4), \
|
|
|
|
mkdir -p $(2)/etc/modules-boot.d; \
|
|
|
|
ln -sf ../modules.d/$(3)$(1) $(2)/etc/modules-boot.d/;))
|
2006-10-17 16:13:10 +00:00
|
|
|
endef
|
2007-11-30 09:43:08 +00:00
|
|
|
|
2007-11-30 17:22:44 +00:00
|
|
|
ifeq ($(DUMP)$(TARGET_BUILD),)
|
2007-11-30 09:43:08 +00:00
|
|
|
-include $(LINUX_DIR)/.config
|
|
|
|
endif
|
2006-10-17 16:13:10 +00:00
|
|
|
|
2009-03-03 14:54:19 +00:00
|
|
|
define KernelPackage/depends
|
|
|
|
$(STAMP_BUILT): $(LINUX_DIR)/.config
|
|
|
|
define KernelPackage/depends
|
|
|
|
endef
|
|
|
|
endef
|
|
|
|
|
2006-10-17 16:13:10 +00:00
|
|
|
define KernelPackage
|
|
|
|
NAME:=$(1)
|
2006-11-18 20:53:13 +00:00
|
|
|
$(eval $(call Package/Default))
|
2006-10-17 16:13:10 +00:00
|
|
|
$(eval $(call KernelPackage/Defaults))
|
|
|
|
$(eval $(call KernelPackage/$(1)))
|
2009-11-04 22:51:07 +00:00
|
|
|
$(eval $(call KernelPackage/$(1)/$(BOARD)))
|
2017-01-04 01:45:36 +00:00
|
|
|
$(eval $(call KernelPackage/$(1)/$(BOARD)/$(if $(SUBTARGET),$(SUBTARGET),generic)))
|
2006-10-17 16:13:10 +00:00
|
|
|
|
|
|
|
define Package/kmod-$(1)
|
|
|
|
TITLE:=$(TITLE)
|
|
|
|
SECTION:=kernel
|
|
|
|
CATEGORY:=Kernel modules
|
|
|
|
DESCRIPTION:=$(DESCRIPTION)
|
2012-01-08 15:23:11 +00:00
|
|
|
EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC))
|
2009-09-06 17:26:37 +00:00
|
|
|
VERSION:=$(LINUX_VERSION)$(if $(PKG_VERSION),+$(PKG_VERSION))-$(if $(PKG_RELEASE),$(PKG_RELEASE),$(LINUX_RELEASE))
|
2016-04-15 08:26:36 +00:00
|
|
|
PKGFLAGS:=$(PKGFLAGS)
|
2006-10-17 16:13:10 +00:00
|
|
|
$(call KernelPackage/$(1))
|
2009-11-04 21:54:53 +00:00
|
|
|
$(call KernelPackage/$(1)/$(BOARD))
|
2017-01-04 01:45:36 +00:00
|
|
|
$(call KernelPackage/$(1)/$(BOARD)/$(if $(SUBTARGET),$(SUBTARGET),generic))
|
2006-10-17 16:13:10 +00:00
|
|
|
endef
|
|
|
|
|
2015-04-02 14:53:34 +00:00
|
|
|
ifdef KernelPackage/$(1)/conffiles
|
|
|
|
define Package/kmod-$(1)/conffiles
|
|
|
|
$(call KernelPackage/$(1)/conffiles)
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2007-08-25 14:43:15 +00:00
|
|
|
ifdef KernelPackage/$(1)/description
|
|
|
|
define Package/kmod-$(1)/description
|
|
|
|
$(call KernelPackage/$(1)/description)
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2008-05-15 00:57:50 +00:00
|
|
|
ifdef KernelPackage/$(1)/config
|
|
|
|
define Package/kmod-$(1)/config
|
|
|
|
$(call KernelPackage/$(1)/config)
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2009-03-03 14:54:19 +00:00
|
|
|
$(call KernelPackage/depends)
|
2017-07-20 20:34:54 +00:00
|
|
|
$(call KernelPackage/hooks)
|
2008-09-02 15:50:09 +00:00
|
|
|
|
kernel: fix KernelPackage when all KCONFIG are versioned
If a kernel package was defined where all KCONFIG symbols were dynamic,
and versioned, no FILES would be installed, as the foreach evaluation was
providing the value of the variable defined by the KCONFIG symbol name
including the version test
Fix this by calling the version_filter function on the list of KCONFIG
variable names run through by foreach
Example, kernel 6.1:
KCONFIG:=CONFIG_OLD@lt6.1 CONFIG_NEW@ge6.1
filter-out any KCONFIG settings forced by package:
CONFIG_OLD@lt6.1 CONFIG_NEW@ge6.1
there are dynamic settings, so for each of them,
get the value of the make variable defined by symbol name:
CONFIG_OLD@lt6.1 is not set
CONFIG_NEW@ge6.1 is not set
versus
CONFIG_OLD is not set
CONFIG_NEW=m
test if any of these are m, or y
if yes, install files, otherwise, nothing to install
Signed-off-by: John Thomson <git@johnthomson.fastmail.com.au>
2023-07-01 00:23:35 +00:00
|
|
|
ifneq ($(if $(filter-out %=y %=n %=m,$(KCONFIG)),$(filter m y,$(foreach c,$(call version_filter,$(filter-out %=y %=n %=m,$(KCONFIG))),$($(c)))),.),)
|
2018-04-10 07:03:52 +00:00
|
|
|
define Package/kmod-$(1)/install
|
2015-03-29 07:35:42 +00:00
|
|
|
@for mod in $$(call version_filter,$$(FILES)); do \
|
2015-07-05 21:31:34 +00:00
|
|
|
if grep -q "$$$$$$$${mod##$(LINUX_DIR)/}" "$(LINUX_DIR)/modules.builtin"; then \
|
|
|
|
echo "NOTICE: module '$$$$$$$$mod' is built-in."; \
|
|
|
|
elif [ -e $$$$$$$$mod ]; then \
|
2011-10-28 13:10:43 +00:00
|
|
|
mkdir -p $$(1)/$(MODULES_SUBDIR) ; \
|
|
|
|
$(CP) -L $$$$$$$$mod $$(1)/$(MODULES_SUBDIR)/ ; \
|
|
|
|
else \
|
2015-07-05 21:31:34 +00:00
|
|
|
echo "ERROR: module '$$$$$$$$mod' is missing." >&2; \
|
|
|
|
exit 1; \
|
2011-10-28 13:10:43 +00:00
|
|
|
fi; \
|
|
|
|
done;
|
2019-02-28 15:37:41 +00:00
|
|
|
$(call ModuleAutoLoad,$(1),$$(1),$(filter-out 0-,$(word 1,$(AUTOLOAD))-),$(filter-out 0,$(word 2,$(AUTOLOAD))),$(sort $(wordlist 3,99,$(AUTOLOAD))))
|
2007-07-20 22:25:14 +00:00
|
|
|
$(call KernelPackage/$(1)/install,$$(1))
|
2018-04-10 07:03:52 +00:00
|
|
|
endef
|
2007-09-08 23:33:01 +00:00
|
|
|
$(if $(CONFIG_PACKAGE_kmod-$(1)),
|
|
|
|
else
|
2013-07-18 15:41:09 +00:00
|
|
|
compile: $(1)-disabled
|
|
|
|
$(1)-disabled:
|
|
|
|
@echo "WARNING: kmod-$(1) is not available in the kernel config - generating empty package" >&2
|
|
|
|
|
|
|
|
define Package/kmod-$(1)/install
|
|
|
|
true
|
|
|
|
endef
|
2007-09-08 23:33:01 +00:00
|
|
|
)
|
2006-10-17 16:13:10 +00:00
|
|
|
endif
|
|
|
|
$$(eval $$(call BuildPackage,kmod-$(1)))
|
2007-04-18 12:28:38 +00:00
|
|
|
|
2018-12-17 13:07:19 +00:00
|
|
|
$$(IPKG_kmod-$(1)): $$(wildcard $$(call version_filter,$$(FILES)))
|
2018-10-01 10:44:50 +00:00
|
|
|
|
2006-10-17 16:13:10 +00:00
|
|
|
endef
|
|
|
|
|
2016-05-22 19:31:37 +00:00
|
|
|
version_filter=$(if $(findstring @,$(1)),$(shell $(SCRIPT_DIR)/package-metadata.pl version_filter $(KERNEL_PATCHVER) $(1)),$(1))
|
2015-03-29 07:35:42 +00:00
|
|
|
|
2017-08-23 20:27:32 +00:00
|
|
|
# 1: priority (optional)
|
|
|
|
# 2: module list
|
|
|
|
# 3: boot flag
|
2006-10-17 16:13:10 +00:00
|
|
|
define AutoLoad
|
2017-08-23 20:27:32 +00:00
|
|
|
$(if $(1),$(1),0) $(if $(3),1,0) $(call version_filter,$(2))
|
2006-10-17 16:13:10 +00:00
|
|
|
endef
|
|
|
|
|
2017-08-23 20:27:32 +00:00
|
|
|
# 1: module list
|
|
|
|
# 2: boot flag
|
2013-09-17 21:45:05 +00:00
|
|
|
define AutoProbe
|
2017-08-23 20:27:32 +00:00
|
|
|
$(call AutoLoad,,$(1),$(2))
|
2013-09-17 21:45:05 +00:00
|
|
|
endef
|
|
|
|
|
2011-06-01 18:08:17 +00:00
|
|
|
version_field=$(if $(word $(1),$(2)),$(word $(1),$(2)),0)
|
|
|
|
kernel_version_merge=$$(( ($(call version_field,1,$(1)) << 24) + ($(call version_field,2,$(1)) << 16) + ($(call version_field,3,$(1)) << 8) + $(call version_field,4,$(1)) ))
|
|
|
|
|
2009-03-03 14:55:53 +00:00
|
|
|
ifdef DUMP
|
2011-06-01 18:08:17 +00:00
|
|
|
kernel_version_cmp=
|
2009-03-03 14:55:53 +00:00
|
|
|
else
|
2011-06-01 18:08:17 +00:00
|
|
|
kernel_version_cmp=$(shell [ $(call kernel_version_merge,$(call split_version,$(2))) $(1) $(call kernel_version_merge,$(call split_version,$(3))) ] && echo 1 )
|
2009-03-03 14:55:53 +00:00
|
|
|
endif
|
2008-05-11 20:56:51 +00:00
|
|
|
|
2011-06-01 18:08:17 +00:00
|
|
|
CompareKernelPatchVer=$(if $(call kernel_version_cmp,-$(2),$(1),$(3)),1,0)
|
|
|
|
|
|
|
|
kernel_patchver_gt=$(call kernel_version_cmp,-gt,$(KERNEL_PATCHVER),$(1))
|
|
|
|
kernel_patchver_ge=$(call kernel_version_cmp,-ge,$(KERNEL_PATCHVER),$(1))
|
|
|
|
kernel_patchver_eq=$(call kernel_version_cmp,-eq,$(KERNEL_PATCHVER),$(1))
|
2011-10-27 16:56:22 +00:00
|
|
|
kernel_patchver_le=$(call kernel_version_cmp,-le,$(KERNEL_PATCHVER),$(1))
|
|
|
|
kernel_patchver_lt=$(call kernel_version_cmp,-lt,$(KERNEL_PATCHVER),$(1))
|
2011-06-01 18:08:17 +00:00
|
|
|
|