kconfig/kconfig.mk
changeset 916 68af6b83ff7e
parent 912 e611d558eb25
child 920 44dd635202a4
     1.1 --- a/kconfig/kconfig.mk	Thu Oct 09 17:40:15 2008 +0000
     1.2 +++ b/kconfig/kconfig.mk	Fri Oct 10 14:30:44 2008 +0000
     1.3 @@ -22,19 +22,21 @@
     1.4  ARCH_CONFIG_FILES   = $(wildcard $(CT_LIB_DIR)/config/arch/*.in)
     1.5  KERNEL_CONFIG_FILES   = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)
     1.6  DEBUG_CONFIG_FILES  = $(wildcard $(CT_LIB_DIR)/config/debug/*.in)
     1.7 -TOOLS_CONFIG_FILES  = $(wildcard $(CT_LIB_DIR)/config/tools/*.in)
     1.8 +TOOL_CONFIG_FILES  = $(wildcard $(CT_LIB_DIR)/config/tools/*.in)
     1.9  
    1.10  STATIC_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config -type f -name '*.in')
    1.11 -GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in	\
    1.12 -				 $(CT_TOP_DIR)/config.gen/kernel.in	\
    1.13 -				 $(CT_TOP_DIR)/config.gen/debug.in	\
    1.14 -				 $(CT_TOP_DIR)/config.gen/tools.in
    1.15 +GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in   \
    1.16 +                 $(CT_TOP_DIR)/config.gen/kernel.in \
    1.17 +                 $(CT_TOP_DIR)/config.gen/tools.in  \
    1.18 +                 $(CT_TOP_DIR)/config.gen/debug.in
    1.19  
    1.20  CONFIG_FILES=$(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
    1.21  
    1.22  # Build list of items
    1.23  ARCHS   = $(patsubst $(CT_LIB_DIR)/config/arch/%.in,%,$(ARCH_CONFIG_FILES))
    1.24  KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERNEL_CONFIG_FILES))
    1.25 +DEBUGS  = $(patsubst $(CT_LIB_DIR)/config/debug/%.in,%,$(DEBUG_CONFIG_FILES))
    1.26 +TOOLS   = $(patsubst $(CT_LIB_DIR)/config/tools/%.in,%,$(TOOL_CONFIG_FILES))
    1.27  
    1.28  $(GEN_CONFIG_FILES): $(CT_TOP_DIR)/config.gen           \
    1.29                       $(CT_LIB_DIR)/kconfig/kconfig.mk
    1.30 @@ -84,27 +86,45 @@
    1.31  $(CT_TOP_DIR)/config.gen/kernel.in: $(KERNEL_CONFIG_FILES)
    1.32  	$(call build_gen_choice_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Kernel,KERNEL,config/kernel,$(KERNELS))
    1.33  
    1.34 +# Function build_gen_menu_in:
    1.35 +# $1 : destination file
    1.36 +# $2 : name of entries family (eg. Tools, Debug...)
    1.37 +# $3 : prefix for the menu entries (eg. TOOL, DEBUG)
    1.38 +# $4 : base directory containing config files
    1.39 +# $5 : list of config entries (eg. for tools: "libelf sstrip"..., and for
    1.40 +#      debug: "dmalloc duma gdb"...)
    1.41 +# Example to build the tools generated config file:
    1.42 +# $(call build_gen_menu_in,config.gen/tools.in,Tools,TOOL,config/tools,$(TOOLS))
    1.43 +define build_gen_menu_in
    1.44 +	@echo '  IN   $(1)'
    1.45 +	@(echo "# $(2) facilities menu";                                    \
    1.46 +	  echo "# Generated file, do not edit!!!";                          \
    1.47 +	  echo "";                                                          \
    1.48 +	  for entry in $(5); do                                             \
    1.49 +	    file="$(4)/$${entry}.in";                                       \
    1.50 +	    _entry=$$(echo "$${entry}" |sed -r -s -e 's/[-.+]/_/g;');       \
    1.51 +	    echo "menuconfig $(3)_$${_entry}";                              \
    1.52 +	    echo "    bool";                                                \
    1.53 +	    printf "    prompt \"$${entry}";                                \
    1.54 +	    if grep -E '^# +EXPERIMENTAL$$' $${file} >/dev/null 2>&1; then  \
    1.55 +	      echo " (EXPERIMENTAL)\"";                                     \
    1.56 +	      echo "    depends on EXPERIMENTAL";                           \
    1.57 +	    else                                                            \
    1.58 +	      echo "\"";                                                    \
    1.59 +	    fi;                                                             \
    1.60 +	    echo "if $(3)_$${_entry}";                                      \
    1.61 +	    echo "source $${file}";                                         \
    1.62 +	    echo "endif";                                                   \
    1.63 +	    echo "";                                                        \
    1.64 +	  done;                                                             \
    1.65 +	 ) >$(1)
    1.66 +endef
    1.67 +
    1.68 +$(CT_TOP_DIR)/config.gen/tools.in: $(TOOL_CONFIG_FILES)
    1.69 +	$(call build_gen_menu_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Tools,TOOL,config/tools,$(TOOLS))
    1.70 +
    1.71  $(CT_TOP_DIR)/config.gen/debug.in: $(DEBUG_CONFIG_FILES)
    1.72 -	@echo '  IN   config.gen/debug.in'
    1.73 -	@(echo "# Debug facilities menu";                                   \
    1.74 -	  echo "# Generated file, do not edit!!!";                          \
    1.75 -	  echo "menu \"Debug facilities\"";                                 \
    1.76 -	  for f in $(patsubst $(CT_LIB_DIR)/%,%,$(DEBUG_CONFIG_FILES)); do  \
    1.77 -	     echo "source $${f}";                                           \
    1.78 -	  done;                                                             \
    1.79 -	  echo "endmenu";                                                   \
    1.80 -	 ) >$@
    1.81 -
    1.82 -$(CT_TOP_DIR)/config.gen/tools.in: $(TOOLS_CONFIG_FILES)
    1.83 -	@echo '  IN   config.gen/tools.in'
    1.84 -	@(echo "# Tools facilities menu";                                   \
    1.85 -	  echo "# Generated file, do not edit!!!";                          \
    1.86 -	  echo "menu \"Tools facilities\"";                                 \
    1.87 -	  for f in $(patsubst $(CT_LIB_DIR)/%,%,$(TOOLS_CONFIG_FILES)); do  \
    1.88 -	     echo "source $${f}";                                           \
    1.89 -	  done;                                                             \
    1.90 -	  echo "endmenu";                                                   \
    1.91 -	 ) >$@
    1.92 +	$(call build_gen_menu_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Debug,DEBUG,config/debug,$(DEBUGS))
    1.93  
    1.94  config menuconfig oldconfig defoldconfig: $(KCONFIG_TOP)
    1.95