kconfig/kconfig.mk
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Sep 30 18:19:18 2008 +0000 (2008-09-30)
changeset 892 187d34a9adf4
parent 890 6227df6bbb79
child 894 c444ce4b51b9
permissions -rw-r--r--
Better handle the second pass core gcc build, differentiating between gcc prior to 4.3 with gcc from 4.3.
Simplify detecting wether gcc is 4.3 and later, or older than 4.3 (we already know from .config).

/trunk/scripts/build/cc/gcc.sh | 22 13 9 0 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
     1 # ===========================================================================
     2 # crosstool-NG configuration targets
     3 # These targets are used from top-level makefile
     4 
     5 # Derive the project version from, well, the project version:
     6 export PROJECTVERSION=$(CT_VERSION)
     7 
     8 KCONFIG_TOP = config/config.in
     9 obj = $(CT_TOP_DIR)/kconfig
    10 PHONY += clean help oldconfig menuconfig config defoldconfig extractconfig
    11 
    12 # Darwin (MacOS-X) does not have proper libintl support
    13 ifeq ($(shell uname -s),Darwin)
    14 KBUILD_NO_NLS:=1
    15 endif
    16 
    17 ifneq ($(KBUILD_NO_NLS),)
    18 CFLAGS += -DKBUILD_NO_NLS
    19 endif
    20 
    21 # Build a list of all config files
    22 ARCH_CONFIG_FILES  = $(wildcard $(CT_LIB_DIR)/arch/*/config.in)
    23 KERN_CONFIG_FILES  = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)
    24 DEBUG_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/debug/*.in)
    25 TOOLS_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/tools/*.in)
    26 
    27 STATIC_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config -type f -name '*.in')
    28 GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in	\
    29 				 $(CT_TOP_DIR)/config.gen/kernel.in	\
    30 				 $(CT_TOP_DIR)/config.gen/debug.in	\
    31 				 $(CT_TOP_DIR)/config.gen/tools.in
    32 
    33 CONFIG_FILES=$(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
    34 
    35 # Build list of items
    36 ARCHS   = $(patsubst $(CT_LIB_DIR)/arch/%/config.in,%,$(ARCH_CONFIG_FILES))
    37 KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERN_CONFIG_FILES))
    38 
    39 $(GEN_CONFIG_FILES): $(CT_TOP_DIR)/config.gen           \
    40                      $(CT_LIB_DIR)/kconfig/kconfig.mk
    41 
    42 $(CT_TOP_DIR)/config.gen: $(KCONFIG_TOP)
    43 	@mkdir -p $(CT_TOP_DIR)/config.gen
    44 
    45 $(CT_TOP_DIR)/config.gen/arch.in: $(ARCH_CONFIG_FILES)
    46 	@echo '  IN   config.gen/arch.in'
    47 	@(echo "# Architectures menu";                                                              \
    48 	  echo "# Generated file, do not edit!!!";                                                  \
    49 	  echo "";                                                                                  \
    50 	  for arch in $(ARCHS); do                                                                  \
    51 	    _arch=$$(echo "$${arch}" |sed -r -s -e 's/[-.+]/_/g;');                                 \
    52 	    echo "config ARCH_$${_arch}";                                                           \
    53 	    echo "    bool";                                                                        \
    54 	    printf "    prompt \"$${arch}";                                                         \
    55 	    if grep -E '^# +EXPERIMENTAL$$' config/arch/$${arch}/config.in >/dev/null 2>&1; then    \
    56 	      echo " (EXPERIMENTAL)\"";                                                             \
    57 	      echo "    depends on EXPERIMENTAL";                                                   \
    58 	    else                                                                                    \
    59 	      echo "\"";                                                                            \
    60 	    fi;                                                                                     \
    61 	    echo "if ARCH_$${_arch}";                                                               \
    62 	    echo "config ARCH";                                                                     \
    63 	    echo "    default \"$${arch}\" if ARCH_$${_arch}";                                      \
    64 	    echo "source config/arch/$${arch}/config.in";                                           \
    65 	    echo "endif";                                                                           \
    66 	    echo "";                                                                                \
    67 	  done;                                                                                     \
    68 	 ) >$@
    69 
    70 $(CT_TOP_DIR)/config.gen/kernel.in: $(KERN_CONFIG_FILES)
    71 	@echo '  IN   config.gen/kernel.in'
    72 	@(echo "# Kernel menu";                                                             \
    73 	  echo "# Generated file, do not edit!!!";                                          \
    74 	  echo "";                                                                          \
    75 	  for kern in $(KERNELS); do                                                        \
    76 	    _kern=$$(echo "$${kern}" |sed -r -s -e 's/[-.+]/_/g;');                         \
    77 	    echo "config KERNEL_$${_kern}";                                                 \
    78 	    echo "    bool";                                                                \
    79 	    printf "    prompt \"$${kern}";                                                 \
    80 	    if grep -E '^# +EXPERIMENTAL$$' config/kernel/$${kern}.in >/dev/null 2>&1; then \
    81 	      echo " (EXPERIMENTAL)\"";                                                     \
    82 	      echo "  depends on EXPERIMENTAL";                                             \
    83 	    else                                                                            \
    84 	      echo "\"";                                                                    \
    85 		fi;                                                                             \
    86 	    echo "if KERNEL_$${_kern}";                                                     \
    87 	    echo "config KERNEL";                                                           \
    88 	    echo "    default \"$${kern}\" if KERNEL_$${_kern}";                            \
    89 	    echo "source config/kernel/$${kern}.in";                                        \
    90 	    echo "endif";                                                                   \
    91 	    echo "";                                                                        \
    92 	  done;                                                                             \
    93 	 ) >$@
    94 
    95 $(CT_TOP_DIR)/config.gen/debug.in: $(DEBUG_CONFIG_FILES)
    96 	@echo '  IN   config.gen/debug.in'
    97 	@(echo "# Debug facilities menu";                                   \
    98 	  echo "# Generated file, do not edit!!!";                          \
    99 	  echo "menu \"Debug facilities\"";                                 \
   100 	  for f in $(patsubst $(CT_LIB_DIR)/%,%,$(DEBUG_CONFIG_FILES)); do  \
   101 	     echo "source $${f}";                                           \
   102 	  done;                                                             \
   103 	  echo "endmenu";                                                   \
   104 	 ) >$@
   105 
   106 $(CT_TOP_DIR)/config.gen/tools.in: $(TOOLS_CONFIG_FILES)
   107 	@echo '  IN   config.gen/tools.in'
   108 	@(echo "# Tools facilities menu";                                   \
   109 	  echo "# Generated file, do not edit!!!";                          \
   110 	  echo "menu \"Tools facilities\"";                                 \
   111 	  for f in $(patsubst $(CT_LIB_DIR)/%,%,$(TOOLS_CONFIG_FILES)); do  \
   112 	     echo "source $${f}";                                           \
   113 	  done;                                                             \
   114 	  echo "endmenu";                                                   \
   115 	 ) >$@
   116 
   117 config menuconfig oldconfig defoldconfig extractconfig: $(KCONFIG_TOP)
   118 
   119 $(KCONFIG_TOP):
   120 	@ln -sf $(CT_LIB_DIR)/config config
   121 
   122 menuconfig: $(CONFIG_FILES) $(obj)/mconf
   123 	@$(obj)/mconf $(KCONFIG_TOP)
   124 
   125 config: $(CONFIG_FILES) $(obj)/conf
   126 	@$(obj)/conf $(KCONFIG_TOP)
   127 
   128 oldconfig: $(CONFIG_FILES) $(obj)/conf
   129 	@$(obj)/conf -s $(KCONFIG_TOP)
   130 
   131 defoldconfig: $(CONFIG_FILES) $(obj)/conf
   132 	@yes "" |$(obj)/conf -s $(KCONFIG_TOP)
   133 
   134 extractconfig: $(CONFIG_FILES) $(obj)/conf
   135 	@$(CT_LIB_DIR)/tools/extract-config.sh >.config
   136 	@$(obj)/conf -s $(KCONFIG_TOP)
   137 
   138 # Help text used by make help
   139 help-config::
   140 	@echo  '  config             - Update current config using a line-oriented program'
   141 	@echo  '  menuconfig         - Update current config using a menu based program'
   142 	@echo  '  oldconfig          - Update current config using a provided .config as base'
   143 	@echo  '  extractconfig      - Create a new config using options extracted from a'
   144 	@echo  '                       build log piped into stdin'
   145 
   146 # Cheesy build
   147 
   148 SHIPPED := $(CT_LIB_DIR)/kconfig/zconf.tab.c $(CT_LIB_DIR)/kconfig/lex.zconf.c $(CT_LIB_DIR)/kconfig/zconf.hash.c
   149 
   150 $(obj)/conf $(obj)/mconf: $(obj)
   151 
   152 $(obj):
   153 	@mkdir -p $(obj)
   154 
   155 HEADERS = $(CT_LIB_DIR)/kconfig/expr.h      \
   156           $(CT_LIB_DIR)/kconfig/lkc.h       \
   157           $(CT_LIB_DIR)/kconfig/lkc_proto.h
   158 
   159 FILES = $(CT_LIB_DIR)/kconfig/confdata.c    \
   160         $(CT_LIB_DIR)/kconfig/expr.c        \
   161         $(CT_LIB_DIR)/kconfig/menu.c        \
   162         $(CT_LIB_DIR)/kconfig/symbol.c      \
   163         $(CT_LIB_DIR)/kconfig/util.c
   164 
   165 $(obj)/mconf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/mconf.c  \
   166               $(HEADERS) $(FILES)                       \
   167               $(CT_LIB_DIR)/kconfig/kconfig.mk
   168 	@echo '  LD   kconfig/mconf'
   169 	@$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{mconf.c,zconf.tab.c,lxdialog/*.c} \
   170 	     $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ccflags)              \
   171 	     $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ldflags $(HOST_CC))
   172 
   173 $(obj)/conf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/conf.c    \
   174              $(HEADERS) $(FILES)                        \
   175              $(CT_LIB_DIR)/kconfig/kconfig.mk
   176 	@echo '  LD   kconfig/conf'
   177 	@$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{conf.c,zconf.tab.c}
   178 
   179 clean::
   180 	@rm -f $(CT_TOP_DIR)/kconfig/{,m}conf
   181 	@rmdir --ignore-fail-on-non-empty $(CT_TOP_DIR)/kconfig 2>/dev/null || true
   182 	@rm -f $(CT_TOP_DIR)/config 2>/dev/null || true
   183 	@rm -rf $(CT_TOP_DIR)/config.gen