kconfig/kconfig.mk
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Sep 23 14:48:10 2008 +0000 (2008-09-23)
changeset 872 fd4bf138f08f
parent 859 db6a82f4b930
child 877 58b374931cc7
permissions -rw-r--r--
Bart De VOS pointed out that removing absolute paths from the libc linker scripts is plainly wrong.
It dates from dawn ages of the original crosstool code, and is not well explained. At that time, binutils might not understand the sysroot stuff, and it was necessary to remove absolute paths in that case.

/trunk/scripts/build/libc/glibc.sh | 14 2 12 0 ++------------
1 file changed, 2 insertions(+), 12 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:
    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 	    echo "config ARCH_$${arch}";                                            \
    52 	    echo "    bool";                                                        \
    53 	    printf "    prompt \"$${arch}";                                         \
    54 	    if [ -f $(CT_LIB_DIR)/arch/$${arch}/experimental ]; then                \
    55 	      echo " (EXPERIMENTAL)\"";                                             \
    56 	      echo "    depends on EXPERIMENTAL";                                   \
    57 	    else                                                                    \
    58 	      echo "\"";                                                            \
    59 	    fi;                                                                     \
    60 	    echo "if ARCH_$${arch}";                                                \
    61 	    echo "config ARCH";                                                     \
    62 	    echo "    default \"$${arch}\" if ARCH_$${arch}";                       \
    63 	    echo "source config/arch/$${arch}/config.in";                           \
    64 	    echo "endif";                                                           \
    65 	    echo "";                                                                \
    66 	  done;                                                                     \
    67 	 ) >$@
    68 
    69 $(CT_TOP_DIR)/config.gen/kernel.in: $(KERN_CONFIG_FILES)
    70 	@echo '  IN   config.gen/kernel.in'
    71 	@(echo "# Kernel menu";                                         \
    72 	  echo "# Generated file, do not edit!!!";                      \
    73 	  echo "";                                                      \
    74 	  for kern in $(KERNELS); do                                    \
    75 		_exp="$${kern/*./}";                                        \
    76 	    _kern1="$${kern/.experimental/}";                           \
    77 	    _kern2=$$(echo "$${_kern1}" |sed -r -e 's/[ -\/]/_/g;');    \
    78 	    echo "config KERNEL_$${_kern2}";                            \
    79 	    echo "    bool";                                            \
    80 	    printf "    prompt \"$${_kern1}";                           \
    81 	    if [ "$${_exp}" != "$${kern}" ]; then                       \
    82 	        echo " (EXPERIMENTAL)\"";                               \
    83 	        echo "    depends on EXPERIMENTAL";                     \
    84 	    else                                                        \
    85 	        echo "\"";                                              \
    86 		fi;                                                         \
    87 	    echo "if KERNEL_$${_kern2}";                                \
    88 	    echo "config KERNEL";                                       \
    89 	    echo "    default \"$${_kern1}\" if KERNEL_$${_kern2}";     \
    90 	    echo "source config/kernel/$${kern}.in";			        \
    91 	    echo "endif";                                               \
    92 	    echo "";                                                    \
    93 	  done;                                                         \
    94 	 ) >$@
    95 
    96 $(CT_TOP_DIR)/config.gen/debug.in: $(DEBUG_CONFIG_FILES)
    97 	@echo '  IN   config.gen/debug.in'
    98 	@(echo "# Debug facilities menu";                                   \
    99 	  echo "# Generated file, do not edit!!!";                          \
   100 	  echo "menu \"Debug facilities\"";                                 \
   101 	  for f in $(patsubst $(CT_TOP_DIR)/%,%,$(DEBUG_CONFIG_FILES)); do  \
   102 	     echo "source $${f}";                                           \
   103 	  done;                                                             \
   104 	  echo "endmenu";                                                   \
   105 	 ) >$@
   106 
   107 $(CT_TOP_DIR)/config.gen/tools.in: $(TOOLS_CONFIG_FILES)
   108 	@echo '  IN   config.gen/tools.in'
   109 	@(echo "# Tools facilities menu";                                   \
   110 	  echo "# Generated file, do not edit!!!";                          \
   111 	  echo "menu \"Tools facilities\"";                                 \
   112 	  for f in $(patsubst $(CT_TOP_DIR)/%,%,$(TOOLS_CONFIG_FILES)); do  \
   113 	     echo "source $${f}";                                           \
   114 	  done;                                                             \
   115 	  echo "endmenu";                                                   \
   116 	 ) >$@
   117 
   118 config menuconfig oldconfig defoldconfig extractconfig: $(KCONFIG_TOP)
   119 
   120 $(KCONFIG_TOP):
   121 	@ln -sf $(CT_LIB_DIR)/config config
   122 
   123 menuconfig: $(CONFIG_FILES) $(obj)/mconf
   124 	@$(obj)/mconf $(KCONFIG_TOP)
   125 
   126 config: $(CONFIG_FILES) $(obj)/conf
   127 	@$(obj)/conf $(KCONFIG_TOP)
   128 
   129 oldconfig: $(CONFIG_FILES) $(obj)/conf
   130 	@$(obj)/conf -s $(KCONFIG_TOP)
   131 
   132 defoldconfig: $(CONFIG_FILES) $(obj)/conf
   133 	@yes "" |$(obj)/conf -s $(KCONFIG_TOP)
   134 
   135 extractconfig: $(CONFIG_FILES) $(obj)/conf
   136 	@$(CT_LIB_DIR)/tools/extract-config.sh >.config
   137 	@$(obj)/conf -s $(KCONFIG_TOP)
   138 
   139 # Help text used by make help
   140 help-config::
   141 	@echo  '  config             - Update current config using a line-oriented program'
   142 	@echo  '  menuconfig         - Update current config using a menu based program'
   143 	@echo  '  oldconfig          - Update current config using a provided .config as base'
   144 	@echo  '  extractconfig      - Create a new config using options extracted from a'
   145 	@echo  '                       build log piped into stdin'
   146 
   147 # Cheesy build
   148 
   149 SHIPPED := $(CT_LIB_DIR)/kconfig/zconf.tab.c $(CT_LIB_DIR)/kconfig/lex.zconf.c $(CT_LIB_DIR)/kconfig/zconf.hash.c
   150 
   151 %.c: %.c_shipped
   152 	@echo '  LN   kconfig/$(notdir $@)'
   153 	@ln -s $(notdir $<) $@
   154 
   155 $(obj)/conf $(obj)/mconf: $(obj)
   156 
   157 $(obj):
   158 	@mkdir -p $(obj)
   159 
   160 HEADERS = $(CT_LIB_DIR)/kconfig/expr.h      \
   161           $(CT_LIB_DIR)/kconfig/lkc.h       \
   162           $(CT_LIB_DIR)/kconfig/lkc_proto.h
   163 
   164 FILES = $(CT_LIB_DIR)/kconfig/confdata.c    \
   165         $(CT_LIB_DIR)/kconfig/expr.c        \
   166         $(CT_LIB_DIR)/kconfig/menu.c        \
   167         $(CT_LIB_DIR)/kconfig/symbol.c      \
   168         $(CT_LIB_DIR)/kconfig/util.c
   169 
   170 $(obj)/mconf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/mconf.c  \
   171               $(HEADERS) $(FILES)                       \
   172               $(CT_LIB_DIR)/kconfig/kconfig.mk
   173 	@echo '  LNK  kconfig/mconf'
   174 	@$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{mconf.c,zconf.tab.c,lxdialog/*.c} \
   175 	     $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ccflags)              \
   176 	     $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ldflags $(HOST_CC))
   177 
   178 $(obj)/conf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/conf.c    \
   179              $(HEADERS) $(FILES)                        \
   180              $(CT_LIB_DIR)/kconfig/kconfig.mk
   181 	@echo '  LNK  kconfig/conf'
   182 	@$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{conf.c,zconf.tab.c}
   183 
   184 clean::
   185 	@rm -f $(CT_TOP_DIR)/kconfig/{,m}conf
   186 	@rm -f $(SHIPPED)
   187 	@rmdir --ignore-fail-on-non-empty $(CT_TOP_DIR)/kconfig 2>/dev/null || true
   188 	@rm -f $(CT_TOP_DIR)/config 2>/dev/null || true
   189 	@rm -rf $(CT_TOP_DIR)/config.gen