kconfig/kconfig.mk
changeset 861 5506fbbad59b
parent 859 db6a82f4b930
child 877 58b374931cc7
     1.1 --- a/kconfig/kconfig.mk	Mon Sep 15 21:03:24 2008 +0000
     1.2 +++ b/kconfig/kconfig.mk	Tue Sep 16 17:39:40 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::