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