1.1 --- a/kconfig/kconfig.mk Mon Sep 15 21:03:24 2008 +0000
1.2 +++ b/kconfig/kconfig.mk Mon Sep 22 22:01:43 2008 +0000
1.3 @@ -19,24 +19,31 @@
1.4 endif
1.5
1.6 # Build a list of all config files
1.7 -ARCHS = $(patsubst $(CT_LIB_DIR)/arch/%,%,$(wildcard $(CT_LIB_DIR)/arch/*))
1.8 -ARCH_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/arch/*/*.in)
1.9 +ARCH_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/arch/*/config.in)
1.10 +KERN_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)
1.11 DEBUG_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/debug/*.in)
1.12 TOOLS_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/tools/*.in)
1.13
1.14 STATIC_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config -type f -name '*.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/debug.in \
1.18 $(CT_TOP_DIR)/config.gen/tools.in
1.19
1.20 CONFIG_FILES=$(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
1.21
1.22 -$(GEN_CONFIG_FILES):: $(CT_TOP_DIR)/config.gen
1.23 +# Build list of items
1.24 +ARCHS = $(patsubst $(CT_LIB_DIR)/arch/%/config.in,%,$(ARCH_CONFIG_FILES))
1.25 +KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERN_CONFIG_FILES))
1.26 +
1.27 +$(GEN_CONFIG_FILES): $(CT_TOP_DIR)/config.gen \
1.28 + $(CT_LIB_DIR)/kconfig/kconfig.mk
1.29
1.30 $(CT_TOP_DIR)/config.gen:
1.31 @mkdir -p $(CT_TOP_DIR)/config.gen
1.32
1.33 -$(CT_TOP_DIR)/config.gen/arch.in:: $(ARCH_CONFIG_FILES)
1.34 +$(CT_TOP_DIR)/config.gen/arch.in: $(ARCH_CONFIG_FILES)
1.35 + @echo ' IN config.gen/arch.in'
1.36 @(echo "# Architectures menu"; \
1.37 echo "# Generated file, do not edit!!!"; \
1.38 echo ""; \
1.39 @@ -57,46 +64,77 @@
1.40 echo "endif"; \
1.41 echo ""; \
1.42 done; \
1.43 - ) >$@
1.44 + ) >$@
1.45
1.46 -$(CT_TOP_DIR)/config.gen/debug.in:: $(DEBUG_CONFIG_FILES)
1.47 - @echo "# Debug facilities menu" >$@
1.48 - @echo "# Generated file, do not edit!!!" >>$@
1.49 - @echo "menu \"Debug facilities\"" >>$@
1.50 - @for f in $(patsubst $(CT_TOP_DIR)/%,%,$(wildcard $(CT_TOP_DIR)/config/debug/*.in)); do \
1.51 - echo "source $${f}"; \
1.52 - done >>$@
1.53 - @echo "endmenu" >>$@
1.54 +$(CT_TOP_DIR)/config.gen/kernel.in: $(KERN_CONFIG_FILES)
1.55 + @echo ' IN config.gen/kernel.in'
1.56 + @(echo "# Kernel menu"; \
1.57 + echo "# Generated file, do not edit!!!"; \
1.58 + echo ""; \
1.59 + for kern in $(KERNELS); do \
1.60 + _exp="$${kern/*./}"; \
1.61 + _kern1="$${kern/.experimental/}"; \
1.62 + _kern2=$$(echo "$${_kern1}" |sed -r -e 's/[ -\/]/_/g;'); \
1.63 + echo "config KERNEL_$${_kern2}"; \
1.64 + echo " bool"; \
1.65 + printf " prompt \"$${_kern1}"; \
1.66 + if [ "$${_exp}" != "$${kern}" ]; then \
1.67 + echo " (EXPERIMENTAL)\""; \
1.68 + echo " depends on EXPERIMENTAL"; \
1.69 + else \
1.70 + echo "\""; \
1.71 + fi; \
1.72 + echo "if KERNEL_$${_kern2}"; \
1.73 + echo "config KERNEL"; \
1.74 + echo " default \"$${_kern1}\" if KERNEL_$${_kern2}"; \
1.75 + echo "source config/kernel/$${kern}.in"; \
1.76 + echo "endif"; \
1.77 + echo ""; \
1.78 + done; \
1.79 + ) >$@
1.80
1.81 -$(CT_TOP_DIR)/config.gen/tools.in:: $(TOOLS_CONFIG_FILES)
1.82 - @echo "# Tools facilities menu" >$@
1.83 - @echo "# Generated file, do not edit!!!" >>$@
1.84 - @echo "menu \"Tools facilities\"" >>$@
1.85 - @for f in $(patsubst $(CT_TOP_DIR)/%,%,$(wildcard $(CT_TOP_DIR)/config/tools/*.in)); do \
1.86 - echo "source $${f}"; \
1.87 - done >>$@
1.88 - @echo "endmenu" >>$@
1.89 +$(CT_TOP_DIR)/config.gen/debug.in: $(DEBUG_CONFIG_FILES)
1.90 + @echo ' IN config.gen/debug.in'
1.91 + @(echo "# Debug facilities menu"; \
1.92 + echo "# Generated file, do not edit!!!"; \
1.93 + echo "menu \"Debug facilities\""; \
1.94 + for f in $(patsubst $(CT_TOP_DIR)/%,%,$(DEBUG_CONFIG_FILES)); do \
1.95 + echo "source $${f}"; \
1.96 + done; \
1.97 + echo "endmenu"; \
1.98 + ) >$@
1.99
1.100 -config menuconfig oldconfig defoldconfig extractconfig:: $(KCONFIG_TOP)
1.101 +$(CT_TOP_DIR)/config.gen/tools.in: $(TOOLS_CONFIG_FILES)
1.102 + @echo ' IN config.gen/tools.in'
1.103 + @(echo "# Tools facilities menu"; \
1.104 + echo "# Generated file, do not edit!!!"; \
1.105 + echo "menu \"Tools facilities\""; \
1.106 + for f in $(patsubst $(CT_TOP_DIR)/%,%,$(TOOLS_CONFIG_FILES)); do \
1.107 + echo "source $${f}"; \
1.108 + done; \
1.109 + echo "endmenu"; \
1.110 + ) >$@
1.111 +
1.112 +config menuconfig oldconfig defoldconfig extractconfig: $(KCONFIG_TOP)
1.113
1.114 $(KCONFIG_TOP):
1.115 @ln -sf $(CT_LIB_DIR)/config config
1.116
1.117 -menuconfig:: $(obj)/mconf $(CONFIG_FILES)
1.118 - @$< $(KCONFIG_TOP)
1.119 +menuconfig: $(CONFIG_FILES) $(obj)/mconf
1.120 + @$(obj)/mconf $(KCONFIG_TOP)
1.121
1.122 -config:: $(obj)/conf $(CONFIG_FILES)
1.123 - @$< $(KCONFIG_TOP)
1.124 +config: $(CONFIG_FILES) $(obj)/conf
1.125 + @$(obj)/conf $(KCONFIG_TOP)
1.126
1.127 -oldconfig:: $(obj)/conf $(CONFIG_FILES)
1.128 - @$< -s $(KCONFIG_TOP)
1.129 +oldconfig: $(CONFIG_FILES) $(obj)/conf
1.130 + @$(obj)/conf -s $(KCONFIG_TOP)
1.131
1.132 -defoldconfig:: $(obj)/conf $(CONFIG_FILES)
1.133 - @yes "" |$< -s $(KCONFIG_TOP) >/dev/null
1.134 +defoldconfig: $(CONFIG_FILES) $(obj)/conf
1.135 + @yes "" |$(obj)/conf -s $(KCONFIG_TOP)
1.136
1.137 -extractconfig:: $(obj)/conf $(CONFIG_FILES)
1.138 +extractconfig: $(CONFIG_FILES) $(obj)/conf
1.139 @$(CT_LIB_DIR)/tools/extract-config.sh >.config
1.140 - @$< -s $(KCONFIG_TOP)
1.141 + @$(obj)/conf -s $(KCONFIG_TOP)
1.142
1.143 # Help text used by make help
1.144 help-config::
1.145 @@ -111,9 +149,10 @@
1.146 SHIPPED := $(CT_LIB_DIR)/kconfig/zconf.tab.c $(CT_LIB_DIR)/kconfig/lex.zconf.c $(CT_LIB_DIR)/kconfig/zconf.hash.c
1.147
1.148 %.c: %.c_shipped
1.149 + @echo ' LN kconfig/$(notdir $@)'
1.150 @ln -s $(notdir $<) $@
1.151
1.152 -$(obj)/conf $(obj)/mconf:: $(obj)
1.153 +$(obj)/conf $(obj)/mconf: $(obj)
1.154
1.155 $(obj):
1.156 @mkdir -p $(obj)
1.157 @@ -128,12 +167,18 @@
1.158 $(CT_LIB_DIR)/kconfig/symbol.c \
1.159 $(CT_LIB_DIR)/kconfig/util.c
1.160
1.161 -$(obj)/mconf:: $(SHIPPED) $(CT_LIB_DIR)/kconfig/mconf.c $(HEADERS) $(FILES)
1.162 +$(obj)/mconf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/mconf.c \
1.163 + $(HEADERS) $(FILES) \
1.164 + $(CT_LIB_DIR)/kconfig/kconfig.mk
1.165 + @echo ' LNK kconfig/mconf'
1.166 @$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{mconf.c,zconf.tab.c,lxdialog/*.c} \
1.167 $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ccflags) \
1.168 $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ldflags $(HOST_CC))
1.169
1.170 -$(obj)/conf:: $(SHIPPED) $(CT_LIB_DIR)/kconfig/conf.c $(HEADERS) $(FILES)
1.171 +$(obj)/conf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/conf.c \
1.172 + $(HEADERS) $(FILES) \
1.173 + $(CT_LIB_DIR)/kconfig/kconfig.mk
1.174 + @echo ' LNK kconfig/conf'
1.175 @$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{conf.c,zconf.tab.c}
1.176
1.177 clean::