summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbootstrap40
-rw-r--r--config/arch/alpha.in1
-rw-r--r--config/arch/arm.in1
-rw-r--r--config/arch/avr.in1
-rw-r--r--config/arch/m68k.in1
-rw-r--r--config/arch/microblaze.in5
-rw-r--r--config/arch/mips.in1
-rw-r--r--config/arch/msp430.in1
-rw-r--r--config/arch/nios2.in1
-rw-r--r--config/arch/powerpc.in1
-rw-r--r--config/arch/riscv.in1
-rw-r--r--config/arch/s390.in1
-rw-r--r--config/arch/sh.in1
-rw-r--r--config/arch/sparc.in1
-rw-r--r--config/arch/x86.in1
-rw-r--r--config/arch/xtensa.in1
-rw-r--r--config/binutils/binutils.in4
-rw-r--r--config/cc/gcc.in3
-rw-r--r--config/comp_libs.in228
-rw-r--r--config/comp_libs/cloog.in3
-rw-r--r--config/comp_libs/expat.in2
-rw-r--r--config/comp_libs/gettext.in2
-rw-r--r--config/comp_libs/gmp.in2
-rw-r--r--config/comp_libs/isl.in19
-rw-r--r--config/comp_libs/libelf.in2
-rw-r--r--config/comp_libs/libiconv.in2
-rw-r--r--config/comp_libs/mpc.in2
-rw-r--r--config/comp_libs/mpfr.in2
-rw-r--r--config/comp_libs/ncurses.in4
-rw-r--r--config/comp_libs/zlib.in2
-rw-r--r--config/comp_tools/autoconf.in2
-rw-r--r--config/comp_tools/automake.in2
-rw-r--r--config/comp_tools/libtool.in2
-rw-r--r--config/comp_tools/m4.in2
-rw-r--r--config/comp_tools/make.in2
-rw-r--r--config/debug/duma.in2
-rw-r--r--config/debug/gdb.in2
-rw-r--r--config/debug/ltrace.in2
-rw-r--r--config/debug/strace.in2
-rw-r--r--config/kernel/bare-metal.in1
-rw-r--r--config/kernel/linux.in2
-rw-r--r--config/kernel/windows.in1
-rw-r--r--config/libc/avr-libc.in2
-rw-r--r--config/libc/bionic.in3
-rw-r--r--config/libc/glibc.in2
-rw-r--r--config/libc/mingw-w64.in2
-rw-r--r--config/libc/musl.in2
-rw-r--r--config/libc/newlib.in2
-rw-r--r--config/libc/none.in1
-rw-r--r--config/libc/uClibc.in2
-rw-r--r--maintainer/kconfig-choice.template10
-rw-r--r--maintainer/kconfig-menu.template7
-rw-r--r--scripts/functions42
-rw-r--r--scripts/show-config.sh75
54 files changed, 236 insertions, 272 deletions
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
# " <name>[-<version>]"
-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
+# " <name>[-<version>]"
+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
}