Give companion tools some love.

Allow selection of make/m4/... version. Support imports of new versions
via addToolVersion.sh. Import newest versions of the companion tools.

One non-trivial change is the handling of make versions. Existing code
was not handling make companion tool as described (see the previous
commit). However, since most modern systems have make 4.x, that previous
commit made crosstool-ng always build make as a companion tool.

This traces back to the commit dd15c93 from 2014. That commit's log message
says that actually it was 3.81 which broke the build for certain component
(it was originally breaking eglibc, but I noticed it was breaking current
glibc on powerpc64), and introduced an option to force using 3.81 by
"components that really need it". It looks like in 2.5 years we haven't
seen any such components that really need make 3.81, and (given that make
has already had a few releases since 3.81) we're unlikely to see them
in the future.

Hence, the configure check is changed from "exactly 3.81" to "3.81 or newer".
In its current form, configure will accept make 3.80+, and will not require
make as a companion tool for 3.81+. We might want to bump the latter check
to even newer version given the claim from dd15c93. Killed
COMP_TOOLS_make_3_81_NEEDED.

Anyway, I retained 3.81 just in case; ditto for m4 1.14.3, autoconf 2.65
and automake 1.11.1.

Signed-off-by: Alexey Neyman <stilor@att.net>
This commit is contained in:
Alexey Neyman 2016-11-21 12:09:54 -08:00
parent 488b27f58b
commit 87bfd55b3b
14 changed files with 211 additions and 77 deletions

View File

@ -2,14 +2,9 @@
menu "Companion tools"
# Tools that require make-3.81 to build should select this:
config COMP_TOOLS_make_3_81_NEEDED
bool
config COMP_TOOLS_FORCE_make_3_81
def_bool y
depends on COMP_TOOLS_make_3_81_NEEDED
depends on ! CONFIGURE_has_make381
depends on ! CONFIGURE_has_make_3_81_or_newer
select COMP_TOOLS
select COMP_TOOLS_make
@ -20,7 +15,7 @@ config COMP_TOOLS
prompt "Build some companion tools"
help
Crosstool-NG relies on some external tools to be recent enough, namely:
make = 3.81 (in some cases)
make >= 3.81
m4 >= 1.4.12
autoconf >= 2.63
automake >= 1.10.2
@ -30,32 +25,7 @@ config COMP_TOOLS
but you are strongly encouraged to update your system instead!
if COMP_TOOLS
config COMP_TOOLS_make
bool
prompt "make"
config COMP_TOOLS_make_gmake
bool
prompt "Add gmake symlink to companion gnu/make"
depends on COMP_TOOLS_make
config COMP_TOOLS_m4
bool
prompt "m4"
config COMP_TOOLS_autoconf
bool
prompt "autoconf"
config COMP_TOOLS_automake
bool
prompt "automake"
config COMP_TOOLS_libtool
bool
prompt "libtool"
source "config.gen/companion_tools.in"
endif
endmenu

View File

@ -0,0 +1,26 @@
# Autoconf
## help Autoconf
choice
bool
prompt "Autoconf version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config AUTOCONF_V_2_69
bool
prompt "2.69"
config AUTOCONF_V_2_65
bool
prompt "2.65"
endchoice
config AUTOCONF_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "2.69" if AUTOCONF_V_2_69
default "2.65" if AUTOCONF_V_2_65

View File

@ -0,0 +1,36 @@
# Automake
## help Automake
choice
bool
prompt "Automake version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config AUTOMAKE_V_1_15
bool
prompt "1.15"
config AUTOMAKE_V_1_14
bool
prompt "1.14"
config AUTOMAKE_V_1_11_6
bool
prompt "1.11.6"
config AUTOMAKE_V_1_11_1
bool
prompt "1.11.1"
endchoice
config AUTOMAKE_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "1.15" if AUTOMAKE_V_1_15
default "1.14" if AUTOMAKE_V_1_14
default "1.11.6" if AUTOMAKE_V_1_11_6
default "1.11.1" if AUTOMAKE_V_1_11_1

View File

@ -0,0 +1,21 @@
# Libtool
## help Libtool
choice
bool
prompt "Libtool version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config LIBTOOL_V_2_4_6
bool
prompt "2.4.6"
endchoice
config LIBTOOL_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "2.4.6" if LIBTOOL_V_2_4_6

View File

