From 6bbb8cf19c38a7f15d28617ef492e1c6f202b6f9 Mon Sep 17 00:00:00 2001 From: Mario Haustein Date: Mon, 24 Oct 2016 13:14:05 +0200 Subject: add support for providing an externel kernel configuration file Signed-off-by: Mario Haustein --- Config.in | 2 +- mk/kernel-build.mk | 21 ++++++++++++++++++++- target/Makefile | 4 ++++ target/config/Config.in.kernelcfg | 8 ++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/Config.in b/Config.in index 87099706e..14128b39b 100644 --- a/Config.in +++ b/Config.in @@ -50,7 +50,7 @@ source "target/config/Config.in.kernelcfg" source "target/linux/config/Config.in.compression" menu "Kernel configuration" - visible if ADK_TARGET_OS_LINUX && ADK_TARGET_KERNEL_CUSTOMISING && !ADK_APPLIANCE_TOOLCHAIN && !ADK_TARGET_CHOOSE_ARCH && !ADK_TARGET_KERNEL_USE_DEFCONFIG + visible if ADK_TARGET_OS_LINUX && ADK_TARGET_KERNEL_CUSTOMISING && !ADK_APPLIANCE_TOOLCHAIN && !ADK_TARGET_CHOOSE_ARCH && !ADK_TARGET_KERNEL_USE_DEFCONFIG && !ADK_TARGET_KERNEL_USE_CUSTOMCONFIG source "target/linux/Config.in" endmenu diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk index 53b4dfe15..65d3baba9 100644 --- a/mk/kernel-build.mk +++ b/mk/kernel-build.mk @@ -6,7 +6,11 @@ include $(ADK_TOPDIR)/mk/kernel-ver.mk include $(ADK_TOPDIR)/mk/linux.mk include $(ADK_TOPDIR)/mk/kernel-vars.mk +ifeq ($(ADK_TARGET_KERNEL_USE_CUSTOMCONFIG),y) +KERNEL_MODULES_USED:=$(shell grep -s =m $(ADK_TOPDIR)/$(ADK_TARGET_KERNEL_CUSTOMCONFIG_PATH)) +else KERNEL_MODULES_USED:=$(shell grep ^ADK_KERNEL $(ADK_TOPDIR)/.config|grep =m) +endif KERNEL_FILE:=$(ADK_TARGET_KERNEL) KERNEL_TARGET:=$(ADK_TARGET_KERNEL) @@ -38,12 +42,27 @@ $(LINUX_DIR)/.prepared: $(TOOLCHAIN_BUILD_DIR)/w-$(PKG_NAME)-$(PKG_VERSION)-$(PK mkdir -p $(LINUX_BUILD_DIR)/kmod-control touch $@ -$(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared $(BUILD_DIR)/.kernelconfig +ifeq ($(ADK_TARGET_KERNEL_USE_MINICONFIG),y) +$(LINUX_DIR)/.config: $(BUILD_DIR)/.kernelconfig +endif + +ifeq ($(ADK_TARGET_KERNEL_USE_CUSTOMCONFIG),y) +$(ADK_TOPDIR)/$(ADK_TARGET_KERNEL_CUSTOMCONFIG_PATH): +$(LINUX_DIR)/.config: $(ADK_TOPDIR)/$(ADK_TARGET_KERNEL_CUSTOMCONFIG_PATH) +endif + +$(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared $(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-configure.. " -for f in $(TARGETS);do if [ -f $$f ];then rm $$f;fi;done echo "-${KERNEL_RELEASE}" >${LINUX_DIR}/localversion ifeq ($(ADK_TARGET_KERNEL_USE_DEFCONFIG),y) ${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} $(ADK_TARGET_KERNEL_DEFCONFIG) $(MAKE_TRACE) +else ifeq ($(ADK_TARGET_KERNEL_USE_CUSTOMCONFIG),y) + @if [ ! -f $(ADK_TOPDIR)/$(ADK_TARGET_KERNEL_CUSTOMCONFIG_PATH) ];then \ + echo "no kernel configuration found in $(ADK_TOPDIR)/$(ADK_TARGET_KERNEL_CUSTOMCONFIG_PATH)"; \ + exit 1; \ + fi + ${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} KCONFIG_ALLCONFIG=$(ADK_TOPDIR)/$(ADK_TARGET_KERNEL_CUSTOMCONFIG_PATH) allnoconfig $(MAKE_TRACE) else $(CP) $(BUILD_DIR)/.kernelconfig $(LINUX_DIR)/mini.config ${KERNEL_MAKE_ENV} $(MAKE) -C "${LINUX_DIR}" ${KERNEL_MAKE_OPTS} KCONFIG_ALLCONFIG=mini.config allnoconfig $(MAKE_TRACE) diff --git a/target/Makefile b/target/Makefile index 68254867b..5af02d0f1 100644 --- a/target/Makefile +++ b/target/Makefile @@ -4,7 +4,11 @@ include $(ADK_TOPDIR)/rules.mk include $(ADK_TOPDIR)/mk/rootfs.mk +ifeq ($(ADK_TARGET_KERNEL_USE_CUSTOMCONFIG),y) +KERNEL_MODULES_USED:=$(shell grep -s =m $(ADK_TOPDIR)/$(ADK_TARGET_KERNEL_CUSTOMCONFIG_PATH)) +else KERNEL_MODULES_USED:=$(shell grep ^ADK_KERNEL $(ADK_TOPDIR)/.config|grep =m) +endif all: install diff --git a/target/config/Config.in.kernelcfg b/target/config/Config.in.kernelcfg index cbeacebcd..6159d059f 100644 --- a/target/config/Config.in.kernelcfg +++ b/target/config/Config.in.kernelcfg @@ -14,6 +14,9 @@ config ADK_TARGET_KERNEL_USE_MINICONFIG config ADK_TARGET_KERNEL_USE_DEFCONFIG bool "Use defconfig from Linux kernel" +config ADK_TARGET_KERNEL_USE_CUSTOMCONFIG + bool "Use custom Linux kernel configuration file" + endchoice config ADK_TARGET_KERNEL_DEFCONFIG @@ -30,3 +33,8 @@ config ADK_TARGET_KERNEL_DEFCONFIG default "orca_defconfig" if ADK_TARGET_SYSTEM_ANDES_AG101P default "bb.org_defconfig" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK +config ADK_TARGET_KERNEL_CUSTOMCONFIG_PATH + string "Kernel configuration file location" + depends on ADK_TARGET_KERNEL_USE_CUSTOMCONFIG + default ".kernelconfig" + -- cgit v1.2.3