kconfig/kconfig.mk
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Feb 17 22:08:06 2008 +0000 (2008-02-17)
changeset 431 8bde4c6ea47a
parent 370 26fe0433ce29
child 628 87802cb25a0f
permissions -rw-r--r--
Robert P. J. DAY says:

apparently, the patchset for gcc 4.2.1 applies properly to the
source for gcc 4.2.2 and gcc 4.2.3. so, if you want, you can simply
add support for those last two just by augmenting menuconfig and
adding a couple symlinks for those two directories. seems like a
cheap way to add a couple new versions.
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@182
    22
DEBUG_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config/debug -type f -name '*.in')
yann@182
    23
TOOLS_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config/tools -type f -name '*.in')
yann@97
    24
yann@182
    25
STATIC_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config -type f -name '*.in')
yann@182
    26
GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/debug.in	\
yann@182
    27
				 $(CT_TOP_DIR)/config.gen/tools.in
yann@88
    28
yann@182
    29
CONFIG_FILES=$(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
yann@182
    30
yann@182
    31
$(GEN_CONFIG_FILES):: $(CT_TOP_DIR)/config.gen
yann@182
    32
yann@182
    33
$(CT_TOP_DIR)/config.gen:
yann@182
    34
	@mkdir -p $(CT_TOP_DIR)/config.gen
yann@182
    35
yann@182
    36
$(CT_TOP_DIR)/config.gen/debug.in:: $(DEBUG_CONFIG_FILES)
yann@97
    37
	@echo "# Debug facilities menu" >$@
yann@97
    38
	@echo "# Generated file, do not edit!!!" >>$@
yann@97
    39
	@echo "menu \"Debug facilities\"" >>$@
yann@97
    40
	@for f in $(patsubst $(CT_TOP_DIR)/%,%,$(wildcard $(CT_TOP_DIR)/config/debug/*.in)); do \
yann@97
    41
	     echo "source $${f}";                                                               \
yann@97
    42
	 done >>$@
yann@97
    43
	@echo "endmenu" >>$@
yann@97
    44
yann@182
    45
$(CT_TOP_DIR)/config.gen/tools.in:: $(TOOLS_CONFIG_FILES)
yann@148
    46
	@echo "# Tools facilities menu" >$@
yann@148
    47
	@echo "# Generated file, do not edit!!!" >>$@
yann@148
    48
	@echo "menu \"Tools facilities\"" >>$@
yann@148
    49
	@for f in $(patsubst $(CT_TOP_DIR)/%,%,$(wildcard $(CT_TOP_DIR)/config/tools/*.in)); do \
yann@148
    50
	     echo "source $${f}";                                                               \
yann@148
    51
	 done >>$@
yann@148
    52
	@echo "endmenu" >>$@
yann@148
    53
yann@276
    54
config menuconfig oldconfig defoldconfig extractconfig:: $(KCONFIG_TOP)
yann@182
    55
yann@182
    56
$(KCONFIG_TOP):
yann@370
    57
	@ln -sf $(CT_LIB_DIR)/config config
yann@182
    58
yann@182
    59
menuconfig:: $(obj)/mconf $(CONFIG_FILES)
yann@1
    60
	@$< $(KCONFIG_TOP)
yann@1
    61
yann@182
    62
config:: $(obj)/conf $(CONFIG_FILES)
yann@1
    63
	@$< $(KCONFIG_TOP)
yann@1
    64
yann@182
    65
oldconfig:: $(obj)/conf $(CONFIG_FILES)
yann@1
    66
	@$< -s $(KCONFIG_TOP)
yann@1
    67
yann@182
    68
defoldconfig:: $(obj)/conf $(CONFIG_FILES)
yann@163
    69
	@yes "" |$< -s $(KCONFIG_TOP) >/dev/null
yann@159
    70
yann@276
    71
extractconfig:: $(obj)/conf $(CONFIG_FILES)
yann@276
    72
	@$(CT_LIB_DIR)/tools/extract-config.sh >.config
yann@276
    73
	@$< -s $(KCONFIG_TOP)
yann@276
    74
yann@1
    75
# Help text used by make help
yann@176
    76
help-config::
yann@333
    77
	@echo  '  config             - Update current config using a line-oriented program'
yann@333
    78
	@echo  '  menuconfig         - Update current config using a menu based program'
yann@333
    79
	@echo  '  oldconfig          - Update current config using a provided .config as base'
yann@333
    80
	@echo  '  extractconfig      - Create a new config using options extracted from a'
yann@333
    81
	@echo  '                       build log piped into stdin'
yann@1
    82
yann@1
    83
# Cheesy build
yann@1
    84
yann@285
    85
SHIPPED := $(CT_LIB_DIR)/kconfig/zconf.tab.c $(CT_LIB_DIR)/kconfig/lex.zconf.c $(CT_LIB_DIR)/kconfig/zconf.hash.c
yann@1
    86
yann@1
    87
%.c: %.c_shipped
yann@1
    88
	@ln -s $(notdir $<) $@
yann@1
    89
yann@182
    90
$(obj)/conf $(obj)/mconf:: $(obj)
yann@182
    91
yann@182
    92
$(obj):
yann@182
    93
	@mkdir -p $(obj)
yann@182
    94
yann@182
    95
$(obj)/mconf:: $(SHIPPED) $(CT_LIB_DIR)/kconfig/mconf.c
yann@182
    96
	@$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{mconf.c,zconf.tab.c,lxdialog/*.c} \
yann@375
    97
	     $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ccflags)              \
yann@375
    98
	     $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ldflags $(HOST_CC))
yann@1
    99
yann@182
   100
$(obj)/conf:: $(SHIPPED) $(CT_LIB_DIR)/kconfig/conf.c
yann@182
   101
	@$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{conf.c,zconf.tab.c}
yann@1
   102
yann@1
   103
clean::
yann@182
   104
	@rm -f $(CT_TOP_DIR)/kconfig/{,m}conf
yann@285
   105
	@rm -f $(SHIPPED)
yann@260
   106
	@rmdir --ignore-fail-on-non-empty $(CT_TOP_DIR)/kconfig 2>/dev/null || true
yann@285
   107
	@rm -f $(CT_TOP_DIR)/config 2>/dev/null || true
yann@182
   108
	@rm -rf $(CT_TOP_DIR)/config.gen