mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-01-19 11:17:00 +00:00
Add 'companion tools for host' step.
Signed-off-by: Alexey Neyman <stilor@att.net>
This commit is contained in:
parent
3f7fbd7bed
commit
cf86df688a
@ -24,7 +24,15 @@ config COMP_TOOLS
|
||||
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_FOR_HOST
|
||||
bool
|
||||
prompt "Install companion tools for host"
|
||||
help
|
||||
Enable this option if you want to include the selected companion
|
||||
tools into the final toolchain (rather than just using them
|
||||
to build it).
|
||||
|
||||
if COMP_TOOLS || COMP_TOOLS_FOR_HOST
|
||||
source "config.gen/companion_tools.in"
|
||||
endif
|
||||
|
||||
|
@ -29,9 +29,45 @@ do_companion_tools_extract() {
|
||||
done
|
||||
}
|
||||
|
||||
# Build the companion tools facilities
|
||||
# Build the companion tools facilities for build
|
||||
do_companion_tools_for_build() {
|
||||
# Skip out if:
|
||||
# - native/cross, and companion tools were neither selected
|
||||
# to be built, nor included in the final toolchain
|
||||
# - canadian/cross-native, and companion tools were not
|
||||
# selected to be built
|
||||
case "${CT_TOOLCHAIN_TYPE}" in
|
||||
native|cross)
|
||||
if [ -z "${CT_COMP_TOOLS}${CT_COMP_TOOLS_FOR_HOST}" ]; then
|
||||
return
|
||||
fi
|
||||
;;
|
||||
canadian|cross-native)
|
||||
if [ -z "${CT_COMP_TOOLS}" ]; then
|
||||
return
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
|
||||
do_companion_tools_${f}_for_build
|
||||
done
|
||||
}
|
||||
|
||||
# Build the companion tools facilities for host
|
||||
do_companion_tools_for_host() {
|
||||
# For native/cross, build==host, and the tools were built
|
||||
# earlier by do_companion_tools_for_build.
|
||||
case "${CT_TOOLCHAIN_TYPE}" in
|
||||
native|cross)
|
||||
return
|
||||
;;
|
||||
canadian|cross-native)
|
||||
if [ -z "${CT_COMP_TOOLS_FOR_HOST}" ]; then
|
||||
return
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
|
||||
do_companion_tools_${f}_for_host
|
||||
done
|
||||
}
|
||||
|
@ -12,22 +12,56 @@ do_companion_tools_make_extract() {
|
||||
}
|
||||
|
||||
do_companion_tools_make_for_build() {
|
||||
CT_DoStep EXTRA "Installing make"
|
||||
mkdir -p "${CT_BUILD_DIR}/build-make"
|
||||
CT_Pushd "${CT_BUILD_DIR}/build-make"
|
||||
CT_DoStep EXTRA "Installing make for build"
|
||||
CT_mkdir_pushd "${CT_BUILD_DIR}/build-make-build"
|
||||
do_make_backend \
|
||||
host=${CT_BUILD} \
|
||||
prefix="${CT_BUILD_COMPTOOLS_DIR}" \
|
||||
cflags="${CT_CFLAGS_FOR_BUILD}" \
|
||||
ldflags="${CT_LDFLAGS_FOR_BUILD}"
|
||||
CT_Popd
|
||||
if [ "${CT_MAKE_GMAKE_SYMLINK}" = "y" ]; then
|
||||
CT_DoExecLog ALL ln -sv make "${CT_BUILD_COMPTOOLS_DIR}/bin/gmake"
|
||||
fi
|
||||
CT_EndStep
|
||||
}
|
||||
|
||||
do_companion_tools_make_for_host() {
|
||||
CT_DoStep EXTRA "Installing make for host"
|
||||
CT_mkdir_pushd "${CT_BUILD_DIR}/build-make-host"
|
||||
do_make_backend \
|
||||
host=${CT_HOST} \
|
||||
prefix="${CT_PREFIX_DIR}" \
|
||||
cflags="${CT_CFLAGS_FOR_HOST}" \
|
||||
ldflags="${CT_LDFLAGS_FOR_HOST}"
|
||||
CT_Popd
|
||||
if [ "${CT_MAKE_GMAKE_SYMLINK}" = "y" ]; then
|
||||
CT_DoExecLog ALL ln -sv make "${CT_PREFIX_DIR}/bin/gmake"
|
||||
fi
|
||||
CT_EndStep
|
||||
}
|
||||
|
||||
do_make_backend() {
|
||||
local host
|
||||
local prefix
|
||||
local cflags
|
||||
local ldflags
|
||||
|
||||
for arg in "$@"; do
|
||||
eval "${arg// /\\ }"
|
||||
done
|
||||
|
||||
CT_DoLog EXTRA "Configuring make"
|
||||
CT_DoExecLog CFG "${CT_SRC_DIR}/make-${CT_MAKE_VERSION}/configure" \
|
||||
--prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
|
||||
CT_DoExecLog CFG \
|
||||
CFLAGS="${cflags}" \
|
||||
LDFLAGS="${ldflags}" \
|
||||
"${CT_SRC_DIR}/make-${CT_MAKE_VERSION}/configure" \
|
||||
--host="${host}" \
|
||||
--prefix="${prefix}"
|
||||
|
||||
CT_DoLog EXTRA "Building make"
|
||||
CT_DoExecLog ALL make
|
||||
|
||||
CT_DoLog EXTRA "Installing make"
|
||||
CT_DoExecLog ALL make install
|
||||
if [ "${CT_MAKE_GMAKE_SYMLINK}" = "y" ]; then
|
||||
CT_DoExecLog ALL ln -sv make "${CT_BUILDTOOLS_PREFIX_DIR}/bin/gmake"
|
||||
fi
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
@ -11,20 +11,59 @@ do_companion_tools_m4_extract() {
|
||||
}
|
||||
|
||||
do_companion_tools_m4_for_build() {
|
||||
CT_DoStep EXTRA "Installing m4"
|
||||
mkdir -p "${CT_BUILD_DIR}/build-m4"
|
||||
CT_Pushd "${CT_BUILD_DIR}/build-m4"
|
||||
|
||||
CT_DoStep EXTRA "Installing m4 for build"
|
||||
CT_mkdir_pushd "${CT_BUILD_DIR}/build-m4-build"
|
||||
do_m4_backend \
|
||||
host=${CT_BUILD} \
|
||||
prefix="${CT_BUILD_COMPTOOLS_DIR}" \
|
||||
cflags="${CT_CFLAGS_FOR_BUILD}" \
|
||||
ldflags="${CT_LDFLAGS_FOR_BUILD}"
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
||||
do_companion_tools_m4_for_host() {
|
||||
CT_DoStep EXTRA "Installing m4 for host"
|
||||
CT_mkdir_pushd "${CT_BUILD_DIR}/build-m4-host"
|
||||
do_m4_backend \
|
||||
host=${CT_HOST} \
|
||||
prefix="${CT_PREFIX_DIR}" \
|
||||
cflags="${CT_CFLAGS_FOR_HOST}" \
|
||||
ldflags="${CT_LDFLAGS_FOR_HOST}"
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
||||
do_m4_backend() {
|
||||
local host
|
||||
local prefix
|
||||
local cflags
|
||||
local ldflags
|
||||
|
||||
for arg in "$@"; do
|
||||
eval "${arg// /\\ }"
|
||||
done
|
||||
|
||||
case "${host}" in
|
||||
*-uclibc)
|
||||
# uClibc has posix_spawn in librt, but m4 configure only
|
||||
# searches in libc. This leads to a later failure when
|
||||
# it includes system <spawn.h> but expects a locally-built
|
||||
# posix_spawn().
|
||||
ldflags="${ldflags} -lrt"
|
||||
esac
|
||||
|
||||
CT_DoLog EXTRA "Configuring m4"
|
||||
CT_DoExecLog CFG \
|
||||
"${CT_SRC_DIR}/m4-${CT_M4_VERSION}/configure" \
|
||||
--prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
|
||||
CFLAGS="${cflags}" \
|
||||
LDFLAGS="${ldflags}" \
|
||||
"${CT_SRC_DIR}/m4-${CT_M4_VERSION}/configure" \
|
||||
--host="${host}" \
|
||||
--prefix="${prefix}"
|
||||
|
||||
CT_DoLog EXTRA "Building m4"
|
||||
CT_DoExecLog ALL make
|
||||
|
||||
CT_DoLog EXTRA "Building m4"
|
||||
CT_DoLog EXTRA "Installing m4"
|
||||
CT_DoExecLog ALL make install
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
@ -12,25 +12,42 @@ do_companion_tools_autoconf_extract() {
|
||||
}
|
||||
|
||||
do_companion_tools_autoconf_for_build() {
|
||||
CT_DoStep EXTRA "Installing autoconf"
|
||||
mkdir -p "${CT_BUILD_DIR}/build-autoconf"
|
||||
CT_Pushd "${CT_BUILD_DIR}/build-autoconf"
|
||||
|
||||
CT_DoStep EXTRA "Installing autoconf for build"
|
||||
CT_mkdir_pushd "${CT_BUILD_DIR}/build-autoconf-build"
|
||||
do_autoconf_backend host=${CT_BUILD} prefix="${CT_BUILD_COMPTOOLS_DIR}"
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
||||
do_companion_tools_autoconf_for_host() {
|
||||
CT_DoStep EXTRA "Installing autoconf for host"
|
||||
CT_mkdir_pushd "${CT_BUILD_DIR}/build-autoconf-host"
|
||||
do_autoconf_backend host=${CT_HOST} prefix="${CT_PREFIX_DIR}"
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
||||
do_autoconf_backend() {
|
||||
local host
|
||||
local prefix
|
||||
|
||||
for arg in "$@"; do
|
||||
eval "${arg// /\\ }"
|
||||
done
|
||||
|
||||
# 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_005fSHELL
|
||||
|
||||
CT_DoLog EXTRA "Configuring autoconf"
|
||||
CT_DoExecLog CFG ${CONFIG_SHELL} \
|
||||
"${CT_SRC_DIR}/autoconf-${CT_AUTOCONF_VERSION}/configure" \
|
||||
--prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
|
||||
--host="${host}" \
|
||||
--prefix="${prefix}"
|
||||
|
||||
CT_DoLog EXTRA "Building autoconf"
|
||||
CT_DoExecLog ALL make
|
||||
|
||||
CT_DoLog EXTRA "Installing autoconf"
|
||||
CT_DoExecLog ALL make install
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
@ -12,20 +12,37 @@ do_companion_tools_automake_extract() {
|
||||
}
|
||||
|
||||
do_companion_tools_automake_for_build() {
|
||||
CT_DoStep EXTRA "Installing automake"
|
||||
mkdir -p "${CT_BUILD_DIR}/build-automake"
|
||||
CT_Pushd "${CT_BUILD_DIR}/build-automake"
|
||||
|
||||
CT_DoStep EXTRA "Installing automake for build"
|
||||
CT_mkdir_pushd "${CT_BUILD_DIR}/build-automake-build"
|
||||
do_automake_backend host=${CT_BUILD} prefix="${CT_BUILD_COMPTOOLS_DIR}"
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
||||
do_companion_tools_automake_for_host() {
|
||||
CT_DoStep EXTRA "Installing automake for host"
|
||||
CT_mkdir_pushd "${CT_BUILD_DIR}/build-automake-host"
|
||||
do_automake_backend host=${CT_HOST} prefix="${CT_PREFIX_DIR}"
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
||||
do_automake_backend() {
|
||||
local host
|
||||
local prefix
|
||||
|
||||
for arg in "$@"; do
|
||||
eval "${arg// /\\ }"
|
||||
done
|
||||
|
||||
CT_DoLog EXTRA "Configuring automake"
|
||||
CT_DoExecLog CFG \
|
||||
"${CT_SRC_DIR}/automake-${CT_AUTOMAKE_VERSION}/configure" \
|
||||
--prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
|
||||
CT_DoExecLog CFG "${CT_SRC_DIR}/automake-${CT_AUTOMAKE_VERSION}/configure" \
|
||||
--host="${host}" \
|
||||
--prefix="${prefix}"
|
||||
|
||||
CT_DoLog EXTRA "Building automake"
|
||||
CT_DoExecLog ALL make
|
||||
|
||||
CT_DoLog EXTRA "Installing automake"
|
||||
CT_DoExecLog ALL make install
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
@ -12,20 +12,37 @@ do_companion_tools_libtool_extract() {
|
||||
}
|
||||
|
||||
do_companion_tools_libtool_for_build() {
|
||||
CT_DoStep EXTRA "Installing libtool"
|
||||
mkdir -p "${CT_BUILD_DIR}/build-libtool"
|
||||
CT_Pushd "${CT_BUILD_DIR}/build-libtool"
|
||||
|
||||
CT_DoStep EXTRA "Installing libtool for build"
|
||||
CT_mkdir_pushd "${CT_BUILD_DIR}/build-libtool-build"
|
||||
do_libtool_backend host=${CT_BUILD} prefix="${CT_BUILD_COMPTOOLS_DIR}"
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
||||
do_companion_tools_libtool_for_host() {
|
||||
CT_DoStep EXTRA "Installing libtool for host"
|
||||
CT_mkdir_pushd "${CT_BUILD_DIR}/build-libtool-host"
|
||||
do_libtool_backend host=${CT_HOST} prefix="${CT_PREFIX_DIR}"
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
||||
do_libtool_backend() {
|
||||
local host
|
||||
local prefix
|
||||
|
||||
for arg in "$@"; do
|
||||
eval "${arg// /\\ }"
|
||||
done
|
||||
|
||||
CT_DoLog EXTRA "Configuring libtool"
|
||||
CT_DoExecLog CFG \
|
||||
"${CT_SRC_DIR}/libtool-${CT_LIBTOOL_VERSION}/configure" \
|
||||
--prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
|
||||
CT_DoExecLog CFG "${CT_SRC_DIR}/libtool-${CT_LIBTOOL_VERSION}/configure" \
|
||||
--host="${host}" \
|
||||
--prefix="${prefix}"
|
||||
|
||||
CT_DoLog EXTRA "Building libtool"
|
||||
CT_DoExecLog ALL make
|
||||
|
||||
CT_DoLog EXTRA "Installing libtool"
|
||||
CT_DoExecLog ALL make install
|
||||
CT_Popd
|
||||
CT_EndStep
|
||||
}
|
||||
|
@ -185,12 +185,23 @@ CT_STATE_DIR="${CT_WORK_DIR}/${CT_TARGET}/state"
|
||||
# sub-dir. So we won't have to save/restore it, not even create it.
|
||||
# In case of cross or native, host-complibs are used for build-complibs;
|
||||
# in case of canadian or cross-native, host-complibs are specific
|
||||
# Note about BUILD_COMPTOOLS_DIR: if installing companion tools for "host" in
|
||||
# a native or simple cross, we can can use the same binaries we built for
|
||||
# "build". However, we need companion tools for "build" early - as other
|
||||
# components may depend on them - so we may skip building for "host" rather
|
||||
# than for "build" in that case.
|
||||
case "${CT_TOOLCHAIN_TYPE}" in
|
||||
native|cross)
|
||||
CT_HOST_COMPLIBS_DIR="${CT_BUILDTOOLS_PREFIX_DIR}"
|
||||
if [ -n "${CT_COMP_TOOLS_FOR_HOST}" ]; then
|
||||
CT_BUILD_COMPTOOLS_DIR="${CT_PREFIX_DIR}"
|
||||
else
|
||||
CT_BUILD_COMPTOOLS_DIR="${CT_BUILDTOOLS_PREFIX_DIR}"
|
||||
fi
|
||||
;;
|
||||
canadian|cross-native)
|
||||
CT_HOST_COMPLIBS_DIR="${CT_BUILDTOOLS_PREFIX_DIR}/complibs-host"
|
||||
CT_BUILD_COMPTOOLS_DIR="${CT_BUILDTOOLS_PREFIX_DIR}"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user