1.1 --- a/kconfig/kconfig.mk Thu Oct 09 17:40:15 2008 +0000
1.2 +++ b/kconfig/kconfig.mk Sun Oct 12 10:38:02 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