# HG changeset patch # User Richard Strand # Date 1263326970 -3600 # Node ID 5f222264bb54d2c75f1efb09937dcdb5328bdd85 # Parent f581da7fe34e2695912a1119db990cb731c2a8ce companion_tools/autoconf: add autoconf tool Initial version of adding autoconf as a companion tool. Signed-off-by: Richard Strand [yann.morin.1998@anciens.enib.fr: use generic overide tools dir] [yann.morin.1998@anciens.enib.fr: update menu entries] Signed-off-by: "Yann E. MORIN" diff -r f581da7fe34e -r 5f222264bb54 config/companion_tools.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/companion_tools.in Tue Jan 12 21:09:30 2010 +0100 @@ -0,0 +1,28 @@ +# Companion tools config options + +if EXPERIMENTAL + +menu "Companion tools" + +comment "READ HELP before you say 'Y' below !!!" +config COMP_TOOLS + bool + prompt "Build some companion tools" + help + Crosstool-NG relies on some external tools to be recent enough, namely: + autoconf >= 2.63 + + If your system has older versions, we can build them for you, + but you are strongly encouraged to update your system instead! + +if COMP_TOOLS + +config COMP_TOOLS_autoconf + bool + prompt "autoconf" + +endif + +endmenu + +endif diff -r f581da7fe34e -r 5f222264bb54 config/config.in --- a/config/config.in Tue Jan 12 21:21:39 2010 +0100 +++ b/config/config.in Tue Jan 12 21:09:30 2010 +0100 @@ -8,3 +8,4 @@ source config/debug.in source config/tools.in source config/companion_libs.in +source config/companion_tools.in diff -r f581da7fe34e -r 5f222264bb54 scripts/build/companion_tools.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/companion_tools.sh Tue Jan 12 21:09:30 2010 +0100 @@ -0,0 +1,38 @@ +# Wrapper to build the companion tools facilities + +# List all companion tools facilities, and parse their scripts +CT_COMP_TOOLS_FACILITY_LIST= +for f in "${CT_LIB_DIR}/scripts/build/companion_tools/"*.sh; do + _f="$(basename "${f}" .sh)" + _f="${_f#???-}" + __f="CT_COMP_TOOLS_${_f}" + if [ "${!__f}" = "y" ]; then + CT_DoLog DEBUG "Enabling companion tools '${_f}'" + . "${f}" + CT_COMP_TOOLS_FACILITY_LIST="${CT_COMP_TOOLS_FACILITY_LIST} ${_f}" + else + CT_DoLog DEBUG "Disabling companion tools '${_f}'" + fi +done + +# Download the companion tools facilities +do_companion_tools_get() { + for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do + do_companion_tools_${f}_get + done +} + +# Extract and patch the companion tools facilities +do_companion_tools_extract() { + for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do + do_companion_tools_${f}_extract + done +} + +# Build the companion tools facilities +do_companion_tools() { + for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do + do_companion_tools_${f}_build + done +} + diff -r f581da7fe34e -r 5f222264bb54 scripts/build/companion_tools/200-autoconf.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/companion_tools/200-autoconf.sh Tue Jan 12 21:09:30 2010 +0100 @@ -0,0 +1,32 @@ +# Build script for autoconf + +CT_AUTOCONF_VERSION=2.65 + +do_companion_tools_autoconf_get() { + CT_GetFile "autoconf-${CT_AUTOCONF_VERSION}" \ + {ftp,http}://ftp.gnu.org/gnu/autoconf +} + +do_companion_tools_autoconf_extract() { + CT_Extract "autoconf-${CT_AUTOCONF_VERSION}" + CT_Patch "autoconf-${CT_AUTOCONF_VERSION}" +} + +do_companion_tools_autoconf_build() { + CT_DoStep EXTRA "Installing autoconf" + mkdir -p "${CT_BUILD_DIR}/build-autoconf" + CT_Pushd "${CT_BUILD_DIR}/build-autoconf" + + # Ensure configure gets run using the CONFIG_SHELL as configure seems to + # have trouble when CONFIG_SHELL is set and /bin/sh isn't bash + # For reference see: + # http://www.gnu.org/software/autoconf/manual/autoconf.html#CONFIG_005fSHEL + + CT_DoExecLog ALL ${CONFIG_SHELL} \ + "${CT_SRC_DIR}/autoconf-${CT_AUTOCONF_VERSION}/configure" \ + --prefix="${CT_TOOLS_OVERIDE_DIR}" + CT_DoExecLog ALL make + CT_DoExecLog ALL make install + CT_Popd + CT_EndStep +} diff -r f581da7fe34e -r 5f222264bb54 scripts/crosstool-NG.sh.in --- a/scripts/crosstool-NG.sh.in Tue Jan 12 21:21:39 2010 +0100 +++ b/scripts/crosstool-NG.sh.in Tue Jan 12 21:09:30 2010 +0100 @@ -114,6 +114,7 @@ # export any variable, nor re-parse the configuration and functions files. . "${CT_LIB_DIR}/scripts/build/internals.sh" . "${CT_LIB_DIR}/scripts/build/arch/${CT_ARCH}.sh" +. "${CT_LIB_DIR}/scripts/build/companion_tools.sh" . "${CT_LIB_DIR}/scripts/build/kernel/${CT_KERNEL}.sh" . "${CT_LIB_DIR}/scripts/build/companion_libs/gmp.sh" . "${CT_LIB_DIR}/scripts/build/companion_libs/mpfr.sh" @@ -493,6 +494,7 @@ CT_DoLog INFO "Downloading forbidden by configuration, skipping downloads" else CT_DoStep INFO "Retrieving needed toolchain components' tarballs" + do_companion_tools_get do_kernel_get do_gmp_get do_mpfr_get @@ -512,6 +514,14 @@ CT_DoForceRmdir "${CT_SRC_DIR}" CT_DoExecLog ALL mkdir -p "${CT_SRC_DIR}" fi + + if [ "${CT_COMP_TOOLS}" = "y" ]; then + CT_DoStep INFO "Extracting, patching and installing companion tools" + do_companion_tools_extract + do_companion_tools + CT_EndStep + fi + CT_DoStep INFO "Extracting and patching toolchain components" do_kernel_extract do_gmp_extract