# HG changeset patch # User "Yann E. MORIN" # Date 1223649044 0 # Node ID 68af6b83ff7e71de5b2dfc95f2a38aab279b1c84 # Parent 452aa1d7f9b1087d20f81aa0610579c84442f55f Simplify the Tools and Debug facilities menu entries: - each config file no longer have to define their own 'menuconfig foo - if FOO - endif' gym - each build script no longer has to say wether they are enabled - generation of the 'menuconfig' entries for the Tools and Debug facilities now uses the same code Some re-ordering of the code to be consistent with the steps ordering (tools, then debug). /trunk/kconfig/kconfig.mk | 66 43 23 0 +++++++++++++++++++++++------------- /trunk/scripts/build/debug.sh | 14 9 5 0 +++++--- /trunk/scripts/build/tools/000-template.sh | 7 0 7 0 ---- /trunk/scripts/build/tools/100-libelf.sh | 3 0 3 0 -- /trunk/scripts/build/tools/200-sstrip.sh | 2 0 2 0 - /trunk/scripts/build/debug/000-template.sh | 7 0 7 0 ---- /trunk/scripts/build/debug/100-dmalloc.sh | 3 0 3 0 -- /trunk/scripts/build/debug/400-ltrace.sh | 3 0 3 0 -- /trunk/scripts/build/debug/300-gdb.sh | 3 0 3 0 -- /trunk/scripts/build/debug/500-strace.sh | 3 0 3 0 -- /trunk/scripts/build/debug/200-duma.sh | 3 0 3 0 -- /trunk/scripts/build/tools.sh | 14 9 5 0 +++++--- /trunk/scripts/crosstool.sh | 2 1 1 0 /trunk/config/debug/ltrace.in | 14 3 11 0 ++------ /trunk/config/debug/dmalloc.in | 9 1 8 0 +---- /trunk/config/debug/gdb.in | 9 1 8 0 +---- /trunk/config/debug/strace.in | 10 1 9 0 ----- /trunk/config/debug/duma.in | 10 1 9 0 ----- /trunk/config/tools/libelf.in | 12 2 10 0 +------ /trunk/config/tools/sstrip.in | 10 1 9 0 ----- /trunk/config/config.in | 4 2 2 0 +- 21 files changed, 74 insertions(+), 134 deletions(-) diff -r 452aa1d7f9b1 -r 68af6b83ff7e config/config.in --- a/config/config.in Fri Oct 10 08:46:29 2008 +0000 +++ b/config/config.in Fri Oct 10 14:30:44 2008 +0000 @@ -6,5 +6,5 @@ source config/binutils.in source config/cc.in source config/libc.in -source config.gen/tools.in -source config.gen/debug.in +source config/tools.in +source config/debug.in diff -r 452aa1d7f9b1 -r 68af6b83ff7e config/debug/dmalloc.in --- a/config/debug/dmalloc.in Fri Oct 10 08:46:29 2008 +0000 +++ b/config/debug/dmalloc.in Fri Oct 10 14:30:44 2008 +0000 @@ -1,12 +1,7 @@ # dmalloc debug facility -menuconfig DMALLOC +config DEBUG_dmalloc bool - prompt "dmalloc" - default n - depends on ! BARE_METAL - -if DMALLOC choice bool @@ -31,5 +26,3 @@ default "5.5.2" if DMALLOC_V_5_5_2 # CT_INSERT_VERSION_STRING_ABOVE # Don't remove above line! - -endif diff -r 452aa1d7f9b1 -r 68af6b83ff7e config/debug/duma.in --- a/config/debug/duma.in Fri Oct 10 08:46:29 2008 +0000 +++ b/config/debug/duma.in Fri Oct 10 14:30:44 2008 +0000 @@ -1,17 +1,11 @@ # D.U.M.A. - Detect Unintended Memory Access - Memory checker -menuconfig DUMA - bool - prompt "D.U.M.A." - default n - depends on ! BARE_METAL +config DEBUG_duma help D.U.M.A. - Detect Unintended Memory Access A memory bound checker, with additional features. Formerly known as Electric Fence. -if DUMA - config DUMA_A bool prompt "Build a static library" @@ -55,5 +49,3 @@ default "2_5_14" if DUMA_V_2_5_14 # CT_INSERT_VERSION_STRING_ABOVE # Don't remove above line! - -endif diff -r 452aa1d7f9b1 -r 68af6b83ff7e config/debug/gdb.in --- a/config/debug/gdb.in Fri Oct 10 08:46:29 2008 +0000 +++ b/config/debug/gdb.in Fri Oct 10 14:30:44 2008 +0000 @@ -1,14 +1,9 @@ # GDB menu -menuconfig GDB - bool - prompt "gdb" - default n +config DEBUG_gdb help Enable gdb for the target -if GDB - config GDB_CROSS bool prompt "Cross-gdb" @@ -167,5 +162,3 @@ default "5.6" if NCURSES_V_5_6 endif # GDB_NATIVE --> ncurses - -endif diff -r 452aa1d7f9b1 -r 68af6b83ff7e config/debug/ltrace.in --- a/config/debug/ltrace.in Fri Oct 10 08:46:29 2008 +0000 +++ b/config/debug/ltrace.in Fri Oct 10 14:30:44 2008 +0000 @@ -1,20 +1,14 @@ +# EXPERIMENTAL # ltrace -menuconfig LTRACE - bool - prompt "ltrace (EXPERIMENTAL)" - default n - depends on EXPERIMENTAL - depends on ! BARE_METAL - select LIBELF +config DEBUG_ltrace + select TOOL_libelf help ltrace is currently BROKEN! It depends on libelf, and I don't know how to configure/compile that so that ltrace can successfully use it. If you manage to build ltrace (and libelf!), please be so kind as to tell me! Thank you! -if LTRACE - choice bool prompt "ltrace version" @@ -38,5 +32,3 @@ default "0.4" if LTRACE_V_0_4 # CT_INSERT_VERSION_STRING_ABOVE # # Don't remove above line! - -endif diff -r 452aa1d7f9b1 -r 68af6b83ff7e config/debug/strace.in --- a/config/debug/strace.in Fri Oct 10 08:46:29 2008 +0000 +++ b/config/debug/strace.in Fri Oct 10 14:30:44 2008 +0000 @@ -1,12 +1,6 @@ # strace -menuconfig STRACE - bool - prompt "strace" - default n - depends on ! BARE_METAL - -if STRACE +config DEBUG_strace choice bool @@ -42,5 +36,3 @@ default "4.5.16" if STRACE_V_4_5_16 # CT_INSERT_VERSION_STRING_ABOVE # # Don't remove above line! - -endif diff -r 452aa1d7f9b1 -r 68af6b83ff7e config/tools/libelf.in --- a/config/tools/libelf.in Fri Oct 10 08:46:29 2008 +0000 +++ b/config/tools/libelf.in Fri Oct 10 14:30:44 2008 +0000 @@ -1,11 +1,7 @@ +# EXPERIMENTAL # libelf config file -menuconfig LIBELF - bool - prompt "libelf (BROKEN)" - default n - depends on EXPERIMENTAL - depends on ! BARE_METAL +config TOOL_libelf help libelf lets you read, modify or create ELF files in an architecture-independent way. @@ -14,8 +10,6 @@ please be so kind as to tell me. (By working, I mean it is useable at least by ltrace.) Thank you! -if LIBELF - choice bool prompt "libelf version" @@ -44,5 +38,3 @@ default "0.8.10" if LIBELF_V_0_8_10 # CT_INSERT_VERSION_STRING_ABOVE # Don't remove above line! - -endif diff -r 452aa1d7f9b1 -r 68af6b83ff7e config/tools/sstrip.in --- a/config/tools/sstrip.in Fri Oct 10 08:46:29 2008 +0000 +++ b/config/tools/sstrip.in Fri Oct 10 14:30:44 2008 +0000 @@ -1,16 +1,10 @@ # Configuration file for sstrip tool facility -menuconfig SSTRIP - bool - prompt "sstrip" - depends on ! BARE_METAL - default n +config TOOL_sstrip help The sstrip utility, to maximise the striping of ELF binaries (executables and libraries). -if SSTRIP - choice bool prompt "Use sstrip from:" @@ -44,5 +38,3 @@ default "2.0a" endif - -endif diff -r 452aa1d7f9b1 -r 68af6b83ff7e kconfig/kconfig.mk --- a/kconfig/kconfig.mk Fri Oct 10 08:46:29 2008 +0000 +++ b/kconfig/kconfig.mk Fri Oct 10 14:30:44 2008 +0000 @@ -22,19 +22,21 @@ ARCH_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/arch/*.in) KERNEL_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in) DEBUG_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/debug/*.in) -TOOLS_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/tools/*.in) +TOOL_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/tools/*.in) STATIC_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config -type f -name '*.in') -GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in \ - $(CT_TOP_DIR)/config.gen/kernel.in \ - $(CT_TOP_DIR)/config.gen/debug.in \ - $(CT_TOP_DIR)/config.gen/tools.in +GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in \ + $(CT_TOP_DIR)/config.gen/kernel.in \ + $(CT_TOP_DIR)/config.gen/tools.in \ + $(CT_TOP_DIR)/config.gen/debug.in CONFIG_FILES=$(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES) # Build list of items ARCHS = $(patsubst $(CT_LIB_DIR)/config/arch/%.in,%,$(ARCH_CONFIG_FILES)) KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERNEL_CONFIG_FILES)) +DEBUGS = $(patsubst $(CT_LIB_DIR)/config/debug/%.in,%,$(DEBUG_CONFIG_FILES)) +TOOLS = $(patsubst $(CT_LIB_DIR)/config/tools/%.in,%,$(TOOL_CONFIG_FILES)) $(GEN_CONFIG_FILES): $(CT_TOP_DIR)/config.gen \ $(CT_LIB_DIR)/kconfig/kconfig.mk @@ -84,27 +86,45 @@ $(CT_TOP_DIR)/config.gen/kernel.in: $(KERNEL_CONFIG_FILES) $(call build_gen_choice_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Kernel,KERNEL,config/kernel,$(KERNELS)) +# Function build_gen_menu_in: +# $1 : destination file +# $2 : name of entries family (eg. Tools, Debug...) +# $3 : prefix for the menu entries (eg. TOOL, DEBUG) +# $4 : base directory containing config files +# $5 : list of config entries (eg. for tools: "libelf sstrip"..., and for +# debug: "dmalloc duma gdb"...) +# Example to build the tools generated config file: +# $(call build_gen_menu_in,config.gen/tools.in,Tools,TOOL,config/tools,$(TOOLS)) +define build_gen_menu_in + @echo ' IN $(1)' + @(echo "# $(2) facilities menu"; \ + echo "# Generated file, do not edit!!!"; \ + echo ""; \ + for entry in $(5); do \ + file="$(4)/$${entry}.in"; \ + _entry=$$(echo "$${entry}" |sed -r -s -e 's/[-.+]/_/g;'); \ + echo "menuconfig $(3)_$${_entry}"; \ + echo " bool"; \ + printf " prompt \"$${entry}"; \ + if grep -E '^# +EXPERIMENTAL$$' $${file} >/dev/null 2>&1; then \ + echo " (EXPERIMENTAL)\""; \ + echo " depends on EXPERIMENTAL"; \ + else \ + echo "\""; \ + fi; \ + echo "if $(3)_$${_entry}"; \ + echo "source $${file}"; \ + echo "endif"; \ + echo ""; \ + done; \ + ) >$(1) +endef + +$(CT_TOP_DIR)/config.gen/tools.in: $(TOOL_CONFIG_FILES) + $(call build_gen_menu_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Tools,TOOL,config/tools,$(TOOLS)) + $(CT_TOP_DIR)/config.gen/debug.in: $(DEBUG_CONFIG_FILES) - @echo ' IN config.gen/debug.in' - @(echo "# Debug facilities menu"; \ - echo "# Generated file, do not edit!!!"; \ - echo "menu \"Debug facilities\""; \ - for f in $(patsubst $(CT_LIB_DIR)/%,%,$(DEBUG_CONFIG_FILES)); do \ - echo "source $${f}"; \ - done; \ - echo "endmenu"; \ - ) >$@ - -$(CT_TOP_DIR)/config.gen/tools.in: $(TOOLS_CONFIG_FILES) - @echo ' IN config.gen/tools.in' - @(echo "# Tools facilities menu"; \ - echo "# Generated file, do not edit!!!"; \ - echo "menu \"Tools facilities\""; \ - for f in $(patsubst $(CT_LIB_DIR)/%,%,$(TOOLS_CONFIG_FILES)); do \ - echo "source $${f}"; \ - done; \ - echo "endmenu"; \ - ) >$@ + $(call build_gen_menu_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Debug,DEBUG,config/debug,$(DEBUGS)) config menuconfig oldconfig defoldconfig: $(KCONFIG_TOP) diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/debug.sh --- a/scripts/build/debug.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/debug.sh Fri Oct 10 14:30:44 2008 +0000 @@ -3,11 +3,15 @@ # List all debug facilities, and parse their scripts CT_DEBUG_FACILITY_LIST= for f in "${CT_LIB_DIR}/scripts/build/debug/"*.sh; do - is_enabled= - . "${f}" - f=$(basename "${f}" .sh) - if [ "${is_enabled}" = "y" ]; then - CT_DEBUG_FACILITY_LIST="${CT_DEBUG_FACILITY_LIST} ${f#???-}" + _f="$(basename "${f}" .sh)" + _f="${_f#???-}" + __f="CT_DEBUG_${_f}" + if [ "${!__f}" = "y" ]; then + CT_DoLog DEBUG "Enabling debug '${_f}'" + . "${f}" + CT_DEBUG_FACILITY_LIST="${CT_DEBUG_FACILITY_LIST} ${_f}" + else + CT_DoLog DEBUG "Disabling debug '${_f}'" fi done diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/debug/000-template.sh --- a/scripts/build/debug/000-template.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/debug/000-template.sh Fri Oct 10 14:30:44 2008 +0000 @@ -1,19 +1,12 @@ # Template file for a debug utility -# Check here wether your debug tool is enabled or not. -# This will get redefined over and over again for each tool, so don't -# count on it in the functions below. -is_enabled="${CT_FOOBAR}" - # Small function to print the filename # Note that this function gets redefined over and over for each tool # It's of no use when building the toolchain proper, but shows all its # usefullness when saving the toolchain and building the tarball. -# You shall not echo anything if you're not enabled! # Echo the name of the file, without the extension, below. do_print_filename() { # For example: - # [ "${CT_FOOBAR}" = "y" ] || return 0 # echo "foobar-${CT_FOOBAR_VERSION}" : } diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/debug/100-dmalloc.sh --- a/scripts/build/debug/100-dmalloc.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/debug/100-dmalloc.sh Fri Oct 10 14:30:44 2008 +0000 @@ -1,9 +1,6 @@ # Build script for the dmalloc debug library facility -is_enabled="${CT_DMALLOC}" - do_print_filename() { - [ "${CT_DMALLOC}" = "y" ] || return 0 echo "dmalloc-${CT_DMALLOC_VERSION}" } diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/debug/200-duma.sh --- a/scripts/build/debug/200-duma.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/debug/200-duma.sh Fri Oct 10 14:30:44 2008 +0000 @@ -1,9 +1,6 @@ # Build script for D.U.M.A. -is_enabled="${CT_DUMA}" - do_print_filename() { - [ "${CT_DUMA}" = "y" ] || return 0 echo "duma_${CT_DUMA_VERSION}" } diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/debug/300-gdb.sh --- a/scripts/build/debug/300-gdb.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/debug/300-gdb.sh Fri Oct 10 14:30:44 2008 +0000 @@ -1,9 +1,6 @@ # Build script for the gdb debug facility -is_enabled="${CT_GDB}" - do_print_filename() { - [ "${CT_GDB}" = "y" ] || return 0 echo "gdb$(do_debug_gdb_suffix)" if [ "${CT_GDB_NATIVE}" = "y" ]; then echo "ncurses-${CT_NCURSES_VERSION}" diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/debug/400-ltrace.sh --- a/scripts/build/debug/400-ltrace.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/debug/400-ltrace.sh Fri Oct 10 14:30:44 2008 +0000 @@ -1,9 +1,6 @@ # Build script for ltrace -is_enabled="${CT_LTRACE}" - do_print_filename() { - [ "${CT_LTRACE}" = "y" ] || return 0 echo "ltrace-${CT_LTRACE_VERSION}.orig" } diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/debug/500-strace.sh --- a/scripts/build/debug/500-strace.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/debug/500-strace.sh Fri Oct 10 14:30:44 2008 +0000 @@ -1,9 +1,6 @@ # Build script for strace -is_enabled="${CT_STRACE}" - do_print_filename() { - [ "${CT_STRACE}" = "y" ] || return 0 echo "strace-${CT_STRACE_VERSION}" } diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/tools.sh --- a/scripts/build/tools.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/tools.sh Fri Oct 10 14:30:44 2008 +0000 @@ -3,11 +3,15 @@ # List all tools facilities, and parse their scripts CT_TOOLS_FACILITY_LIST= for f in "${CT_LIB_DIR}/scripts/build/tools/"*.sh; do - is_enabled= - . "${f}" - f=$(basename "${f}" .sh) - if [ "${is_enabled}" = "y" ]; then - CT_TOOLS_FACILITY_LIST="${CT_TOOLS_FACILITY_LIST} ${f#???-}" + _f="$(basename "${f}" .sh)" + _f="${_f#???-}" + __f="CT_TOOL_${_f}" + if [ "${!__f}" = "y" ]; then + CT_DoLog DEBUG "Enabling tool '${_f}'" + . "${f}" + CT_TOOLS_FACILITY_LIST="${CT_TOOLS_FACILITY_LIST} ${_f}" + else + CT_DoLog DEBUG "Disabling tool '${_f}'" fi done diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/tools/000-template.sh --- a/scripts/build/tools/000-template.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/tools/000-template.sh Fri Oct 10 14:30:44 2008 +0000 @@ -1,19 +1,12 @@ # Template file for a tool utility -# Check here wether your tool is enabled or not. -# This will get redefined over and over again for each tool, so don't -# count on it in the functions below. -is_enabled="${CT_FOOBAR}" - # Small function to print the filename # Note that this function gets redefined over and over again for each tool. # It's of no use when building the toolchain proper, but shows all its # usefullness when saving the toolchain and building the tarball. -# You shall not echo anything if you're not enabled! # Echo the name of the file, without the extension, below. do_print_filename() { # For example: - # [ "{CT_FOOBAR}" = "y" ] || return 0 # echo "foobar-${CT_FOOBAR_VERSION}" : } diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/tools/100-libelf.sh --- a/scripts/build/tools/100-libelf.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/tools/100-libelf.sh Fri Oct 10 14:30:44 2008 +0000 @@ -1,9 +1,6 @@ # Build script for libelf -is_enabled="${CT_LIBELF}" - do_print_filename() { - [ "{CT_LIBELF}" = "y" ] || return 0 echo "libelf-${CT_LIBELF_VERSION}" } diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/build/tools/200-sstrip.sh --- a/scripts/build/tools/200-sstrip.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/build/tools/200-sstrip.sh Fri Oct 10 14:30:44 2008 +0000 @@ -1,7 +1,5 @@ # This will build and install sstrip to run on host and sstrip target files -is_enabled="${CT_SSTRIP}" - case "${CT_SSTRIP_FROM}" in ELFkickers) do_print_filename() { diff -r 452aa1d7f9b1 -r 68af6b83ff7e scripts/crosstool.sh --- a/scripts/crosstool.sh Fri Oct 10 08:46:29 2008 +0000 +++ b/scripts/crosstool.sh Fri Oct 10 14:30:44 2008 +0000 @@ -362,8 +362,8 @@ . "${CT_LIB_DIR}/scripts/build/binutils.sh" . "${CT_LIB_DIR}/scripts/build/libc/${CT_LIBC}.sh" . "${CT_LIB_DIR}/scripts/build/cc/${CT_CC}.sh" +. "${CT_LIB_DIR}/scripts/build/tools.sh" . "${CT_LIB_DIR}/scripts/build/debug.sh" -. "${CT_LIB_DIR}/scripts/build/tools.sh" if [ -z "${CT_RESTART}" ]; then CT_DoStep INFO "Retrieving needed toolchain components' tarballs"