Commonalise config.gen/{arch,kernel}.in generation.
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Thu Oct 09 17:40:15 2008 +0000 (2008-10-09)
changeset 912e611d558eb25
parent 911 e0a3d5c1ecbd
child 913 194c03ec22c3
Commonalise config.gen/{arch,kernel}.in generation.

/trunk/kconfig/kconfig.mk | 76 34 42 0 ++++++++++++++++++++++++-----------------------------
1 file changed, 34 insertions(+), 42 deletions(-)
kconfig/kconfig.mk
     1.1 --- a/kconfig/kconfig.mk	Thu Oct 09 13:15:46 2008 +0000
     1.2 +++ b/kconfig/kconfig.mk	Thu Oct 09 17:40:15 2008 +0000
     1.3 @@ -19,10 +19,10 @@
     1.4  endif
     1.5  
     1.6  # Build a list of all config files
     1.7 -ARCH_CONFIG_FILES  = $(wildcard $(CT_LIB_DIR)/config/arch/*.in)
     1.8 -KERN_CONFIG_FILES  = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)
     1.9 -DEBUG_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/debug/*.in)
    1.10 -TOOLS_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/tools/*.in)
    1.11 +ARCH_CONFIG_FILES   = $(wildcard $(CT_LIB_DIR)/config/arch/*.in)
    1.12 +KERNEL_CONFIG_FILES   = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)
    1.13 +DEBUG_CONFIG_FILES  = $(wildcard $(CT_LIB_DIR)/config/debug/*.in)
    1.14 +TOOLS_CONFIG_FILES  = $(wildcard $(CT_LIB_DIR)/config/tools/*.in)
    1.15  
    1.16  STATIC_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config -type f -name '*.in')
    1.17  GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in	\
    1.18 @@ -34,7 +34,7 @@
    1.19  
    1.20  # Build list of items
    1.21  ARCHS   = $(patsubst $(CT_LIB_DIR)/config/arch/%.in,%,$(ARCH_CONFIG_FILES))
    1.22 -KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERN_CONFIG_FILES))
    1.23 +KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERNEL_CONFIG_FILES))
    1.24  
    1.25  $(GEN_CONFIG_FILES): $(CT_TOP_DIR)/config.gen           \
    1.26                       $(CT_LIB_DIR)/kconfig/kconfig.mk
    1.27 @@ -42,55 +42,47 @@
    1.28  $(CT_TOP_DIR)/config.gen: $(KCONFIG_TOP)
    1.29  	@mkdir -p $(CT_TOP_DIR)/config.gen
    1.30  
    1.31 -$(CT_TOP_DIR)/config.gen/arch.in: $(ARCH_CONFIG_FILES)
    1.32 -	@echo '  IN   config.gen/arch.in'
    1.33 -	@(echo "# Architectures menu";                                                      \
    1.34 +# Function build_gen_choice_in:
    1.35 +# $1 : destination file
    1.36 +# $2 : name for the entries family (eg. Architecture, kernel...)
    1.37 +# $3 : prefix for the choice entries (eg. ARCH, KERNEL...)
    1.38 +# $4 : base directory containing config files
    1.39 +# $5 : list of config entries (eg. for architectures: "alpha arm ia64"...,
    1.40 +#      and for kernels: "bare-metal linux"...)
    1.41 +# Example to build the kernels generated config file:
    1.42 +# $(call build_gen_choice_in,config.gen/kernel.in,Kernel,KERNEL,config/kernel,$(KERNELS))
    1.43 +define build_gen_choice_in
    1.44 +	@echo '  IN   $(1)'
    1.45 +	@(echo "# $(2) menu";                                                               \
    1.46  	  echo "# Generated file, do not edit!!!";                                          \
    1.47  	  echo "";                                                                          \
    1.48 -	  for arch in $(ARCHS); do                                                          \
    1.49 -	    _arch=$$(echo "$${arch}" |sed -r -s -e 's/[-.+]/_/g;');                         \
    1.50 -	    echo "config ARCH_$${_arch}";                                                   \
    1.51 +	  for entry in $(5); do                                                             \
    1.52 +	    file="$(4)/$${entry}.in";                                                       \
    1.53 +	    _entry=$$(echo "$${entry}" |sed -r -s -e 's/[-.+]/_/g;');                       \
    1.54 +	    echo "config $(3)_$${_entry}";                                                  \
    1.55  	    echo "    bool";                                                                \
    1.56 -	    printf "    prompt \"$${arch}";                                                 \
    1.57 -	    if grep -E '^# +EXPERIMENTAL$$' config/arch/$${arch}.in >/dev/null 2>&1; then   \
    1.58 +	    printf "    prompt \"$${entry}";                                                \
    1.59 +	    if grep -E '^# +EXPERIMENTAL$$' $${file} >/dev/null 2>&1; then                  \
    1.60  	      echo " (EXPERIMENTAL)\"";                                                     \
    1.61  	      echo "    depends on EXPERIMENTAL";                                           \
    1.62  	    else                                                                            \
    1.63  	      echo "\"";                                                                    \
    1.64  	    fi;                                                                             \
    1.65 -	    echo "if ARCH_$${_arch}";                                                       \
    1.66 -	    echo "config ARCH";                                                             \
    1.67 -	    echo "    default \"$${arch}\" if ARCH_$${_arch}";                              \
    1.68 -	    echo "source config/arch/$${arch}.in";                                          \
    1.69 +	    echo "if $(3)_$${_entry}";                                                      \
    1.70 +	    echo "config $(3)";                                                             \
    1.71 +	    echo "    default \"$${entry}\" if $(3)_$${_entry}";                            \
    1.72 +	    echo "source $${file}";                                                         \
    1.73  	    echo "endif";                                                                   \
    1.74  	    echo "";                                                                        \
    1.75  	  done;                                                                             \
    1.76 -	 ) >$@
    1.77 +	 ) >$(1)
    1.78 +endef
    1.79  
    1.80 -$(CT_TOP_DIR)/config.gen/kernel.in: $(KERN_CONFIG_FILES)
    1.81 -	@echo '  IN   config.gen/kernel.in'
    1.82 -	@(echo "# Kernel menu";                                                             \
    1.83 -	  echo "# Generated file, do not edit!!!";                                          \
    1.84 -	  echo "";                                                                          \
    1.85 -	  for kern in $(KERNELS); do                                                        \
    1.86 -	    _kern=$$(echo "$${kern}" |sed -r -s -e 's/[-.+]/_/g;');                         \
    1.87 -	    echo "config KERNEL_$${_kern}";                                                 \
    1.88 -	    echo "    bool";                                                                \
    1.89 -	    printf "    prompt \"$${kern}";                                                 \
    1.90 -	    if grep -E '^# +EXPERIMENTAL$$' config/kernel/$${kern}.in >/dev/null 2>&1; then \
    1.91 -	      echo " (EXPERIMENTAL)\"";                                                     \
    1.92 -	      echo "  depends on EXPERIMENTAL";                                             \
    1.93 -	    else                                                                            \
    1.94 -	      echo "\"";                                                                    \
    1.95 -		fi;                                                                             \
    1.96 -	    echo "if KERNEL_$${_kern}";                                                     \
    1.97 -	    echo "config KERNEL";                                                           \
    1.98 -	    echo "    default \"$${kern}\" if KERNEL_$${_kern}";                            \
    1.99 -	    echo "source config/kernel/$${kern}.in";                                        \
   1.100 -	    echo "endif";                                                                   \
   1.101 -	    echo "";                                                                        \
   1.102 -	  done;                                                                             \
   1.103 -	 ) >$@
   1.104 +$(CT_TOP_DIR)/config.gen/arch.in: $(ARCH_CONFIG_FILES)
   1.105 +	$(call build_gen_choice_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Architecture,ARCH,config/arch,$(ARCHS))
   1.106 +
   1.107 +$(CT_TOP_DIR)/config.gen/kernel.in: $(KERNEL_CONFIG_FILES)
   1.108 +	$(call build_gen_choice_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Kernel,KERNEL,config/kernel,$(KERNELS))
   1.109  
   1.110  $(CT_TOP_DIR)/config.gen/debug.in: $(DEBUG_CONFIG_FILES)
   1.111  	@echo '  IN   config.gen/debug.in'