1.1 --- a/kconfig/kconfig.mk Sun Oct 05 15:32:00 2008 +0000
1.2 +++ b/kconfig/kconfig.mk Fri Oct 10 08:46:29 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'