aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Neyman <stilor@att.net>2016-11-21 12:09:54 -0800
committerAlexey Neyman <stilor@att.net>2016-11-21 23:03:03 -0800
commit87bfd55b3b5329c7f306fa291ca5e0950a2c9da1 (patch)
treeaa666685885104ed985b4c743ad3222968e7ae54
parent488b27f58bfdb3c9c523448acfa17b51325fec03 (diff)
downloadcrosstool-ng-87bfd55b3b5329c7f306fa291ca5e0950a2c9da1.tar.gz
crosstool-ng-87bfd55b3b5329c7f306fa291ca5e0950a2c9da1.tar.bz2
crosstool-ng-87bfd55b3b5329c7f306fa291ca5e0950a2c9da1.zip
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>
-rw-r--r--config/companion_tools.in36
-rw-r--r--config/companion_tools/autoconf.in26
-rw-r--r--config/companion_tools/automake.in36
-rw-r--r--config/companion_tools/libtool.in21
-rw-r--r--config/companion_tools/m4.in26
-rw-r--r--config/companion_tools/make.in41
-rw-r--r--config/config.mk19
-rw-r--r--configure.ac14
-rwxr-xr-xscripts/addToolVersion.sh57
-rw-r--r--scripts/build/companion_tools/050-make.sh4
-rw-r--r--scripts/build/companion_tools/100-m4.sh2
-rw-r--r--scripts/build/companion_tools/200-autoconf.sh2
-rw-r--r--scripts/build/companion_tools/300-automake.sh2
-rw-r--r--scripts/build/companion_tools/400-libtool.sh2
14 files changed, 211 insertions, 77 deletions
diff --git a/config/companion_tools.in b/config/companion_tools.in
index f9223884..ece35524 100644
--- a/config/companion_tools.in
+++ b/config/companion_tools.in
@@ -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
diff --git a/config/companion_tools/autoconf.in b/config/companion_tools/autoconf.in
new file mode 100644
index 00000000..3b33df61
--- /dev/null
+++ b/config/companion_tools/autoconf.in
@@ -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
diff --git a/config/companion_tools/automake.in b/config/companion_tools/automake.in
new file mode 100644
index 00000000..500ae14d
--- /dev/null
+++ b/config/companion_tools/automake.in
@@ -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
diff --git a/config/companion_tools/libtool.in b/config/companion_tools/libtool.in
new file mode 100644
index 00000000..62e6ee1c
--- /dev/null
+++ b/config/companion_tools/libtool.in
@@ -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
diff --git a/config/companion_tools/m4.in b/config/companion_tools/m4.in
new file mode 100644
index 00000000..b99a4666
--- /dev/null
+++ b/config/companion_tools/m4.in
@@ -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
diff --git a/config/companion_tools/make.in b/config/companion_tools/make.in
new file mode 100644
index 00000000..0935cd86
--- /dev/null
+++ b/config/companion_tools/make.in
@@ -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
diff --git a/config/config.mk b/config/config.mk
index 669e1576..670ecbae 100644
--- a/config/config.mk
+++ b/config/config.mk
@@ -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...
diff --git a/configure.ac b/configure.ac
index 86510150..492d315a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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
diff --git a/scripts/addToolVersion.sh b/scripts/addToolVersion.sh
index 72baac01..643dcbb8 100755
--- a/scripts/addToolVersion.sh
+++ b/scripts/addToolVersion.sh
@@ -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;;
diff --git a/scripts/build/companion_tools/050-make.sh b/scripts/build/companion_tools/050-make.sh
index 42475458..9458a255 100644
--- a/scripts/build/companion_tools/050-make.sh
+++ b/scripts/build/companion_tools/050-make.sh
@@ -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
diff --git a/scripts/build/companion_tools/100-m4.sh b/scripts/build/companion_tools/100-m4.sh
index dd8380e1..83ab8159 100644
--- a/scripts/build/companion_tools/100-m4.sh
+++ b/scripts/build/companion_tools/100-m4.sh
@@ -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
diff --git a/scripts/build/companion_tools/200-autoconf.sh b/scripts/build/companion_tools/200-autoconf.sh
index 78e1b32f..e6e5764d 100644
--- a/scripts/build/companion_tools/200-autoconf.sh
+++ b/scripts/build/companion_tools/200-autoconf.sh
@@ -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
diff --git a/scripts/build/companion_tools/300-automake.sh b/scripts/build/companion_tools/300-automake.sh
index ae0c49be..52f62d2f 100644
--- a/scripts/build/companion_tools/300-automake.sh
+++ b/scripts/build/companion_tools/300-automake.sh
@@ -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
diff --git a/scripts/build/companion_tools/400-libtool.sh b/scripts/build/companion_tools/400-libtool.sh
index 43d1f053..cfe0f634 100644
--- a/scripts/build/companion_tools/400-libtool.sh
+++ b/scripts/build/companion_tools/400-libtool.sh
@@ -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