From 9fdb93cce0a05e2562522153fe5deba8a9e9ae54 Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Wed, 29 Nov 2017 00:14:04 -0800 Subject: Make comp.libs use generated templates, too This allows us to include the component-to-package relation in the generated kconfig files and make use of that information in the show-config.sh script. Signed-off-by: Alexey Neyman diff --git a/bootstrap b/bootstrap index 0a7cee0..e497467 100755 --- a/bootstrap +++ b/bootstrap @@ -71,7 +71,7 @@ find_end() fi endline=$[endline + 1] done - error "line ${l}: '${token}' token is unpaired" + error "${template}:${l}: '${token}' token is unpaired" } set_iter() @@ -142,7 +142,7 @@ run_foreach() shift if [ "${info[iter_${var}]+set}" != "set" ]; then - error "line ${l}: iterator over '${var}' is not defined" + error "${template}:${l}: iterator over '${var}' is not defined" fi find_end "foreach" debug "Loop over '${var}', lines ${l}..${endline}" @@ -168,7 +168,7 @@ run_lines_if() fi ;; *) - error "line ${l}: unknown condition '${prev}' for loop" + error "${template}:${l}: unknown condition '${prev}' for loop" ;; esac prev= @@ -204,7 +204,7 @@ run_lines() pp="${v#${vp}}" # $vp is name of the variable proper, $pp is any postprocessing if [ "${info[${vp}]+set}" != "set" ]; then - error "line ${l}: reference to undefined variable '${vp}'" + error "${template}:${l}: reference to undefined variable '${vp}'" fi if [ "${info[${v}]+set}" != "set" ]; then # We know the base variable, need to cache postprocessed value @@ -232,7 +232,7 @@ run_lines() s="${s#*@@*@@}" ;; *@@*) - error "line ${l}: non-paired @@ markers" + error "${template}:${l}: non-paired @@ markers" ;; *) s1="${s1}${s}" @@ -254,7 +254,7 @@ run_lines() # Comment, do nothing ;; "#!"*) - error "line ${l}: unrecognized command" + error "${template}:${l}: unrecognized command" ;; *) # Not a special command @@ -273,6 +273,7 @@ run_template() if [ ! -r "${src}" ]; then error "Template '${src}' not found" fi + template="${src}" debug "Running template ${src}" mapfile -O 1 -t tlines < "${src}" run_lines 1 ${#tlines[@]} @@ -660,23 +661,39 @@ get_components() enter_choice() { local choice="${1}" - local l + local input="config/${info[dir]}/${choice}.in" + local l ln info[choice]="${choice}" + info[pkg]="${choice}" # Not local, we need these arrays be set in enter_dependency/enter_help deplines=( ) helplines=( ) + ln=0 while read l; do + ln=$[ln+1] case "${l}" in "## help "*) - helplines+=( "${l#* help }" ) + helplines+=( "${l#\#\# help }" ) ;; - "## depends "*|"## select "*) - deplines+=( "${l#* }" ) + "## depends "*|"## select "*|"## default "*) + deplines+=( "${l#\#\# }" ) + ;; + "## no-package") + info[pkg]= + ;; + "## package "*) + info[pkg]=${l#\#\# package } + ;; + "##"|"## help") + # accept empty, for formatting + ;; + "##"*) + error "${input}:${ln}: unrecognized command" ;; esac - done < "config/${info[dir]}/${choice}.in" + done < "${input}" set_iter dependency "${!deplines[@]}" set_iter help "${!helplines[@]}" } @@ -719,6 +736,7 @@ gen_selection choice binutils "Binutils" gen_selection choice libc "C library" gen_selection menu debug "Debug facilities" gen_selection menu comp_tools "Companion tools" +gen_selection menu comp_libs "Companion libraries" msg "*** Running autoconf" autoconf -Wall --force diff --git a/config/arch/alpha.in b/config/arch/alpha.in index f0d7fe0..e46772d 100644 --- a/config/arch/alpha.in +++ b/config/arch/alpha.in @@ -1,5 +1,6 @@ # Alpha specific configuration file +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_DEFAULT_32 ## select ARCH_USE_MMU diff --git a/config/arch/arm.in b/config/arch/arm.in index 72c329f..7ce7ef0 100644 --- a/config/arch/arm.in +++ b/config/arch/arm.in @@ -1,5 +1,6 @@ # ARM specific configuration file +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_SUPPORTS_64 ## select ARCH_DEFAULT_32 diff --git a/config/arch/avr.in b/config/arch/avr.in index cf8e9af..ddf0cb6 100644 --- a/config/arch/avr.in +++ b/config/arch/avr.in @@ -1,5 +1,6 @@ # AVR specific config options +## no-package ## select ARCH_SUPPORTS_8 ## select ARCH_DEFAULT_8 ## select ARCH_REQUIRES_MULTILIB diff --git a/config/arch/m68k.in b/config/arch/m68k.in index 6c76e78..60279da 100644 --- a/config/arch/m68k.in +++ b/config/arch/m68k.in @@ -1,5 +1,6 @@ # m68k specific configuration file +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_DEFAULT_32 ## select ARCH_DEFAULT_BE diff --git a/config/arch/microblaze.in b/config/arch/microblaze.in index 8c73b00..7e5ceea 100644 --- a/config/arch/microblaze.in +++ b/config/arch/microblaze.in @@ -1,5 +1,6 @@ # MicroBlaze specific config options +## no-package ## depends on EXPERIMENTAL ## ## select ARCH_SUPPORTS_WITH_CPU @@ -11,12 +12,12 @@ ## ## help The MicroBlaze architecture, as defined by: ## help http://www.xilinx.com/ -## help +## help ## help Upstream projects do not currently provide ## help full support for the microblaze architecture ## help and as such, this is marked as EXPERIMENTAL ## help for CT-NG. -## help +## help ## help Support is being added for a modern gcc, ## help binutils and gdb along with nptl threading ## help in glibc for microblaze. diff --git a/config/arch/mips.in b/config/arch/mips.in index 8cc68dc..ad8b1c6 100644 --- a/config/arch/mips.in +++ b/config/arch/mips.in @@ -1,5 +1,6 @@ # MIPS specific config options +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_SUPPORTS_64 ## select ARCH_DEFAULT_32 diff --git a/config/arch/msp430.in b/config/arch/msp430.in index e31d78b..320eca8 100644 --- a/config/arch/msp430.in +++ b/config/arch/msp430.in @@ -1,5 +1,6 @@ # MSP430 specific config options +## no-package ## select ARCH_SUPPORTS_16 ## select ARCH_DEFAULT_16 ## select ARCH_REQUIRES_MULTILIB diff --git a/config/arch/nios2.in b/config/arch/nios2.in index e024102..b3b1249 100644 --- a/config/arch/nios2.in +++ b/config/arch/nios2.in @@ -1,5 +1,6 @@ # NIOS232 specific configuration file +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_DEFAULT_32 ## select ARCH_SUPPORTS_BOTH_MMU diff --git a/config/arch/powerpc.in b/config/arch/powerpc.in index ae10e2d..40d88b9 100644 --- a/config/arch/powerpc.in +++ b/config/arch/powerpc.in @@ -1,5 +1,6 @@ # Powerpc specific configuration file +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_SUPPORTS_64 ## select ARCH_DEFAULT_32 diff --git a/config/arch/riscv.in b/config/arch/riscv.in index 1323347..e8c1297 100644 --- a/config/arch/riscv.in +++ b/config/arch/riscv.in @@ -1,5 +1,6 @@ # RISC-V specific config options +## no-package ## depends on EXPERIMENTAL ## ## select ARCH_SUPPORTS_32 diff --git a/config/arch/s390.in b/config/arch/s390.in index 00bc879..64107b6 100644 --- a/config/arch/s390.in +++ b/config/arch/s390.in @@ -1,5 +1,6 @@ # s390 specific config options +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_SUPPORTS_64 ## select ARCH_DEFAULT_32 diff --git a/config/arch/sh.in b/config/arch/sh.in index efced07..0c75e78 100644 --- a/config/arch/sh.in +++ b/config/arch/sh.in @@ -1,5 +1,6 @@ # Super-H specific configuration file +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_DEFAULT_32 ## select ARCH_USE_MMU diff --git a/config/arch/sparc.in b/config/arch/sparc.in index 27eaf9c..c5dafe0 100644 --- a/config/arch/sparc.in +++ b/config/arch/sparc.in @@ -1,5 +1,6 @@ # SPARC specific config options +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_SUPPORTS_64 ## select ARCH_DEFAULT_32 diff --git a/config/arch/x86.in b/config/arch/x86.in index 3863c02..ab89ccd 100644 --- a/config/arch/x86.in +++ b/config/arch/x86.in @@ -1,5 +1,6 @@ # x86 specific options +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_SUPPORTS_64 ## select ARCH_DEFAULT_32 diff --git a/config/arch/xtensa.in b/config/arch/xtensa.in index a376523..cf1fb64 100644 --- a/config/arch/xtensa.in +++ b/config/arch/xtensa.in @@ -1,5 +1,6 @@ # xtensa specific configuration file +## no-package ## select ARCH_SUPPORTS_32 ## select ARCH_SUPPORTS_EITHER_ENDIAN ## select ARCH_DEFAULT_LE diff --git a/config/binutils/binutils.in b/config/binutils/binutils.in index 3cb58f9..bd32bd6 100644 --- a/config/binutils/binutils.in +++ b/config/binutils/binutils.in @@ -2,8 +2,6 @@ comment "GNU binutils" -source "config/versions/binutils.in" - config BINUTILS_HAS_HASH_STYLE default y if BINUTILS_2_23_or_later bool @@ -187,7 +185,7 @@ comment "elf2flt" config ELF2FLT_REQUIRES def_bool y - select ZLIB + select ZLIB_NEEDED select BINUTILS_FORCE_LD_BFD_ONLY source "config/versions/elf2flt.in" diff --git a/config/cc/gcc.in b/config/cc/gcc.in index a11e8cd..48ec556 100644 --- a/config/cc/gcc.in +++ b/config/cc/gcc.in @@ -1,6 +1,5 @@ # GCC options -## default y ## select CC_SUPPORT_CXX if !LIBC_NONE ## select CC_SUPPORT_FORTRAN ## select CC_SUPPORT_JAVA if !GCC_7_or_later @@ -25,8 +24,6 @@ ## help gcc supports many languages, a powerful code parser, optimised binary ## help output, and lots of other features. -source "config/versions/gcc.in" - # Only enable gcc's support for plugins if binutils has it as well # They are useful only when doing LTO, but it does no harm enabling # them even without LTO. diff --git a/config/comp_libs.in b/config/comp_libs.in index 009aac8..55ca227 100644 --- a/config/comp_libs.in +++ b/config/comp_libs.in @@ -4,200 +4,146 @@ menu "Companion libraries" -config COMPLIBS_NEEDED +config COMPLIBS_CHECK bool + prompt "Check the companion libraries builds (!!! READ HELP!!!)" + help + It is highly recommended to check the newly built companion libraries. + Unfortunately, this is a very intensive task, and takes a loooong time. + + Checking the newly built companion libraries is thus disabled by default, + but it is suggested that you check them at least once on your machine, + and if they work, disable the check on subsequent builds. + + If you suspect that one (or more) of your companion libraries is the + cause for incorrectly generated code, you should answer 'Y' here. + Note however that this will take a really long time. + +source "config/gen/comp_libs.in" + +# FIXME this needs to have a list of options +# [ ] libfoo for build +# [ ] libfoo for host (if canadian) +# [ ] libfoo for target +# libfoo options --> +# +# Then have other packages *set default* for build/host +# (but not select, so that user can utilize build's or host's system library) +# and *select* the target (so that we build it if we must, and let user optionally +# build it if he wants). Upon any of these options LIBFOO_{BUILD,HOST,TARGET} +# being set, set LIBFOO_ENABLED and use that as a qualifier for submenu. +# For now, LIBFOO_NEEDED symbol may or may not user-selectable, and COMP_LIBS_LIBFOO +# determines whether it is actually built. LIBFOO_NEEDED is currently for build/host +# and LIBFOO_TARGET (if exists) is for target. config LIBICONV_NEEDED - bool - select LIBICONV - select COMPLIBS_NEEDED + bool "Build local libiconv" + default y if CANADIAN || CROSS_NATIVE + select COMP_LIBS_LIBICONV config GETTEXT_NEEDED - bool - select GETTEXT + bool "Build local gettext" + default y if CANADIAN || CROSS_NATIVE select LIBICONV_NEEDED - select COMPLIBS_NEEDED + select NCURSES_NEEDED + select COMP_LIBS_GETTEXT config GMP_NEEDED def_bool y - select GMP - select COMPLIBS_NEEDED + select COMP_LIBS_GMP config MPFR_NEEDED def_bool y - select MPFR - select COMPLIBS_NEEDED + select GMP_NEEDED + select COMP_LIBS_MPFR config ISL_NEEDED bool - select ISL - select COMPLIBS_NEEDED + select GMP_NEEDED + select COMP_LIBS_ISL config CLOOG_NEEDED bool - select CLOOG - select COMPLIBS_NEEDED + select GMP_NEEDED + select COMP_LIBS_CLOOG config MPC_NEEDED def_bool y - select MPC - select COMPLIBS_NEEDED + select GMP_NEEDED + select MPFR_NEEDED + select COMP_LIBS_MPC config LIBELF_NEEDED bool - select LIBELF - select COMPLIBS_NEEDED + select COMP_LIBS_LIBELF + +config LIBELF_TARGET + bool + select COMP_LIBS_LIBELF config EXPAT_NEEDED bool - select EXPAT - select COMPLIBS_NEEDED + select COMP_LIBS_EXPAT + +config EXPAT_TARGET + bool + select COMP_LIBS_EXPAT config NCURSES_NEEDED bool - select NCURSES - select COMPLIBS_NEEDED + select COMP_LIBS_NCURSES -config COMPLIBS +config NCURSES_TARGET bool + select COMP_LIBS_NCURSES +config ZLIB_NEEDED + bool "Build local zlib" + select COMP_LIBS_ZLIB + +# FIXME remove these legacy knobs config LIBICONV - bool "Build local libiconv" - default y if CANADIAN || CROSS_NATIVE - select COMPLIBS + def_bool y + depends on LIBICONV_NEEDED config GETTEXT - bool "Build local gettext" - default y if CANADIAN || CROSS_NATIVE - select LIBICONV_NEEDED - select NCURSES_NEEDED - select COMPLIBS + def_bool y + depends on GETTEXT_NEEDED config GMP - bool - select COMPLIBS + def_bool y + depends on GMP_NEEDED config MPFR - bool - select GMP - select COMPLIBS + def_bool y + depends on MPFR_NEEDED config ISL - bool - select GMP - select COMPLIBS + def_bool y + depends on ISL_NEEDED config CLOOG - bool - select GMP - select COMPLIBS + def_bool y + depends on CLOOG_NEEDED config MPC - bool - select GMP - select MPFR - select COMPLIBS + def_bool y + depends on MPC_NEEDED config LIBELF - bool - select COMPLIBS - -config LIBELF_TARGET - bool + def_bool y + depends on LIBELF_NEEDED config EXPAT - bool - select COMPLIBS - -config EXPAT_TARGET - bool + def_bool y + depends on EXPAT_NEEDED config NCURSES - bool - select COMPLIBS - -config NCURSES_TARGET - bool + def_bool y + depends on NCURSES_NEEDED config ZLIB - bool "Build local zlib" - -# FIXME this needs to have a list of options -# [ ] libfoo for build -# [ ] libfoo for host (if canadian) -# [ ] libfoo for target -# libfoo options --> -# -# Then have other packages *set default* for build/host -# (but not select, so that user can utilize build's or host's system library) -# and *select* the target (so that we build it if we must, and let user optionally -# build it if he wants). Upon any of these options LIBFOO_{BUILD,HOST,TARGET} -# being set, set LIBFOO_ENABLED and use that as a qualifier for submenu. -# For now, just have comments delineating the libs. -if ZLIB -comment "zlib options" -source "config/comp_libs/zlib.in" -endif -if LIBICONV -comment "libiconv options" -source "config/comp_libs/libiconv.in" -endif -if GETTEXT -comment "gettext options" -source "config/comp_libs/gettext.in" -endif -if GMP -comment "GMP options" -source "config/comp_libs/gmp.in" -endif -if MPFR -comment "MPFR options" -source "config/comp_libs/mpfr.in" -endif -if ISL -comment "ISL options" -source "config/comp_libs/isl.in" -endif -if CLOOG -comment "CLooG options" -source "config/comp_libs/cloog.in" -endif -if MPC -comment "MPC options" -source "config/comp_libs/mpc.in" -endif -if LIBELF || LIBELF_TARGET -comment "libelf options" -source "config/comp_libs/libelf.in" -endif -if EXPAT || EXPAT_TARGET -comment "expat options" -source "config/comp_libs/expat.in" -endif -if NCURSES || NCURSES_TARGET -comment "ncurses options" -source "config/comp_libs/ncurses.in" -endif - -if COMPLIBS - -comment "Companion libraries common options" - -config COMPLIBS_CHECK - bool - prompt "Check the companion libraries builds (!!! READ HELP!!!)" - help - It is highly recommended to check the newly built companion libraries. - Unfortunately, this is a very intensive task, and takes a loooong time. - - Checking the newly built companion libraries is thus disabled by default, - but it is suggested that you check them at least once on your machine, - and if they work, disable the check on subsequent builds. - - If you suspect that one (or more) of your companion libraries is the - cause for incorrectly generated code, you should answer 'Y' here. - Note however that this will take a really long time. - -endif # COMPLIBS + def_bool y + depends on ZLIB_NEEDED endmenu diff --git a/config/comp_libs/cloog.in b/config/comp_libs/cloog.in index b894de9..54cb76b 100644 --- a/config/comp_libs/cloog.in +++ b/config/comp_libs/cloog.in @@ -1,11 +1,8 @@ # CLooG options -## depends on OBSOLETE # CLooG 0.18.4 requires ISL 0.12 or newer # CLooG 0.18.1/0.18.0 requires ISL 0.12 or older -source "config/versions/cloog.in" - config CLOOG_HAS_WITH_GMP_ISL_OSL bool default y if CLOOG_0_18_or_later diff --git a/config/comp_libs/expat.in b/config/comp_libs/expat.in index a2753a4..c435757 100644 --- a/config/comp_libs/expat.in +++ b/config/comp_libs/expat.in @@ -1,3 +1 @@ # expat config file - -source "config/versions/expat.in" diff --git a/config/comp_libs/gettext.in b/config/comp_libs/gettext.in index 4928ede..df7e336 100644 --- a/config/comp_libs/gettext.in +++ b/config/comp_libs/gettext.in @@ -1,3 +1 @@ # gettext options - -source "config/versions/gettext.in" diff --git a/config/comp_libs/gmp.in b/config/comp_libs/gmp.in index 28359cd..9c7daf0 100644 --- a/config/comp_libs/gmp.in +++ b/config/comp_libs/gmp.in @@ -1,7 +1,5 @@ # GMP options -source "config/versions/gmp.in" - config GMP_HAS_MPBSD bool default y if !GMP_5_1_or_later diff --git a/config/comp_libs/isl.in b/config/comp_libs/isl.in index 9c74078..e0358ee 100644 --- a/config/comp_libs/isl.in +++ b/config/comp_libs/isl.in @@ -1,21 +1,6 @@ # ISL options -# FIXME these currently have no effect -## select CLOOG_REQUIRE_0_18_1_or_older if !ISL_0_12_or_later -## select CLOOG_REQUIRE_0_18_4_or_later if !ISL_0_14_or_older - -source "config/versions/isl.in" - -# FIXME should be auto-generated once companion libs are using gen-kconfig (and hence, ## syntax) -config ISL_CLOOG_auto_select_1 - def_bool y - depends on CLOOG_NEEDED && !ISL_0_12_or_later - select CLOOG_REQUIRE_0_18_1_or_older - -# FIXME should be auto-generated once companion libs are using gen-kconfig (and hence, ## syntax) -config ISL_CLOOG_auto_select_2 - def_bool y - depends on CLOOG_NEEDED && !ISL_0_13_or_older - select CLOOG_REQUIRE_0_18_4_or_later +## select CLOOG_REQUIRE_0_18_1_or_older if CLOOG_NEEDED && !ISL_0_12_or_later +## select CLOOG_REQUIRE_0_18_4_or_later if CLOOG_NEEDED && !ISL_0_14_or_older config ISL_NEEDS_WITH_GMP bool diff --git a/config/comp_libs/libelf.in b/config/comp_libs/libelf.in index 5b268c1..e1376c2 100644 --- a/config/comp_libs/libelf.in +++ b/config/comp_libs/libelf.in @@ -1,3 +1 @@ # libelf config file - -source "config/versions/libelf.in" diff --git a/config/comp_libs/libiconv.in b/config/comp_libs/libiconv.in index 99d3365..35cf1c4 100644 --- a/config/comp_libs/libiconv.in +++ b/config/comp_libs/libiconv.in @@ -1,3 +1 @@ # libiconv options - -source "config/versions/libiconv.in" diff --git a/config/comp_libs/mpc.in b/config/comp_libs/mpc.in index 790e755..2d948a7 100644 --- a/config/comp_libs/mpc.in +++ b/config/comp_libs/mpc.in @@ -1,3 +1 @@ # MPC options - -source "config/versions/mpc.in" diff --git a/config/comp_libs/mpfr.in b/config/comp_libs/mpfr.in index 5ed7ac8..f49d1a7 100644 --- a/config/comp_libs/mpfr.in +++ b/config/comp_libs/mpfr.in @@ -1,3 +1 @@ # GMP options - -source "config/versions/mpfr.in" diff --git a/config/comp_libs/ncurses.in b/config/comp_libs/ncurses.in index 7087fbe..c54713c 100644 --- a/config/comp_libs/ncurses.in +++ b/config/comp_libs/ncurses.in @@ -1,6 +1,4 @@ -# expat config file - -source "config/versions/ncurses.in" +# ncurses config file config NCURSES_NEW_ABI bool "ncurses 6.0 ABI support" diff --git a/config/comp_libs/zlib.in b/config/comp_libs/zlib.in index 70668e2..3481166 100644 --- a/config/comp_libs/zlib.in +++ b/config/comp_libs/zlib.in @@ -1,3 +1 @@ # Zlib options - -source "config/versions/zlib.in" diff --git a/config/comp_tools/autoconf.in b/config/comp_tools/autoconf.in index b49017d..b84d587 100644 --- a/config/comp_tools/autoconf.in +++ b/config/comp_tools/autoconf.in @@ -3,5 +3,3 @@ ## default y if !CONFIGURE_has_autoconf_2_63_or_newer ## default y if !CONFIGURE_has_autoreconf_2_63_or_newer ## help Autoconf - -source "config/versions/autoconf.in" diff --git a/config/comp_tools/automake.in b/config/comp_tools/automake.in index 455200e..6982156 100644 --- a/config/comp_tools/automake.in +++ b/config/comp_tools/automake.in @@ -2,5 +2,3 @@ ## default y if !CONFIGURE_has_automake_1_15_or_newer ## help Automake - -source "config/versions/automake.in" diff --git a/config/comp_tools/libtool.in b/config/comp_tools/libtool.in index 071b53e..253a731 100644 --- a/config/comp_tools/libtool.in +++ b/config/comp_tools/libtool.in @@ -2,5 +2,3 @@ ## default y if !CONFIGURE_has_libtool_2_4_or_newer ## default y if !CONFIGURE_has_libtoolize_2_4_or_newer - -source "config/versions/libtool.in" diff --git a/config/comp_tools/m4.in b/config/comp_tools/m4.in index 1a81a9f..de59a7f 100644 --- a/config/comp_tools/m4.in +++ b/config/comp_tools/m4.in @@ -1,5 +1,3 @@ # GNU m4 ## default y if !CONFIGURE_has_gnu_m4_1_4_12_or_newer - -source "config/versions/m4.in" diff --git a/config/comp_tools/make.in b/config/comp_tools/make.in index 07331d5..8d0ac29 100644 --- a/config/comp_tools/make.in +++ b/config/comp_tools/make.in @@ -2,8 +2,6 @@ ## default y if !CONFIGURE_has_make_3_81_or_newer -source "config/versions/make.in" - config MAKE_GMAKE_SYMLINK bool prompt "Add gmake symlink to companion gnu/make" diff --git a/config/debug/duma.in b/config/debug/duma.in index c837c65..bc69e17 100644 --- a/config/debug/duma.in +++ b/config/debug/duma.in @@ -7,8 +7,6 @@ ## help A memory bound checker, with additional features. ## help Formerly known as Electric Fence. -source "config/versions/duma.in" - config DUMA_SO bool prompt "Build a shared library" diff --git a/config/debug/gdb.in b/config/debug/gdb.in index 3fe486f..02882aa 100644 --- a/config/debug/gdb.in +++ b/config/debug/gdb.in @@ -2,8 +2,6 @@ ## help gdb is the GNU debugger -source "config/versions/gdb.in" - source "config/debug/gdb.in.cross" source "config/debug/gdb.in.native" source "config/debug/gdb.in.gdbserver" diff --git a/config/debug/ltrace.in b/config/debug/ltrace.in index 01ad147..1cdd157 100644 --- a/config/debug/ltrace.in +++ b/config/debug/ltrace.in @@ -8,8 +8,6 @@ ## help the executed process and the signals which are received by that process. ## help It can also intercept and print the system calls executed by the program. -source "config/versions/ltrace.in" - # Ltrace 0.5.3 had a unique hand-crafted configure script that has to be # run differently from any preceding or following releases. This serves # as a reminder to remove that code once 0.5.3 support is dropped. diff --git a/config/debug/strace.in b/config/debug/strace.in index 160a518..6f335b2 100644 --- a/config/debug/strace.in +++ b/config/debug/strace.in @@ -1,5 +1,3 @@ # strace ## depends on ! LIBC_BIONIC - -source "config/versions/strace.in" diff --git a/config/kernel/bare-metal.in b/config/kernel/bare-metal.in index fdccb0c..8ff875a 100644 --- a/config/kernel/bare-metal.in +++ b/config/kernel/bare-metal.in @@ -1,5 +1,6 @@ # Bare metal config options +## no-package ## select BARE_METAL ## ## help 'Bare metal' refers to those programs that run without any kernel. diff --git a/config/kernel/linux.in b/config/kernel/linux.in index b8d433a..fb16067 100644 --- a/config/kernel/linux.in +++ b/config/kernel/linux.in @@ -12,8 +12,6 @@ # (including versions in between) until the EOL dates indicated below. # Such pinned versions are indicated in version.desc files with a comment. -source "config/versions/linux.in" - choice bool prompt "Kernel verbosity:" diff --git a/config/kernel/windows.in b/config/kernel/windows.in index e649787..33ca5af 100644 --- a/config/kernel/windows.in +++ b/config/kernel/windows.in @@ -1,5 +1,6 @@ # windows config options +## no-package ## depends on ARCH_X86 ## depends on EXPERIMENTAL ## diff --git a/config/libc/avr-libc.in b/config/libc/avr-libc.in index 836fed8..f35a206 100644 --- a/config/libc/avr-libc.in +++ b/config/libc/avr-libc.in @@ -9,8 +9,6 @@ ## help Atmel AVR 8-bit RISC microcontrollers. In addition, the library ## help provides the basic startup code needed by most applications. -source "config/versions/avr-libc.in" - config LIBC_AVR_LIBC_EXTRA_CONFIG_ARRAY string prompt "Extra config for avr-libc" diff --git a/config/libc/bionic.in b/config/libc/bionic.in index 41b87a1..da663b4 100644 --- a/config/libc/bionic.in +++ b/config/libc/bionic.in @@ -1,5 +1,6 @@ # bionic options +## package android-ndk ## depends on ! WINDOWS && ! BARE_METAL ## depends on ARCH_ARM || ARCH_MIPS || ARCH_X86 ## depends on EXPERIMENTAL @@ -11,8 +12,6 @@ ## help This platform has no TLS (Thread Local Storage) support so that option must be ## help disabled in the Compiler options. -source "config/versions/android-ndk.in" - config THREADS default "posix" diff --git a/config/libc/glibc.in b/config/libc/glibc.in index c600326..fcd449d 100644 --- a/config/libc/glibc.in +++ b/config/libc/glibc.in @@ -16,7 +16,7 @@ # the kernel/libc versions of a particular target system, and LTS releases # are still using quite ancient versions. Please do not retire versions # (including versions in between) until the EOL dates indicated in version.desc. -source "config/versions/glibc.in" + if GLIBC_USE_PORTS_EXTERNAL source "config/versions/glibc-ports.in" endif diff --git a/config/libc/mingw-w64.in b/config/libc/mingw-w64.in index 34f8dbc..02b18a2 100644 --- a/config/libc/mingw-w64.in +++ b/config/libc/mingw-w64.in @@ -8,8 +8,6 @@ ## ## help The de-facto standard for Mingw distributions. -source "config/versions/mingw-w64.in" - config MINGW_W64_REQUIRES_W64_VENDOR bool default y if MINGW_W64_V4_or_later diff --git a/config/libc/musl.in b/config/libc/musl.in index e16e85a..b2ed8bf 100644 --- a/config/libc/musl.in +++ b/config/libc/musl.in @@ -9,8 +9,6 @@ ## help devices. musl is lightweight, fast, simple, free, and strives to be ## help correct in the sense of standards-conformance and safety. -source "config/versions/musl.in" - # TBD why? it claims "native", why report "musl"? config THREADS default "musl" diff --git a/config/libc/newlib.in b/config/libc/newlib.in index f43a67d..268f956 100644 --- a/config/libc/newlib.in +++ b/config/libc/newlib.in @@ -12,8 +12,6 @@ ## help array of processors, and will usually work on any architecture with ## help the addition of a few low-level routines. -source "config/versions/newlib.in" - # maybe older versions of newlib will support it too, but this # needs to be checked config NEWLIB_CXA_ATEXIT diff --git a/config/libc/none.in b/config/libc/none.in index b8860b0..713f33c 100644 --- a/config/libc/none.in +++ b/config/libc/none.in @@ -1,5 +1,6 @@ # Dummy config file to not use a C library *at all* +## no-package ## depends on BARE_METAL ## ## help Do not use a C library. diff --git a/config/libc/uClibc.in b/config/libc/uClibc.in index e12c3fd..174dfdc 100644 --- a/config/libc/uClibc.in +++ b/config/libc/uClibc.in @@ -12,8 +12,6 @@ ## help Highly configurable, thus as feature-rich as you ## help need, without compromising for size. -source "config/versions/uClibc.in" - config THREADS default "nptl" if THREADS_NATIVE default "linuxthreads" if THREADS_LT diff --git a/maintainer/kconfig-choice.template b/maintainer/kconfig-choice.template index ec66f74..affaf65 100644 --- a/maintainer/kconfig-choice.template +++ b/maintainer/kconfig-choice.template @@ -25,7 +25,7 @@ config @@dir|@@ default "@@choice@@" if @@dir|@@_@@choice|@@ #!end-foreach -config @@dir|@@_KSYM +config @@dir|@@_CHOICE_KSYM string #!foreach choice default "@@choice|@@" if @@dir|@@_@@choice|@@ @@ -33,6 +33,14 @@ config @@dir|@@_KSYM #!foreach choice if @@dir|@@_@@choice|@@ +config @@dir|@@_@@choice|@@_PKG_KSYM + string + default "@@pkg|@@" + +#!if [ -n "@@pkg@@" ] +source "config/versions/@@pkg@@.in" +#!end-if source "config/@@dir@@/@@choice@@.in" endif + #!end-foreach diff --git a/maintainer/kconfig-menu.template b/maintainer/kconfig-menu.template index 1a7daa5..3e32e16 100644 --- a/maintainer/kconfig-menu.template +++ b/maintainer/kconfig-menu.template @@ -14,6 +14,13 @@ menuconfig @@dir|@@_@@choice|@@ #!end-foreach if @@dir|@@_@@choice|@@ +config @@dir|@@_@@choice|@@_PKG_KSYM + string + default "@@pkg|@@" + +#!if [ -n "@@pkg@@" ] +source "config/versions/@@pkg@@.in" +#!end-if source "config/@@dir@@/@@choice@@.in" endif diff --git a/scripts/functions b/scripts/functions index 5910619..d46ac36 100644 --- a/scripts/functions +++ b/scripts/functions @@ -2225,14 +2225,23 @@ CT_GetPkgVersion() # (e.g. LIBC). CT_GetPkgBuildVersion() { - local pkg="${1}" - local tmp - local build_version - - # If it is a choice selector, switch to whatever specific package it selects - eval "tmp=\${CT_${pkg}_KSYM}" - if [ -n "${tmp}" ]; then - pkg="${tmp}" + local category="${1}" + local component="${2}" + local var="${3}" + local choicename tmp pkg build_version + + # If it is for a choice, not a menu, get the choice name + eval "choicename=\${CT_${category}}" + + # Find the associated package + eval "pkg=\${CT_${category}_${component}_PKG_KSYM}" + if [ -z "${pkg}" ]; then + # This component does not have an associated package, + # return the component name. + if [ -n "${choicename}" ]; then + eval "${var}=\"${choicename}\"" + fi + return fi __do_GetPkgBuildVersion() { @@ -2245,8 +2254,23 @@ CT_GetPkgBuildVersion() elif [ "${src_custom}" = "y" ]; then tmp+="-custom" fi + if [ -n "${choicename}" -a "${pkg}" != "${component}" ]; then + tmp+=" (${choicename})" + fi } CT_PackageRun "${pkg}" __do_GetPkgBuildVersion - eval "${2}=\"${tmp}\"" + eval "${var}=\"${tmp}\"" +} + +# Get a package version as selected by a generated choice in kconfig. +CT_GetChoicePkgBuildVersion() +{ + local choice="${1}" + local var="${2}" + local component + + # Find the selected component + eval "component=\${CT_${choice}_CHOICE_KSYM}" + CT_GetPkgBuildVersion "${choice}" "${component}" "${var}" } diff --git a/scripts/show-config.sh b/scripts/show-config.sh index ea50102..9e56f07 100644 --- a/scripts/show-config.sh +++ b/scripts/show-config.sh @@ -10,22 +10,49 @@ # GREP_OPTIONS screws things up. export GREP_OPTIONS= +fieldwidth=15 + # Dummy version which is invoked from .config CT_Mirrors() { :; } # Dump a short package description with a name and version in a format # " [-]" -dump_pkg_desc() { - local name=$1 +dump_pkgs_desc() +{ + local category="${1}" + local field="${2}" + shift 2 + local show_version + local tmp + + printf " %-*s :" ${fieldwidth} "${field}" + while [ -n "${1}" ]; do + eval "tmp=\"\${CT_${category}_${1}}\"" + if [ -n "${tmp}" ]; then + CT_GetPkgBuildVersion "${category}" "${1}" show_version + printf " %s" "${show_version}" + fi + shift + done + printf "\n" +} + +# Dump a short package description with a name and version in a format +# " [-]" +dump_choice_desc() +{ + local category="${1}" + local field="${2}" local show_version - CT_GetPkgBuildVersion ${1} show_version - printf " %s" "${show_version}" + CT_GetChoicePkgBuildVersion "${category}" show_version + printf " %-*s : %s\n" ${fieldwidth} "${field}" "${show_version}" } # Dump a single sample # Note: we use the specific .config.sample config file -dump_single_sample() { +dump_single_sample() +{ local verbose=0 local complibs [ "$1" = "-v" ] && verbose=1 && shift @@ -51,7 +78,6 @@ dump_single_sample() { fi ;; esac - width=14 printf "[%s" "${sample_type}" [ -f "${sample_top}/samples/${sample}/broken" ] && printf "B" || printf "." [ "${CT_EXPERIMENTAL}" = "y" ] && printf "X" || printf "." @@ -60,25 +86,17 @@ dump_single_sample() { case "${CT_TOOLCHAIN_TYPE}" in cross) ;; canadian) - printf " %-*s : %s\n" ${width} "Host" "${CT_HOST}" + printf " %-*s : %s\n" ${fieldwidth} "Host" "${CT_HOST}" ;; esac - if [ "${CT_KERNEL}" != "bare-metal" ]; then - printf " %-*s :" ${width} "OS" && dump_pkg_desc KERNEL && printf "\n" - fi - printf " %-*s :" ${width} "Companion libs" - [ -z "${CT_GMP}" ] || dump_pkg_desc GMP - [ -z "${CT_MPFR}" ] || dump_pkg_desc MPFR - [ -z "${CT_ISL}" ] || dump_pkg_desc ISL - [ -z "${CT_CLOOG}" ] || dump_pkg_desc CLOOG - [ -z "${CT_MPC}" ] || dump_pkg_desc MPC - [ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || dump_pkg_desc LIBELF - [ -z "${CT_EXPAT}" -a -z "${CT_EXPAT_TARGET}" ] || dump_pkg_desc EXPAT - [ -z "${CT_NCURSES}" -a -z "${CT_NCURSES_TARGET}" ] || dump_pkg_desc NCURSES - printf "\n" - printf " %-*s :" ${width} "Binutils" && dump_pkg_desc BINUTILS && printf "\n" - printf " %-*s :" ${width} "Compilers" && dump_pkg_desc CC && printf "\n" - printf " %-*s : %s" ${width} "Languages" "C" + # FIXME get choice/menu names from generated kconfig files as well + # FIXME get the list of menu components from generated kconfig files + dump_choice_desc KERNEL "OS" + dump_pkgs_desc COMP_LIBS "Companion libs" GMP MPFR MPC ISL CLOOG LIBELF EXPAT NCURSES \ + LIBICONV GETTEXT + dump_choice_desc BINUTILS "Binutils" + dump_choice_desc CC "Compiler" + printf " %-*s : %s" ${fieldwidth} "Languages" "C" [ "${CT_CC_LANG_CXX}" = "y" ] && printf ",C++" [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran" [ "${CT_CC_LANG_JAVA}" = "y" ] && printf ",Java" @@ -88,13 +106,10 @@ dump_single_sample() { [ "${CT_CC_LANG_GOLANG}" = "y" ] && printf ",Go" [ -n "${CT_CC_LANG_OTHERS}" ] && printf ",${CT_CC_LANG_OTHERS}" printf "\n" - printf " %-*s :" ${width} "C library" && dump_pkg_desc LIBC && printf " (threads: %s)\n" "${CT_THREADS}" - printf " %-*s :" ${width} "Tools" - [ "${CT_DEBUG_DUMA}" ] && dump_pkg_desc DUMA - [ "${CT_DEBUG_GDB}" ] && dump_pkg_desc GDB - [ "${CT_DEBUG_LTRACE}" ] && dump_pkg_desc LTRACE - [ "${CT_DEBUG_STRACE}" ] && dump_pkg_desc STRACE - printf "\n" + + dump_choice_desc LIBC "C library" + dump_pkgs_desc DEBUG "Debug tools" DUMA GDB LTRACE STRACE + dump_pkgs_desc COMP_TOOLS "Companion tools" AUTOCONF AUTOMAKE LIBTOOL M4 MAKE fi } -- cgit v0.10.2-6-g49f6