config/config.mk
changeset 2069 366bd2b22675
parent 1878 2c577664a23d
child 2444 896cb0d36c1a
     1.1 --- a/config/config.mk	Thu Apr 01 19:52:54 2010 +0200
     1.2 +++ b/config/config.mk	Thu Aug 05 17:59:51 2010 +0200
     1.3 @@ -9,16 +9,20 @@
     1.4  KCONFIG_TOP = config/config.in
     1.5  
     1.6  # Build the list of all source config files
     1.7 -STATIC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(shell find $(CT_LIB_DIR)/config -type f -name '*.in' 2>/dev/null))
     1.8 +STATIC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(shell find $(CT_LIB_DIR)/config -type f \( -name '*.in' -o -name '*.in.2' \) 2>/dev/null))
     1.9  # ... and how to access them:
    1.10  $(STATIC_CONFIG_FILES): config
    1.11  
    1.12  # Build a list of per-component-type source config files
    1.13 -ARCH_CONFIG_FILES   = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/arch/*.in))
    1.14 -KERNEL_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/kernel/*.in))
    1.15 -CC_CONFIG_FILES     = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/cc/*.in))
    1.16 -LIBC_CONFIG_FILES   = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/libc/*.in))
    1.17 -DEBUG_CONFIG_FILES  = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/debug/*.in))
    1.18 +ARCH_CONFIG_FILES     = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/arch/*.in))
    1.19 +ARCH_CONFIG_FILES_2   = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/arch/*.in.2))
    1.20 +KERNEL_CONFIG_FILES   = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/kernel/*.in))
    1.21 +KERNEL_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/kernel/*.in.2))
    1.22 +CC_CONFIG_FILES       = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/cc/*.in))
    1.23 +CC_CONFIG_FILES_2     = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/cc/*.in.2))
    1.24 +LIBC_CONFIG_FILES     = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/libc/*.in))
    1.25 +LIBC_CONFIG_FILES_2   = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/libc/*.in.2))
    1.26 +DEBUG_CONFIG_FILES    = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/debug/*.in))
    1.27  
    1.28  # Build the list of generated config files
    1.29  GEN_CONFIG_FILES = config.gen/arch.in     \
    1.30 @@ -117,6 +121,20 @@
    1.31  	    echo "source \"$${file}\"";                                         \
    1.32  	  done;                                                                 \
    1.33  	 ) >$(1)
    1.34 +	$(SILENT)(echo "# $(2) second part options";                            \
    1.35 +	  echo "# Generated file, do not edit!!!";                              \
    1.36 +	  for entry in $(6); do                                                 \
    1.37 +	    file="$(4)/$${entry}.in";                                           \
    1.38 +	    _entry=$$(echo "$${entry}" |$(sed) -r -s -e 's/[-.+]/_/g;');        \
    1.39 +	    if [ -f "$${file}.2" ]; then                                        \
    1.40 +	      echo "";                                                          \
    1.41 +	      echo "if $(3)_$${_entry}";                                        \
    1.42 +	      echo "comment \"$${entry} other options\"";                       \
    1.43 +	      echo "source \"$${file}.2\"";                                     \
    1.44 +	      echo "endif";                                                     \
    1.45 +	    fi;                                                                 \
    1.46 +	  done;                                                                 \
    1.47 +	 ) >$(1).2
    1.48  endef
    1.49  
    1.50  # The function 'build_gen_menu_in' builds a menuconfig for each component in
    1.51 @@ -154,16 +172,18 @@
    1.52  #-----------------------------------------------------------
    1.53  # The rules for the generated config files
    1.54  
    1.55 -config.gen/arch.in: $(ARCH_CONFIG_FILES)
    1.56 +# WARNING! If a .in file disapears between two runs, that will NOT be detected!
    1.57 +
    1.58 +config.gen/arch.in: $(ARCH_CONFIG_FILES) $(ARCH_CONFIG_FILES_2)
    1.59  	$(call build_gen_choice_in,$@,Target Architecture,ARCH,config/arch,Y,$(ARCHS))
    1.60  
    1.61 -config.gen/kernel.in: $(KERNEL_CONFIG_FILES)
    1.62 +config.gen/kernel.in: $(KERNEL_CONFIG_FILES) $(KERNEL_CONFIG_FILES_2)
    1.63  	$(call build_gen_choice_in,$@,Target OS,KERNEL,config/kernel,Y,$(KERNELS))
    1.64  
    1.65 -config.gen/cc.in: $(CC_CONFIG_FILES)
    1.66 +config.gen/cc.in: $(CC_CONFIG_FILES) $(CC_CONFIG_FILES_2)
    1.67  	$(call build_gen_choice_in,$@,C compiler,CC,config/cc,,$(CCS))
    1.68  
    1.69 -config.gen/libc.in: $(LIBC_CONFIG_FILES)
    1.70 +config.gen/libc.in: $(LIBC_CONFIG_FILES) $(LIBC_CONFIG_FILES_2)
    1.71  	$(call build_gen_choice_in,$@,C library,LIBC,config/libc,Y,$(LIBCS))
    1.72  
    1.73  config.gen/debug.in: $(DEBUG_CONFIG_FILES)