@ -0,0 +1,26 @@
# GNU m4
## help GNU m4
choice
bool
prompt "m4 version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config M4_V_1_4_17
bool
prompt "1.4.17"
config M4_V_1_4_13
bool
prompt "1.4.13"
endchoice
config M4_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "1.4.17" if M4_V_1_4_17
default "1.4.13" if M4_V_1_4_13

View File

@ -0,0 +1,41 @@
# GNU make
## help GNU make
choice
bool
prompt "make version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config MAKE_V_4_2_1
bool
prompt "4.2.1"
config MAKE_V_4_1
bool
prompt "4.1"
config MAKE_V_4_0
bool
prompt "4.0"
config MAKE_V_3_81
bool
prompt "3.81"
endchoice
config MAKE_GMAKE_SYMLINK
bool
prompt "Add gmake symlink to companion gnu/make"
depends on COMP_TOOLS_make
config MAKE_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "4.2.1" if MAKE_V_4_2_1
default "4.1" if MAKE_V_4_1
default "4.0" if MAKE_V_4_0
default "3.81" if MAKE_V_3_81

View File

@ -26,14 +26,16 @@ BINUTILS_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LI
LIBC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/libc/*.in)))
LIBC_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/libc/*.in.2)))
DEBUG_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/debug/*.in)))
COMP_TOOLS_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/companion_tools/*.in)))
# Build the list of generated config files
GEN_CONFIG_FILES = config.gen/arch.in \
config.gen/kernel.in \
config.gen/cc.in \
config.gen/binutils.in \
config.gen/libc.in \
config.gen/debug.in
GEN_CONFIG_FILES = config.gen/arch.in \
config.gen/kernel.in \
config.gen/cc.in \
config.gen/binutils.in \
config.gen/libc.in \
config.gen/debug.in \
config.gen/companion_tools.in
# ... and how to access them:
# Generated files depends on the gen_in_frags script because it has the
# functions needed to build the genrated files, and thus they might need
@ -67,6 +69,7 @@ CCS = $(patsubst config/cc/%.in,%,$(CC_CONFIG_FILES))
BINUTILSS = $(patsubst config/binutils/%.in,%,$(BINUTILS_CONFIG_FILES))
LIBCS = $(patsubst config/libc/%.in,%,$(LIBC_CONFIG_FILES))
DEBUGS = $(patsubst config/debug/%.in,%,$(DEBUG_CONFIG_FILES))
COMP_TOOLS= $(patsubst config/companion_tools/%.in,%,$(COMP_TOOLS_CONFIG_FILES))
#-----------------------------------------------------------
# The rules for the generated config files
@ -97,6 +100,10 @@ config.gen/debug.in: $(DEBUG_CONFIG_FILES)
@$(CT_ECHO) ' IN $(@)'
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "Debug facilities" "DEBUG" "config/debug" $(DEBUGS)
config.gen/companion_tools.in: $(COMP_TOOLS_CONFIG_FILES)
@$(CT_ECHO) ' IN $(@)'
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "Companion tools" "COMP_TOOLS" "config/companion_tools" $(COMP_TOOLS)
#-----------------------------------------------------------
# Cleaning up the mess...

View File

@ -241,19 +241,21 @@ AC_CACHE_CHECK([for GNU make >= 3.80], [ac_cv_path_MAKE],
AC_SUBST([MAKE], [$ac_cv_path_MAKE])
AC_PROG_MAKE_SET
# Check for GNU make 3.81 exactly, otherwise
# Check for GNU make 3.81 or newer, otherwise
# it will be built as a companion tool.
AC_MSG_CHECKING([for make 3.81])
AC_MSG_CHECKING([if make is 3.81 or newer])
AS_IF(
[test "$MAKE_ver" = "GNU Make 3.81"],
[make381="y"
[[MAKE_ver2=$(echo "$MAKE_ver" \
|$EGREP '^GNU Make (3.81|3.9[0-9]|[4-9])')
test -n "$MAKE_ver2"]],
[make_3_81_or_newer="y"
AC_MSG_RESULT([yes])
],
[make381=
[make_3_81_or_newer=
AC_MSG_RESULT([no])
]
)
ACX_SET_KCONFIG_OPTION([make381])
ACX_SET_KCONFIG_OPTION([make_3_81_or_newer])
#----------------------------------------
# Check for libtool >= 1.5.26

View File

@ -143,6 +143,16 @@ addToolVersion() {
SedExpr1="${SedExpr1}\n select LIBC_UCLIBC_0_9_33_2_or_later"
fi
;;
uClibc-ng)
# uClibc-ng-1.0.15 changed threading configuration, no longer compatible
# with the rest of uClibc gang.
ver_M=$(getVersionField "${version}" . 1)
ver_m=$(getVersionField "${version}" . 2)
ver_p=$(getVersionField "${version}" . 3)
if [ ${ver_M} -eq 0 -a ${ver_m} -eq 9 -a ${ver_p} -eq 33 ]; then
SedExpr1="${SedExpr1}\n select LIBC_UCLIBC_NG_1_0_15_or_later"
fi
;;
gdb)
# gdb-7.0 and above have special handling
ver_M=$(getVersionField "${version}" . 1)
@ -175,27 +185,32 @@ fi
while [ $# -gt 0 ]; do
case "$1" in
# Tools:
--gcc) EXP=; OBS=; cat=CC_GCC; tool=gcc; tool_prefix=cc; dot2suffix=;;
--binutils) EXP=; OBS=; cat=BINUTILS; tool=binutils; tool_prefix=binutils; dot2suffix=;;
--glibc) EXP=; OBS=; cat=LIBC_GLIBC; tool=glibc; tool_prefix=libc; dot2suffix=;;
--uClibc) EXP=; OBS=; cat=LIBC_UCLIBC; tool=uClibc; tool_prefix=libc; dot2suffix=;;
--uClibc-ng)EXP=; OBS=; cat=LIBC_UCLIBC_NG; tool=uClibc; tool_prefix=libc; dot2suffix=;;
--newlib) EXP=; OBS=; cat=LIBC_NEWLIB; tool=newlib; tool_prefix=libc; dot2suffix=;;
--mingw-w64)EXP=; OBS=; cat=WINAPI; tool=mingw; tool_prefix=libc; dot2suffix=;;
--linux) EXP=; OBS=; cat=KERNEL; tool=linux; tool_prefix=kernel; dot2suffix=;;
--gdb) EXP=; OBS=; cat=GDB; tool=gdb; tool_prefix=debug; dot2suffix=;;
--dmalloc) EXP=; OBS=; cat=DMALLOC; tool=dmalloc; tool_prefix=debug; dot2suffix=;;
--duma) EXP=; OBS=; cat=DUMA; tool=duma; tool_prefix=debug; dot2suffix=;;
--strace) EXP=; OBS=; cat=STRACE; tool=strace; tool_prefix=debug; dot2suffix=;;
--ltrace) EXP=; OBS=; cat=LTRACE; tool=ltrace; tool_prefix=debug; dot2suffix=;;
--gmp) EXP=; OBS=; cat=GMP; tool=gmp; tool_prefix=companion_libs; dot2suffix=;;
--mpfr) EXP=; OBS=; cat=MPFR; tool=mpfr; tool_prefix=companion_libs; dot2suffix=;;
--isl) EXP=; OBS=; cat=ISL; tool=isl; tool_prefix=companion_libs; dot2suffix=;;
--cloog) EXP=; OBS=; cat=CLOOG; tool=cloog; tool_prefix=companion_libs; dot2suffix=;;
--mpc) EXP=; OBS=; cat=MPC; tool=mpc; tool_prefix=companion_libs; dot2suffix=;;
--libelf) EXP=; OBS=; cat=LIBELF; tool=libelf; tool_prefix=companion_libs; dot2suffix=;;
--expat) EXP=; OBS=; cat=EXPAT; tool=expat; tool_prefix=companion_libs; dot2suffix=;;
--ncurses) EXP=; OBS=; cat=NCURSES; tool=ncurses; tool_prefix=companion_libs; dot2suffix=;;
--gcc) EXP=; OBS=; cat=CC_GCC; tool=gcc; tool_prefix=cc; dot2suffix=;;
--binutils) EXP=; OBS=; cat=BINUTILS; tool=binutils; tool_prefix=binutils; dot2suffix=;;
--glibc) EXP=; OBS=; cat=LIBC_GLIBC; tool=glibc; tool_prefix=libc; dot2suffix=;;
--uClibc) EXP=; OBS=; cat=LIBC_UCLIBC; tool=uClibc; tool_prefix=libc; dot2suffix=;;
--uClibc-ng)EXP=; OBS=; cat=LIBC_UCLIBC_NG; tool=uClibc; tool_prefix=libc; dot2suffix=;;
--newlib) EXP=; OBS=; cat=LIBC_NEWLIB; tool=newlib; tool_prefix=libc; dot2suffix=;;
--mingw-w64)EXP=; OBS=; cat=WINAPI; tool=mingw; tool_prefix=libc; dot2suffix=;;
--linux) EXP=; OBS=; cat=KERNEL; tool=linux; tool_prefix=kernel; dot2suffix=;;
--gdb) EXP=; OBS=; cat=GDB; tool=gdb; tool_prefix=debug; dot2suffix=;;
--dmalloc) EXP=; OBS=; cat=DMALLOC; tool=dmalloc; tool_prefix=debug; dot2suffix=;;
--duma) EXP=; OBS=; cat=DUMA; tool=duma; tool_prefix=debug; dot2suffix=;;
--strace) EXP=; OBS=; cat=STRACE; tool=strace; tool_prefix=debug; dot2suffix=;;
--ltrace) EXP=; OBS=; cat=LTRACE; tool=ltrace; tool_prefix=debug; dot2suffix=;;
--gmp) EXP=; OBS=; cat=GMP; tool=gmp; tool_prefix=companion_libs; dot2suffix=;;
--mpfr) EXP=; OBS=; cat=MPFR; tool=mpfr; tool_prefix=companion_libs; dot2suffix=;;
--isl) EXP=; OBS=; cat=ISL; tool=isl; tool_prefix=companion_libs; dot2suffix=;;
--cloog) EXP=; OBS=; cat=CLOOG; tool=cloog; tool_prefix=companion_libs; dot2suffix=;;
--mpc) EXP=; OBS=; cat=MPC; tool=mpc; tool_prefix=companion_libs; dot2suffix=;;
--libelf) EXP=; OBS=; cat=LIBELF; tool=libelf; tool_prefix=companion_libs; dot2suffix=;;
--expat) EXP=; OBS=; cat=EXPAT; tool=expat; tool_prefix=companion_libs; dot2suffix=;;
--ncurses) EXP=; OBS=; cat=NCURSES; tool=ncurses; tool_prefix=companion_libs; dot2suffix=;;
--make) EXP=; OBS=; cat=MAKE; tool=make; tool_prefix=companion_tools; dot2suffix=;;
--m4) EXP=; OBS=; cat=M4; tool=m4; tool_prefix=companion_tools; dot2suffix=;;
--autoconf) EXP=; OBS=; cat=AUTOCONF; tool=autoconf; tool_prefix=companion_tools; dot2suffix=;;
--automake) EXP=; OBS=; cat=AUTOMAKE; tool=automake; tool_prefix=companion_tools; dot2suffix=;;
--libtool) EXP=; OBS=; cat=LIBTOOL; tool=libtool; tool_prefix=companion_tools; dot2suffix=;;
# Tools options:
-x|--experimental|+s) EXP=1;;

View File

@ -1,7 +1,5 @@
# Build script for make
CT_MAKE_VERSION=3.81
do_companion_tools_make_get() {
CT_GetFile "make-${CT_MAKE_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/make
@ -22,7 +20,7 @@ do_companion_tools_make_build() {
--prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
CT_DoExecLog ALL make
CT_DoExecLog ALL make install
if [ "${CT_COMP_TOOLS_make_gmake}" = "y" ]; then
if [ "${CT_MAKE_GMAKE_SYMLINK}" = "y" ]; then
CT_DoExecLog ALL ln -sv make "${CT_BUILDTOOLS_PREFIX_DIR}/bin/gmake"
fi
CT_Popd

View File

@ -1,7 +1,5 @@
# Build script for m4
CT_M4_VERSION=1.4.13
do_companion_tools_m4_get() {
CT_GetFile "m4-${CT_M4_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/m4

View File

@ -1,7 +1,5 @@
# Build script for autoconf
CT_AUTOCONF_VERSION=2.65
do_companion_tools_autoconf_get() {
CT_GetFile "autoconf-${CT_AUTOCONF_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/autoconf

View File

@ -1,7 +1,5 @@
# Build script for automake
CT_AUTOMAKE_VERSION=1.11.1
do_companion_tools_automake_get() {
CT_GetFile "automake-${CT_AUTOMAKE_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/automake

View File

@ -1,7 +1,5 @@
# Build script for libtool
CT_LIBTOOL_VERSION=2.4.6
do_companion_tools_libtool_get() {
CT_GetFile "libtool-${CT_LIBTOOL_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/libtool