kconfig/kconfig.mk
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Thu Oct 09 19:17:49 2008 +0000 (2008-10-09)
changeset 914 0b164a321177
parent 903 9fb0f81b4416
child 916 68af6b83ff7e
permissions -rw-r--r--
Remove CT_BROKEN.
Only one component is actually BROKEN (libelf), make it depend on EXPERIMENTAL, but state BROKEN in the prompt.
ltrace (which depends on libelf) is now marked as EXPERIMENTAL, with the reference to the BROKEN libelf in the help entry.

/trunk/docs/overview.txt | 6 0 6 0 ------
/trunk/config/debug/ltrace.in | 7 4 3 0 ++++---
/trunk/config/global/ct-behave.in | 8 0 8 0 --------
/trunk/config/tools/libelf.in | 5 3 2 0 +++--
4 files changed, 7 insertions(+), 19 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@894
    10
PHONY += clean help oldconfig menuconfig config defoldconfig
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@912
    22
ARCH_CONFIG_FILES   = $(wildcard $(CT_LIB_DIR)/config/arch/*.in)
yann@912
    23
KERNEL_CONFIG_FILES   = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)
yann@912
    24
DEBUG_CONFIG_FILES  = $(wildcard $(CT_LIB_DIR)/config/debug/*.in)
yann@912
    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@903
    36
ARCHS   = $(patsubst $(CT_LIB_DIR)/config/arch/%.in,%,$(ARCH_CONFIG_FILES))
yann@912
    37
KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERNEL_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@891
    42
$(CT_TOP_DIR)/config.gen: $(KCONFIG_TOP)
yann@182
    43
	@mkdir -p $(CT_TOP_DIR)/config.gen
yann@182
    44
yann@912
    45
# Function build_gen_choice_in:
yann@912
    46
# $1 : destination file
yann@912
    47
# $2 : name for the entries family (eg. Architecture, kernel...)
yann@912
    48
# $3 : prefix for the choice entries (eg. ARCH, KERNEL...)
yann@912
    49
# $4 : base directory containing config files
yann@912
    50
# $5 : list of config entries (eg. for architectures: "alpha arm ia64"...,
yann@912
    51
#      and for kernels: "bare-metal linux"...)
yann@912
    52
# Example to build the kernels generated config file:
yann@912
    53
# $(call build_gen_choice_in,config.gen/kernel.in,Kernel,KERNEL,config/kernel,$(KERNELS))
yann@912
    54
define build_gen_choice_in
yann@912
    55
	@echo '  IN   $(1)'
yann@912
    56
	@(echo "# $(2) menu";                                                               \
yann@903
    57
	  echo "# Generated file, do not edit!!!";                                          \
yann@903
    58
	  echo "";                                                                          \
yann@912
    59
	  for entry in $(5); do                                                             \
yann@912
    60
	    file="$(4)/$${entry}.in";                                                       \
yann@912
    61
	    _entry=$$(echo "$${entry}" |sed -r -s -e 's/[-.+]/_/g;');                       \
yann@912
    62
	    echo "config $(3)_$${_entry}";                                                  \
yann@903
    63
	    echo "    bool";                                                                \
yann@912
    64
	    printf "    prompt \"$${entry}";                                                \
yann@912
    65
	    if grep -E '^# +EXPERIMENTAL$$' $${file} >/dev/null 2>&1; then                  \
yann@903
    66
	      echo " (EXPERIMENTAL)\"";                                                     \
yann@903
    67
	      echo "    depends on EXPERIMENTAL";                                           \
yann@903
    68
	    else                                                                            \
yann@903
    69
	      echo "\"";                                                                    \
yann@903
    70
	    fi;                                                                             \
yann@912
    71
	    echo "if $(3)_$${_entry}";                                                      \
yann@912
    72
	    echo "config $(3)";                                                             \
yann@912
    73
	    echo "    default \"$${entry}\" if $(3)_$${_entry}";                            \
yann@912
    74
	    echo "source $${file}";                                                         \
yann@903
    75
	    echo "endif";                                                                   \
yann@903
    76
	    echo "";                                                                        \
yann@903
    77
	  done;                                                                             \
yann@912
    78
	 ) >$(1)
yann@912
    79
endef
yann@628
    80
yann@912
    81
$(CT_TOP_DIR)/config.gen/arch.in: $(ARCH_CONFIG_FILES)
yann@912
    82
	$(call build_gen_choice_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Architecture,ARCH,config/arch,$(ARCHS))
yann@912
    83
yann@912
    84
$(CT_TOP_DIR)/config.gen/kernel.in: $(KERNEL_CONFIG_FILES)
yann@912
    85
	$(call build_gen_choice_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Kernel,KERNEL,config/kernel,$(KERNELS))
yann@97
    86
yann@861
    87
$(CT_TOP_DIR)/config.gen/debug.in: $(DEBUG_CONFIG_FILES)
yann@861
    88
	@echo '  IN   config.gen/debug.in'
yann@861
    89
	@(echo "# Debug facilities menu";                                   \
yann@861
    90
	  echo "# Generated file, do not edit!!!";                          \
yann@861
    91
	  echo "menu \"Debug facilities\"";                                 \
yann@877
    92
	  for f in $(patsubst $(CT_LIB_DIR)/%,%,$(DEBUG_CONFIG_FILES)); do  \
yann@861
    93
	     echo "source $${f}";                                           \
yann@861
    94
	  done;                                                             \
yann@861
    95
	  echo "endmenu";                                                   \
yann@861
    96
	 ) >$@
yann@148
    97
yann@861
    98
$(CT_TOP_DIR)/config.gen/tools.in: $(TOOLS_CONFIG_FILES)
yann@861
    99
	@echo '  IN   config.gen/tools.in'
yann@861
   100
	@(echo "# Tools facilities menu";                                   \
yann@861
   101
	  echo "# Generated file, do not edit!!!";                          \
yann@861
   102
	  echo "menu \"Tools facilities\"";                                 \
yann@877
   103
	  for f in $(patsubst $(CT_LIB_DIR)/%,%,$(TOOLS_CONFIG_FILES)); do  \
yann@861
   104
	     echo "source $${f}";                                           \
yann@861
   105
	  done;                                                             \
yann@861
   106
	  echo "endmenu";                                                   \
yann@861
   107
	 ) >$@
yann@861
   108
yann@894
   109
config menuconfig oldconfig defoldconfig: $(KCONFIG_TOP)
yann@182
   110
yann@182
   111
$(KCONFIG_TOP):
yann@370
   112
	@ln -sf $(CT_LIB_DIR)/config config
yann@182
   113
yann@861
   114
menuconfig: $(CONFIG_FILES) $(obj)/mconf
yann@861
   115
	@$(obj)/mconf $(KCONFIG_TOP)
yann@1
   116
yann@861
   117
config: $(CONFIG_FILES) $(obj)/conf
yann@861
   118
	@$(obj)/conf $(KCONFIG_TOP)
yann@1
   119
yann@861
   120
oldconfig: $(CONFIG_FILES) $(obj)/conf
yann@861
   121
	@$(obj)/conf -s $(KCONFIG_TOP)
yann@1
   122
yann@861
   123
defoldconfig: $(CONFIG_FILES) $(obj)/conf
yann@861
   124
	@yes "" |$(obj)/conf -s $(KCONFIG_TOP)
yann@159
   125
yann@1
   126
# Help text used by make help
yann@176
   127
help-config::
yann@333
   128
	@echo  '  config             - Update current config using a line-oriented program'
yann@333
   129
	@echo  '  menuconfig         - Update current config using a menu based program'
yann@333
   130
	@echo  '  oldconfig          - Update current config using a provided .config as base'
yann@333
   131
	@echo  '                       build log piped into stdin'
yann@1
   132
yann@1
   133
# Cheesy build
yann@1
   134
yann@285
   135
SHIPPED := $(CT_LIB_DIR)/kconfig/zconf.tab.c $(CT_LIB_DIR)/kconfig/lex.zconf.c $(CT_LIB_DIR)/kconfig/zconf.hash.c
yann@1
   136
yann@861
   137
$(obj)/conf $(obj)/mconf: $(obj)
yann@182
   138
yann@182
   139
$(obj):
yann@182
   140
	@mkdir -p $(obj)
yann@182
   141
yann@816
   142
HEADERS = $(CT_LIB_DIR)/kconfig/expr.h      \
yann@816
   143
          $(CT_LIB_DIR)/kconfig/lkc.h       \
yann@816
   144
          $(CT_LIB_DIR)/kconfig/lkc_proto.h
yann@816
   145
yann@816
   146
FILES = $(CT_LIB_DIR)/kconfig/confdata.c    \
yann@816
   147
        $(CT_LIB_DIR)/kconfig/expr.c        \
yann@816
   148
        $(CT_LIB_DIR)/kconfig/menu.c        \
yann@816
   149
        $(CT_LIB_DIR)/kconfig/symbol.c      \
yann@816
   150
        $(CT_LIB_DIR)/kconfig/util.c
yann@816
   151
yann@861
   152
$(obj)/mconf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/mconf.c  \
yann@861
   153
              $(HEADERS) $(FILES)                       \
yann@861
   154
              $(CT_LIB_DIR)/kconfig/kconfig.mk
yann@877
   155
	@echo '  LD   kconfig/mconf'
yann@182
   156
	@$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{mconf.c,zconf.tab.c,lxdialog/*.c} \
yann@375
   157
	     $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ccflags)              \
yann@375
   158
	     $(shell $(CT_LIB_DIR)/kconfig/lxdialog/check-lxdialog.sh -ldflags $(HOST_CC))
yann@1
   159
yann@861
   160
$(obj)/conf: $(SHIPPED) $(CT_LIB_DIR)/kconfig/conf.c    \
yann@861
   161
             $(HEADERS) $(FILES)                        \
yann@861
   162
             $(CT_LIB_DIR)/kconfig/kconfig.mk
yann@877
   163
	@echo '  LD   kconfig/conf'
yann@182
   164
	@$(HOST_CC) $(CFLAGS) -o $@ $(CT_LIB_DIR)/kconfig/{conf.c,zconf.tab.c}
yann@1
   165
yann@1
   166
clean::
yann@182
   167
	@rm -f $(CT_TOP_DIR)/kconfig/{,m}conf
yann@260
   168
	@rmdir --ignore-fail-on-non-empty $(CT_TOP_DIR)/kconfig 2>/dev/null || true
yann@285
   169
	@rm -f $(CT_TOP_DIR)/config 2>/dev/null || true
yann@182
   170
	@rm -rf $(CT_TOP_DIR)/config.gen