summaryrefslogtreecommitdiff
path: root/kconfig/kconfig.mk
diff options
context:
space:
mode:
Diffstat (limited to 'kconfig/kconfig.mk')
-rw-r--r--kconfig/kconfig.mk121
1 files changed, 83 insertions, 38 deletions
diff --git a/kconfig/kconfig.mk b/kconfig/kconfig.mk
index 4bde05a..a1d1d7c 100644
--- a/kconfig/kconfig.mk
+++ b/kconfig/kconfig.mk
@@ -19,24 +19,31 @@ CFLAGS += -DKBUILD_NO_NLS
endif
# Build a list of all config files
-ARCHS = $(patsubst $(CT_LIB_DIR)/arch/%,%,$(wildcard $(CT_LIB_DIR)/arch/*))
-ARCH_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/arch/*/*.in)
+ARCH_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/arch/*/config.in)
+KERN_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)
DEBUG_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/debug/*.in)
TOOLS_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/tools/*.in)
STATIC_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config -type f -name '*.in')
GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in \
+ $(CT_TOP_DIR)/config.gen/kernel.in \
$(CT_TOP_DIR)/config.gen/debug.in \
$(CT_TOP_DIR)/config.gen/tools.in
CONFIG_FILES=$(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
-$(GEN_CONFIG_FILES):: $(CT_TOP_DIR)/config.gen
+# Build list of items
+ARCHS = $(patsubst $(CT_LIB_DIR)/arch/%/config.in,%,$(ARCH_CONFIG_FILES))
+KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERN_CONFIG_FILES))
+
+$(GEN_CONFIG_FILES): $(CT_TOP_DIR)/config.gen \
+ $(CT_LIB_DIR)/kconfig/kconfig.mk
$(CT_TOP_DIR)/config.gen:
@mkdir -p $(CT_TOP_DIR)/config.gen
-$(CT_TOP_DIR)/config.gen/arch.in:: $(ARCH_CONFIG_FILES)
+$(CT_TOP_DIR)/config.gen/arch.in: $(ARCH_CONFIG_FILES)
+ @echo ' IN config.gen/arch.in'
@(echo "# Architectures menu"; \
echo "# Generated file, do not edit!!!"; \
echo ""; \
@@ -57,46 +64,77 @@ $(CT_TOP_DIR)/config.gen/arch.in:: $(ARCH_CONFIG_FILES)
echo "endif"; \
echo ""; \
done; \
- ) >$@
-
-$(CT_TOP_DIR)/config.gen/debug.in:: $(DEBUG_CONFIG_FILES)
- @echo "# Debug facilities menu" >$@
- @echo "# Generated file, do not edit!!!" >>$@
- @echo "menu \"Debug facilities\"" >>$@
- @for f in $(patsubst $(CT_TOP_DIR)/%,%,$(wildcard $(CT_TOP_DIR)/config/debug/*.in)); do \
- echo "source $${f}"; \
- done >>$@
- @echo "endmenu" >>$@
-
-$(CT_TOP_DIR)/config.gen/tools.in:: $(TOOLS_CONFIG_FILES)
- @echo "# Tools facilities menu" >$@
- @echo "# Generated file, do not edit!!!" >>$@
- @echo "menu \"Tools facilities\"" >>$@
- @for f in $(patsubst $(CT_TOP_DIR)/%,%,$(wildcard $(CT_TOP_DIR)/config/tools/*.in)); do \
- echo "source $${f}"; \
- done >>$@
- @echo "endmenu" >>$@
-
-config menuconfig oldconfig defoldconfig extractconfig:: $(KCONFIG_TOP)
+ ) >$@
+
+$(CT_TOP_DIR)/config.gen/kernel.in: $(KERN_CONFIG_FILES)
+ @echo ' IN config.gen/kernel.in'
+ @(echo "# Kernel menu"; \
+ echo "# Generated file, do not edit!!!"; \
+ echo ""; \
+ for kern in $(KERNELS); do \
+ _exp="$${kern/*./}"; \
+ _kern1="$${kern/.experimental/}"; \
+ _kern2=$$(echo "$${_kern1}" |sed -r -e 's/[ -\/]/_/g;'); \
+ echo "config KERNEL_$${_kern2}"; \
+ echo " bool"; \
+ printf " prompt \"$${_kern1}"; \
+ if [ "$${_exp}" != "$${kern}" ]; then \
+ echo " (EXPERIMENTAL)\""; \
+ echo " depends on EXPERIMENTAL"; \
+ else \
+ echo "\""; \
+ fi; \
+ echo "if KERNEL_$${_kern2}"; \
+ echo "config KERNEL"; \
+ echo " default \"$${_kern1}\" if KERNEL_$${_kern2}"; \
+ echo "source config/kernel/$${kern}.in"; \
+ echo "endif"; \
+ echo ""; \
+ done; \
+ ) >$@
+
+$(CT_TOP_DIR)/config.gen/debug.in: $(DEBUG_CONFIG_FILES)
+ @echo ' IN config.gen/debug.in'
+ @(echo "# Debug facilities menu"; \
+ echo "# Generated file, do not edit!!!"; \
+ echo "menu \"Debug facilities\""; \
+ for f in $(patsubst $(CT_TOP_DIR)/%,%,$(DEBUG_CONFIG_FILES)); do \
+ echo "source $${f}"; \
+ done; \
+ echo "endmenu"; \
+ ) >$@
+
+$(CT_TOP_DIR)/config.gen/tools.in: $(TOOLS_CONFIG_FILES)
+ @echo ' IN config.gen/tools.in'
+ @(echo "# Tools facilities menu"; \
+ echo "# Generated file, do not edit!!!"; \
+ echo "menu \"Tools facilities\""; \
+ for f in $(patsubst $(CT_TOP_DIR)/%,%,$(TOOLS_CONFIG_FILES)); do \
+ echo "source $${f}"; \
+ done; \
+ echo "endmenu"; \
+ ) >$@
+
+config menuconfig oldconfig defoldconfig extractconfig: $(KCONFIG_TOP)
$(KCONFIG_TOP):
@ln -sf $(CT_LIB_DIR)/config config
-menuconfig:: $(obj)/mconf $(CONFIG_FILES)
- @$< $(KCONFIG_TOP)
+menuconfig: $(CONFIG_FILES) $(obj)/mconf
+ @$(obj)/mconf $(KCONFIG_TOP)
-config:: $(obj)/conf $(CONFIG_FILES)
- @$< $(KCONFIG_TOP)
+config: $(CONFIG_FILES) $(obj)/conf
+ @$(obj)/conf $(KCONFIG_TOP)
-oldconfig:: $(obj)/conf $(CONFIG_FILES)
- @$< -s $(KCONFIG_TOP)
+oldconfig: $(CONFIG_FILES) $(obj)/conf
+ @$(obj)/conf -s $(KCONFIG_TOP)
-defoldconfig:: $(obj)/conf $(CONFIG_FILES)
- @yes "" |$< -s $(KCONFIG_TOP) >/dev/null
+defoldconfig: $(CONFIG_FILES) $(obj)/conf
+ @yes "" |$(obj)/conf -s $(KCONFIG_TOP)
-extractconfig:: $(obj)/conf $(CONFIG_FILES)
+extractconfig: $(CONFIG_FILES) $(obj)/conf
@$(CT_LIB_DIR)/tools/extract-config.sh >.config
- @$< -s $(KCONFIG_TOP)
+ @$(obj)/conf -s $(KCONFIG_TOP)
# Help text used by make help
help-config::
@@ -111,9 +149,10 @@ help-config::
SHIPPED := $(CT_LIB_DIR)/kconfig/zconf.tab.c $(CT_LIB_DIR)/kconfig/lex.zconf.c $(CT_LIB_DIR)/kconfig/zconf.hash.c
%.c: %.c_shipped
+ @echo ' LN kconfig/$(notdir $@)'
@ln -s $(notdir $<) $@
-$(obj)/conf $(obj)/mconf:: $(obj)
+$(obj)/conf $(obj)/mconf: $(obj)
$(obj):
@mkdir -p $(obj)
@@ -128,12 +167,18 @@ FILES = $(CT_LIB_DIR)/kconfig/confdata.c \
$(CT_LIB_DIR)/kconfig/symbol.c \
$(CT_LIB_DIR)/kconfig/util.c
-$(obj)/mconf:: $(SHIPPED) $(CT_LIB_DIR)/kconfig/mconf.c $(HEADERS) $(FILES)
+$(obj)/mconf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/mconf.c \
+ $(HEADERS) $(FILES) \
+ $(CT_LIB_DIR)/kconfig/kconfig.mk
+ @echo ' LNK kconfig/mconf'
@$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{mconf.c,zconf.tab.c,lxdialog/*.c} \
$(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ccflags) \
$(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ldflags $(HOST_CC))
-$(obj)/conf:: $(SHIPPED) $(CT_LIB_DIR)/kconfig/conf.c $(HEADERS) $(FILES)
+$(obj)/conf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/conf.c \
+ $(HEADERS) $(FILES) \
+ $(CT_LIB_DIR)/kconfig/kconfig.mk
+ @echo ' LNK kconfig/conf'
@$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{conf.c,zconf.tab.c}
clean::