Changeset 26498


Ignore:
Timestamp:
2011-04-06T16:48:55+02:00 (7 years ago)
Author:
nbd
Message:

build: clean up handling of the kernel config

  • support kernel config overlays in env/
  • allow overriding the target kernel config with CONFIG_TARGET=platform|subtarget|env
Location:
trunk/include
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/kernel-build.mk

    r22518 r26498  
    9090        ) > $$@ 
    9191 
    92   $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_CONFIG) $(GENERIC_LINUX_CONFIG) $(TOPDIR)/.config 
     92  $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_KCONFIG_LIST) $(TOPDIR)/.config 
    9393        $(Kernel/Configure) 
    9494        touch $$@ 
     
    115115 
    116116  oldconfig menuconfig nconfig: $(STAMP_PREPARED) $(STAMP_CHECKED) FORCE 
    117         [ -e "$(LINUX_CONFIG)" ] || touch "$(LINUX_CONFIG)" 
    118         $(LINUX_CONFCMD) > $(LINUX_DIR)/.config 
    119         touch $(LINUX_CONFIG) 
     117        rm -f $(STAMP_CONFIGURED) 
     118        $(LINUX_RECONF_CMD) > $(LINUX_DIR)/.config 
    120119        $(_SINGLE)$(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKEOPTS) $$@ 
    121         $(SCRIPT_DIR)/kconfig.pl '>' $(if $(LINUX_SUBCONFIG),'+' $(GENERIC_LINUX_CONFIG) $(LINUX_CONFIG),$(GENERIC_LINUX_CONFIG)) \ 
    122                 $(LINUX_DIR)/.config > $(if $(LINUX_SUBCONFIG),$(LINUX_SUBCONFIG),$(LINUX_CONFIG)) 
    123         $(Kernel/Configure) 
     120        $(LINUX_RECONF_DIFF) $(LINUX_DIR)/.config > $(LINUX_RECONFIG_TARGET) 
    124121 
    125122  install: $(LINUX_DIR)/.image 
  • trunk/include/kernel-defaults.mk

    r25928 r26498  
    7777 
    7878define Kernel/Configure/Default 
    79         $(LINUX_CONFCMD) > $(LINUX_DIR)/.config.target 
     79        $(LINUX_CONF_CMD) > $(LINUX_DIR)/.config.target 
    8080# copy CONFIG_KERNEL_* settings over to .config.target 
    8181        awk '/^(#[[:space:]]+)?CONFIG_KERNEL/{sub("CONFIG_KERNEL_","CONFIG_");print}' $(TOPDIR)/.config >> $(LINUX_DIR)/.config.target 
  • trunk/include/target.mk

    r26300 r26498  
    109109GENERIC_FILES_DIR := $(foreach dir,$(wildcard $(GENERIC_PLATFORM_DIR)/files $(GENERIC_PLATFORM_DIR)/files-$(KERNEL_PATCHVER)),"$(dir)") 
    110110 
    111 GENERIC_LINUX_CONFIG?=$(firstword $(wildcard $(GENERIC_PLATFORM_DIR)/config-$(KERNEL_PATCHVER) $(GENERIC_PLATFORM_DIR)/config-default)) 
    112 LINUX_CONFIG?=$(firstword $(wildcard $(foreach subdir,$(PLATFORM_DIR) $(PLATFORM_SUBDIR),$(subdir)/config-$(KERNEL_PATCHVER) $(subdir)/config-default)) $(PLATFORM_DIR)/config-$(KERNEL_PATCHVER)) 
    113 LINUX_SUBCONFIG?=$(if $(SHARED_LINUX_CONFIG),,$(firstword $(wildcard $(PLATFORM_SUBDIR)/config-$(KERNEL_PATCHVER) $(PLATFORM_SUBDIR)/config-default))) 
    114 ifeq ($(LINUX_CONFIG),$(LINUX_SUBCONFIG)) 
    115   LINUX_SUBCONFIG:= 
    116 endif 
    117 LINUX_CONFCMD=$(if $(LINUX_CONFIG), \ 
    118         $(if $(GENERIC_LINUX_CONFIG),,$(error The generic kernel config for your kernel version is missing)) \ 
    119         $(if $(LINUX_CONFIG),,$(error The target kernel config for your kernel version is missing)) \ 
    120         $(SCRIPT_DIR)/kconfig.pl \ 
    121                 + $(GENERIC_LINUX_CONFIG) \ 
    122                 $(if $(LINUX_SUBCONFIG),+ $(LINUX_CONFIG) $(LINUX_SUBCONFIG),$(LINUX_CONFIG)), \ 
    123         true) 
     111__config_name_list = $(1)/config-$(KERNEL_PATCHVER) $(1)/config-default 
     112__config_list = $(firstword $(wildcard $(call __config_name_list,$(1)))) 
     113find_kernel_config=$(if $(__config_list),$(__config_list),$(lastword $(__config_name_list))) 
     114 
     115GENERIC_LINUX_CONFIG:=$(call find_kernel_config,$(GENERIC_PLATFORM_DIR)) 
     116LINUX_TARGET_CONFIG:=$(call find_kernel_config,$(PLATFORM_DIR)) 
     117ifneq ($(PLATFORM_DIR),$(PLATFORM_SUBDIR)) 
     118  LINUX_SUBTARGET_CONFIG:=$(call find_kernel_config,$(PLATFORM_SUBDIR)) 
     119endif 
     120 
     121# config file list used for compiling 
     122LINUX_KCONFIG_LIST := $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(LINUX_SUBTARGET_CONFIG) $(TOPDIR)/env/kernel-config) 
     123 
     124# default config list for reconfiguring 
     125# defaults to subtarget if subtarget exists and target does not 
     126# defaults to target otherwise 
     127ifeq ($(if $(wildcard $(LINUX_TARGET_CONFIG)),,$(if $(LINUX_SUBTARGET_CONFIG),1)),1) 
     128  LINUX_RECONFIG_LIST := $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(LINUX_SUBTARGET_CONFIG)) 
     129  LINUX_RECONFIG_TARGET := $(LINUX_SUBTARGET_CONFIG) 
     130else 
     131  LINUX_RECONFIG_LIST := $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG)) 
     132  LINUX_RECONFIG_TARGET := $(LINUX_TARGET_CONFIG) 
     133endif 
     134 
     135# select the config file to be cahnged by kernel_menuconfig/kernel_oldconfig 
     136ifeq ($(CONFIG_TARGET),platform) 
     137  LINUX_RECONFIG_LIST := $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG)) 
     138  LINUX_RECONFIG_TARGET := $(LINUX_TARGET_CONFIG) 
     139endif 
     140ifeq ($(CONFIG_TARGET),subtarget) 
     141  ifeq ($(wildcard $(LINUX_SUBTARGET_CONFIG)),) 
     142    $(error Subtarget not available, cannot reconfigure) 
     143  else 
     144    LINUX_RECONFIG_LIST := $(wildcard $(GENERIC_LINUX_CONFIG) $(LINUX_TARGET_CONFIG) $(LINUX_SUBTARGET_CONFIG)) 
     145    LINUX_RECONFIG_TARGET := $(LINUX_SUBTARGET_CONFIG) 
     146  endif 
     147endif 
     148ifeq ($(CONFIG_TARGET),env) 
     149  LINUX_RECONFIG_LIST := $(LINUX_KCONFIG_LIST) 
     150  LINUX_RECONFIG_TARGET := $(TOPDIR)/env/kernel-config 
     151endif 
     152 
     153__linux_confcmd = $(SCRIPT_DIR)/kconfig.pl $(2) $(patsubst %,+,$(wordlist 2,9999,$(1))) $(1) 
     154 
     155LINUX_CONF_CMD = $(call __linux_confcmd,$(LINUX_KCONFIG_LIST),) 
     156LINUX_RECONF_CMD = $(call __linux_confcmd,$(LINUX_RECONFIG_LIST),) 
     157LINUX_RECONF_DIFF = $(call __linux_confcmd,$(filter-out $(LINUX_RECONFIG_TARGET),$(LINUX_RECONFIG_LIST)),'>') 
    124158 
    125159ifeq ($(DUMP),1) 
     
    128162  ifneq ($(BOARD),) 
    129163    TMP_CONFIG:=$(TMP_DIR)/.kconfig-$(call target_conf,$(TARGETID)) 
    130     $(TMP_CONFIG): $(GENERIC_LINUX_CONFIG) $(LINUX_CONFIG) $(LINUX_SUBCONFIG) 
    131                 $(LINUX_CONFCMD) > $@ || rm -f $@ 
     164    $(TMP_CONFIG): $(LINUX_KCONFIG_LIST) 
     165                $(LINUX_CONF_CMD) > $@ || rm -f $@ 
    132166    -include $(TMP_CONFIG) 
    133167    .SILENT: $(TMP_CONFIG) 
Note: See TracChangeset for help on using the changeset viewer.