Merge pull request #249 from stilor/expat_ncurses

Promote expat/ncurses to 'companion libs'
This commit is contained in:
Bryan Hundven 2015-11-14 17:40:21 -08:00
commit 465e5a8b9f
21 changed files with 396 additions and 248 deletions

View File

@ -53,6 +53,16 @@ config LIBELF_NEEDED
select LIBELF
select COMPLIBS_NEEDED
config EXPAT_NEEDED
bool
select EXPAT
select COMPLIBS_NEEDED
config NCURSES_NEEDED
bool
select NCURSES
select COMPLIBS_NEEDED
config COMPLIBS
bool
@ -101,6 +111,20 @@ config LIBELF
config LIBELF_TARGET
bool
config EXPAT
bool
select COMPLIBS
config EXPAT_TARGET
bool
config NCURSES
bool
select COMPLIBS
config NCURSES_TARGET
bool
if LIBICONV
source "config/companion_libs/libiconv.in"
endif
@ -130,9 +154,16 @@ comment "libelf version needed to build for target"
depends on !LIBELF
source "config/companion_libs/libelf.in"
endif
config FOO
bool
if EXPAT || EXPAT_TARGET
comment "expat version needed to build for target"
depends on !EXPAT
source "config/companion_libs/expat.in"
endif
if NCURSES || NCURSES_TARGET
comment "ncurses version needed to build for target"
depends on !NCURSES
source "config/companion_libs/ncurses.in"
endif
if COMPLIBS

View File

@ -0,0 +1,19 @@
# expat config file
choice
bool
prompt "expat version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config EXPAT_V_2_1_0
bool
prompt "2.1.0"
endchoice
config EXPAT_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "2.1.0" if EXPAT_V_2_1_0

View File

@ -0,0 +1,19 @@
# expat config file
choice
bool
prompt "ncurses version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config NCURSES_V_5_9
bool
prompt "5.9"
endchoice
config NCURSES_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "5.9" if NCURSES_V_5_9

View File

@ -8,6 +8,8 @@ config GDB_CROSS
prompt "Cross-gdb"
default y
select GDB_GDBSERVER if ! BARE_METAL
select EXPAT_NEEDED
select NCURSES_NEEDED
help
Build and install a cross-gdb for the target, to run on host.

View File

@ -5,6 +5,8 @@ config GDB_NATIVE
prompt "Native gdb"
depends on ! BARE_METAL
depends on ! BACKEND
select EXPAT_TARGET
select NCURSES_TARGET
help
Build and install a native gdb for the target, to run on the target.

View File

@ -12,7 +12,6 @@ CT_HOST="i686-w64-mingw32"
CT_BINUTILS_V_2_25=y
CT_CC_LANG_CXX=y
CT_DEBUG_gdb=y
# CT_GDB_CROSS is not set
CT_MPFR_V_3_1_2=y
CT_ISL_V_0_12_2=y
CT_MPC_V_1_0_2=y

View File

@ -18,7 +18,7 @@ doHelp() {
'tool' in one of:
gcc, binutils, glibc, uClibc, newlib, linux, gdb, dmalloc,
duma, strace, ltrace, libelf, gmp, mpfr, ppl, cloog, mpc,
mingw-w64
mingw-w64, expat, ncurses
Valid options for all tools:
--stable, -s, +x (default)
@ -191,6 +191,8 @@ while [ $# -gt 0 ]; do
--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=;;
# Tools options:
-x|--experimental|+s) EXP=1;;

View File

@ -37,3 +37,10 @@ do_companion_libs_for_host() {
done
}
# Build the companion libs facilities for target
do_companion_libs_for_target() {
for f in ${CT_COMP_LIBS_FACILITY_LIST}; do
do_${f}_for_target
done
}

View File

@ -6,6 +6,7 @@ do_gmp_get() { :; }
do_gmp_extract() { :; }
do_gmp_for_build() { :; }
do_gmp_for_host() { :; }
do_gmp_for_target() { :; }
# Overide functions depending on configuration
if [ "${CT_GMP}" = "y" ]; then

View File

@ -6,6 +6,7 @@ do_mpfr_get() { :; }
do_mpfr_extract() { :; }
do_mpfr_for_build() { :; }
do_mpfr_for_host() { :; }
do_mpfr_for_target() { :; }
# Overide function depending on configuration
if [ "${CT_MPFR}" = "y" ]; then

View File

@ -6,6 +6,7 @@ do_ppl_get() { :; }
do_ppl_extract() { :; }
do_ppl_for_build() { :; }
do_ppl_for_host() { :; }
do_ppl_for_target() { :; }
# Overide functions depending on configuration
if [ "${CT_PPL}" = "y" ]; then

View File

@ -6,6 +6,7 @@ do_isl_get() { :; }
do_isl_extract() { :; }
do_isl_for_build() { :; }
do_isl_for_host() { :; }
do_isl_for_target() { :; }
# Overide functions depending on configuration
if [ "${CT_ISL}" = "y" ]; then

View File

@ -6,6 +6,10 @@ do_cloog_get() { :; }
do_cloog_extract() { :; }
do_cloog_for_build() { :; }
do_cloog_for_host() { :; }
do_cloog_for_target() { :; }
# Overide functions depending on configuration
if [ "${CT_CLOOG}" = "y" ]; then
cloog_basename() {
printf "cloog"
@ -18,9 +22,6 @@ cloog_basename_version() {
printf -- "-${CT_CLOOG_VERSION}"
}
# Overide functions depending on configuration
if [ "${CT_CLOOG}" = "y" ]; then
# Download CLooG
do_cloog_get() {
CT_GetFile "$(cloog_basename_version)" \

View File

@ -6,6 +6,7 @@ do_mpc_get() { :; }
do_mpc_extract() { :; }
do_mpc_for_build() { :; }
do_mpc_for_host() { :; }
do_mpc_for_target() { :; }
# Overide functions depending on configuration
if [ "${CT_MPC}" = "y" ]; then

View File

@ -0,0 +1,86 @@
# Build script for expat
do_expat_get() { :; }
do_expat_extract() { :; }
do_expat_for_build() { :; }
do_expat_for_host() { :; }
do_expat_for_target() { :; }
if [ "${CT_EXPAT_TARGET}" = "y" -o "${CT_EXPAT}" = "y" ]; then
do_expat_get() {
CT_GetFile "expat-${CT_EXPAT_VERSION}" .tar.gz \
http://downloads.sourceforge.net/project/expat/expat/${CT_EXPAT_VERSION}
}
do_expat_extract() {
CT_Extract "expat-${CT_EXPAT_VERSION}"
CT_Patch "expat" "${CT_EXPAT_VERSION}"
}
if [ "${CT_EXPAT}" = "y" ]; then
# Do not need expat for build at this time.
do_expat_for_host() {
CT_DoStep INFO "Installing expat for host"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-expat-host-${CT_HOST}"
do_expat_backend host="${CT_HOST}" \
prefix="${CT_HOST_COMPLIBS_DIR}" \
cflags="${CT_CFLAGS_FOR_HOST}" \
ldflags="${CT_LDFLAGS_FOR_HOST}"
CT_Popd
CT_EndStep
}
fi
if [ "${CT_EXPAT_TARGET}" = "y" ]; then
do_expat_for_target() {
CT_DoStep INFO "Installing expat for target"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-expat-target-${CT_TARGET}"
do_expat_backend host="${CT_TARGET}" \
prefix="/usr" \
destdir="${CT_SYSROOT_DIR}"
CT_Popd
CT_EndStep
}
fi
# Build libexpat
# Parameter : description : type : default
# host : machine to run on : tuple : (none)
# prefix : prefix to install into : dir : (none)
# destdir : install destination : dir : (none)
do_expat_backend() {
local host
local prefix
local cflags
local ldflags
local arg
for arg in "$@"; do
eval "${arg// /\\ }"
done
CT_DoLog EXTRA "Configuring expat"
CT_DoExecLog CFG \
CFLAGS="${cflags}" \
LDFLAGS="${ldflags}" \
"${CT_SRC_DIR}/expat-${CT_EXPAT_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${host} \
--prefix="${prefix}" \
--enable-static \
--disable-shared
CT_DoLog EXTRA "Building expat"
CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing expat"
CT_DoExecLog ALL make install INSTALL_ROOT="${destdir}"
}
fi

View File

@ -0,0 +1,152 @@
# Build script for ncurses
do_ncurses_get() { :; }
do_ncurses_extract() { :; }
do_ncurses_for_build() { :; }
do_ncurses_for_host() { :; }
do_ncurses_for_target() { :; }
if [ "${CT_NCURSES_TARGET}" = "y" -o "${CT_NCURSES}" = "y" ]; then
do_ncurses_get() {
CT_GetFile "ncurses-${CT_NCURSES_VERSION}" .tar.gz \
{http,ftp,https}://ftp.gnu.org/pub/gnu/ncurses \
ftp://invisible-island.net/ncurses
}
do_ncurses_extract() {
CT_Extract "ncurses-${CT_NCURSES_VERSION}"
CT_DoExecLog ALL chmod -R u+w "${CT_SRC_DIR}/ncurses-${CT_NCURSES_VERSION}"
CT_Patch "ncurses" "${CT_NCURSES_VERSION}"
}
# We need tic that runs on the build when building ncurses for host/target
do_ncurses_for_build() {
local -a opts
CT_DoStep INFO "Installing ncurses for build"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-ncurses-build-${CT_BUILD}"
opts=("--enable-symlinks" \
"--without-manpages" \
"--without-tests" \
"--without-cxx" \
"--without-cxx-binding" \
"--without-ada")
do_ncurses_backend host="${CT_BUILD}" \
destdir="${CT_BUILDTOOLS_PREFIX_DIR}" \
cflags="${CT_CFLAGS_FOR_BUILD}" \
ldflags="${CT_LDFLAGS_FOR_BUILD}" \
"${opts[@]}"
CT_Popd
CT_EndStep
}
if [ "${CT_NCURSES}" = "y" ]; then
do_ncurses_for_host() {
local -a opts
# Unlike other companion libs, we skip host build if build==host
# (i.e. in simple cross or native): ncurses may not be needed for
# host, but we still need them on build to produce 'tic'.
case "${CT_TOOLCHAIN_TYPE}" in
native|cross) return 0;;
esac
CT_DoStep INFO "Installing ncurses for host"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-ncurses-host-${CT_HOST}"
opts=("--enable-symlinks" \
"--without-manpages" \
"--without-tests" \
"--without-cxx" \
"--without-cxx-binding" \
"--without-ada")
do_ncurses_backend host="${CT_HOST}" \
prefix="${CT_HOST_COMPLIBS_DIR}" \
cflags="${CT_CFLAGS_FOR_HOST}" \
ldflags="${CT_LDFLAGS_FOR_HOST}" \
"${opts[@]}"
CT_Popd
CT_EndStep
}
fi
if [ "${CT_NCURSES_TARGET}" = "y" ]; then
do_ncurses_for_target() {
CT_DoStep INFO "Installing ncurses for target"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-ncurses-target-${CT_TARGET}"
opts=("--without-sysmouse")
[ "${CT_CC_LANG_CXX}" = "y" ] || opts+=("--without-cxx" "--without-cxx-binding")
[ "${CT_CC_LANG_ADA}" = "y" ] || opts+=("--without-ada")
do_ncurses_backend host="${CT_TARGET}" \
prefix="/usr" \
destdir="${CT_SYSROOT_DIR}" \
"${opts[@]}"
CT_Popd
CT_EndStep
}
fi
# Build libncurses
# Parameter : description : type : default
# host : machine to run on : tuple : (none)
# prefix : prefix to install into : dir : (none)
# cflags : cflags to use : string : (empty)
# ldflags : ldflags to use : string : (empty)
# --* : passed to configure : n/a : n/a
do_ncurses_backend() {
local -a ncurses_opts
local host
local prefix
local cflags
local ldflags
local arg
local for_target
for arg in "$@"; do
case "$arg" in
--*)
ncurses_opts+=("$arg")
;;
*)
eval "${arg// /\\ }"
;;
esac
done
case "$host" in
*-*-mingw*)
# Needed to build for mingw, see
# http://lists.gnu.org/archive/html/info-gnu/2011-02/msg00020.html
ncurses_opts+=("--enable-term-driver")
ncurses_opts+=("--enable-sp-funcs")
;;
esac
CT_DoLog EXTRA "Configuring ncurses"
CT_DoExecLog CFG \
CFLAGS="${cflags}" \
LDFLAGS="${ldflags}" \
"${CT_SRC_DIR}/ncurses-${CT_NCURSES_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${host} \
--prefix="${prefix}" \
--with-install-prefix="${destdir}" \
--enable-termcap \
"${ncurses_opts[@]}"
# FIXME: old ncurses build code was removing -static from progs/Makefile,
# claiming static linking does not work on MacOS. A knowledge base article
# (https://developer.apple.com/library/mac/qa/qa1118/_index.html) says that
# static linking works just fine, just do not use it for libc (or other
# libraries that make system calls). ncurses use -static only for linking
# the curses library, then switches back to -dynamic - so they should be fine.
# FIXME: for target, we only need tic (terminfo compiler). However, building
# it also builds ncurses anyway, and dedicated targets (install.includes and
# install.progs) do not do well with parallel make (-jX).
CT_DoLog EXTRA "Building ncurses"
CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing ncurses"
CT_DoExecLog ALL make install
}
fi

View File

@ -4,6 +4,7 @@ do_libiconv_get() { :; }
do_libiconv_extract() { :; }
do_libiconv_for_build() { :; }
do_libiconv_for_host() { :; }
do_libiconv_for_target() { :; }
if [ "${CT_LIBICONV}" = "y" ]; then

View File

@ -4,6 +4,7 @@ do_gettext_get() { :; }
do_gettext_extract() { :; }
do_gettext_for_build() { :; }
do_gettext_for_host() { :; }
do_gettext_for_target() { :; }
if [ "${CT_GETTEXT}" = "y" ]; then

View File

@ -1,105 +1,46 @@
# Build script for the gdb debug facility
# The version of ncurses to use. Yes, it's hard-coded.
# It's used only internally by crosstool-NG, and is
# not exposed outside, so we don't care about providing
# config options for this.
CT_DEBUG_GDB_NCURSES_VERSION="5.9"
# Ditto for the expat library
CT_DEBUG_GDB_EXPAT_VERSION="2.1.0"
do_debug_gdb_parts() {
need_gdb_src=
need_ncurses_src=
need_expat_src=
if [ "${CT_GDB_CROSS}" = y ]; then
need_gdb_src=y
fi
if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
need_gdb_src=y
fi
if [ "${CT_GDB_NATIVE}" = "y" ]; then
need_gdb_src=y
# GDB on Mingw depends on PDcurses, not ncurses
if [ "${CT_MINGW32}" != "y" ]; then
need_ncurses_src=y
fi
need_expat_src=y
fi
}
if [ "${CT_GDB_CROSS}" = y -o "${CT_GDB_GDBSERVER}" = "y" -o "${CT_GDB_NATIVE}" = "y" ]; then
do_debug_gdb_get() {
local linaro_version=""
local linaro_series=""
do_debug_gdb_parts
if [ "${CT_GDB_CUSTOM}" = "y" ]; then
CT_GetCustom "gdb" "${CT_GDB_VERSION}" "${CT_GDB_CUSTOM_LOCATION}"
else
# Account for the Linaro versioning
linaro_version="$( echo "${CT_GDB_VERSION}" \
|${sed} -r -e 's/^linaro-//;' \
)"
linaro_series="$( echo "${linaro_version}" \
|${sed} -r -e 's/-.*//;' \
)"
if [ "${need_gdb_src}" = "y" ]; then
if [ "${CT_GDB_CUSTOM}" = "y" ]; then
CT_GetCustom "gdb" "${CT_GDB_VERSION}" "${CT_GDB_CUSTOM_LOCATION}"
if [ x"${linaro_version}" = x"${CT_GDB_VERSION}" ]; then
CT_GetFile "gdb-${CT_GDB_VERSION}" \
http://mirrors.kernel.org/sourceware/gdb \
{http,ftp,https}://ftp.gnu.org/pub/gnu/gdb \
ftp://{sourceware.org,gcc.gnu.org}/pub/gdb/releases
else
# Account for the Linaro versioning
linaro_version="$( echo "${CT_GDB_VERSION}" \
|${sed} -r -e 's/^linaro-//;' \
)"
linaro_series="$( echo "${linaro_version}" \
|${sed} -r -e 's/-.*//;' \
)"
if [ x"${linaro_version}" = x"${CT_GDB_VERSION}" ]; then
CT_GetFile "gdb-${CT_GDB_VERSION}" \
http://mirrors.kernel.org/sourceware/gdb \
{http,ftp,https}://ftp.gnu.org/pub/gnu/gdb \
ftp://{sourceware.org,gcc.gnu.org}/pub/gdb/releases
else
YYMM=`echo ${CT_GDB_VERSION} |cut -d- -f3 |${sed} -e 's,^..,,'`
CT_GetFile "gdb-${CT_GDB_VERSION}" \
"http://launchpad.net/gdb-linaro/${linaro_series}/${linaro_version}/+download" \
https://releases.linaro.org/${YYMM}/components/toolchain/gdb-linaro \
http://cbuild.validation.linaro.org/snapshots
fi
YYMM=`echo ${CT_GDB_VERSION} |cut -d- -f3 |${sed} -e 's,^..,,'`
CT_GetFile "gdb-${CT_GDB_VERSION}" \
"http://launchpad.net/gdb-linaro/${linaro_series}/${linaro_version}/+download" \
https://releases.linaro.org/${YYMM}/components/toolchain/gdb-linaro \
http://cbuild.validation.linaro.org/snapshots
fi
fi
if [ "${need_ncurses_src}" = "y" ]; then
CT_GetFile "ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}" .tar.gz \
{http,ftp,https}://ftp.gnu.org/pub/gnu/ncurses \
ftp://invisible-island.net/ncurses
fi
if [ "${need_expat_src}" = "y" ]; then
CT_GetFile "expat-${CT_DEBUG_GDB_EXPAT_VERSION}" .tar.gz \
http://downloads.sourceforge.net/project/expat/expat/${CT_DEBUG_GDB_EXPAT_VERSION}
fi
}
do_debug_gdb_extract() {
do_debug_gdb_parts
if [ "${need_gdb_src}" = "y" ]; then
# If using custom directory location, nothing to do
if [ "${CT_GDB_CUSTOM}" = "y" \
-a -d "${CT_SRC_DIR}/gdb-${CT_GDB_VERSION}" ]; then
return 0
fi
CT_Extract "gdb-${CT_GDB_VERSION}"
CT_Patch "gdb" "${CT_GDB_VERSION}"
# If using custom directory location, nothing to do
if [ "${CT_GDB_CUSTOM}" = "y" \
-a -d "${CT_SRC_DIR}/gdb-${CT_GDB_VERSION}" ]; then
return 0
fi
if [ "${need_ncurses_src}" = "y" ]; then
CT_Extract "ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}"
CT_DoExecLog ALL chmod -R u+w "${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}"
CT_Patch "ncurses" "${CT_DEBUG_GDB_NCURSES_VERSION}"
fi
if [ "${need_expat_src}" = "y" ]; then
CT_Extract "expat-${CT_DEBUG_GDB_EXPAT_VERSION}"
CT_Patch "expat" "${CT_DEBUG_GDB_EXPAT_VERSION}"
fi
CT_Extract "gdb-${CT_GDB_VERSION}"
CT_Patch "gdb" "${CT_GDB_VERSION}"
if [ -n "${CT_ARCH_XTENSA_CUSTOM_NAME}" ]; then
CT_ConfigureXtensa "gdb" "${CT_GDB_VERSION}"
@ -109,8 +50,6 @@ do_debug_gdb_extract() {
do_debug_gdb_build() {
local -a extra_config
do_debug_gdb_parts
gdb_src_dir="${CT_SRC_DIR}/gdb-${CT_GDB_VERSION}"
# Version 6.3 and below behave badly with gdbmi
@ -134,8 +73,8 @@ do_debug_gdb_build() {
cd "${CT_BUILD_DIR}/build-gdb-cross"
cross_extra_config=("${extra_config[@]}")
cross_extra_config+=("--enable-expat")
cross_extra_config+=("--with-expat=yes")
cross_extra_config+=("--with-expat")
cross_extra_config+=("--with-libexpat-prefix=${CT_HOST_COMPLIBS_DIR}")
case "${CT_THREADS}" in
none) cross_extra_config+=("--disable-threads");;
*) cross_extra_config+=("--enable-threads");;
@ -211,7 +150,6 @@ do_debug_gdb_build() {
if [ "${CT_GDB_NATIVE}" = "y" ]; then
local -a native_extra_config
local -a ncurses_opt
local -a gdb_native_CFLAGS
CT_DoStep INFO "Installing native gdb"
@ -220,30 +158,10 @@ do_debug_gdb_build() {
# GDB on Mingw depends on PDcurses, not ncurses
if [ "${CT_MINGW32}" != "y" ]; then
CT_DoLog EXTRA "Building static target ncurses"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-ncurses-target-${CT_TARGET}"
do_gdb_ncurses_backend host="${CT_TARGET}" \
prefix="${CT_BUILD_DIR}/static-target" \
cflags="${CT_CFLAGS_FOR_HOST}" \
ldflags=""
CT_Popd
native_extra_config+=("--with-curses")
# There's no better way to tell gdb where to find -lcurses... :-(
gdb_native_CFLAGS+=("-I${CT_BUILD_DIR}/static-target/include")
gdb_native_CFLAGS+=("-L${CT_BUILD_DIR}/static-target/lib")
fi # need_ncurses_src
fi
# Build libexpat
CT_DoLog EXTRA "Building static target expat"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-expat-target-${CT_TARGET}"
do_gdb_expat_backend host="${CT_TARGET}" \
prefix="${CT_BUILD_DIR}/static-target" \
cflags="" \
ldflags=""
CT_Popd
native_extra_config+=("--with-expat")
native_extra_config+=("--with-libexpat-prefix=${CT_BUILD_DIR}/static-target")
CT_DoLog EXTRA "Configuring native gdb"
@ -367,107 +285,4 @@ do_debug_gdb_build() {
fi
}
# Build libncurses
# Parameter : description : type : default
# host : machine to run on : tuple : (none)
# prefix : prefix to install into : dir : (none)
# cflags : cflags to use : string : (empty)
# ldflags : ldflags to use : string : (empty)
do_gdb_ncurses_backend() {
local host
local prefix
local cflags
local ldflags
local arg
for arg in "$@"; do
eval "${arg// /\\ }"
done
[ "${CT_CC_LANG_CXX}" = "y" ] || ncurses_opts+=("--without-cxx" "--without-cxx-binding")
[ "${CT_CC_LANG_ADA}" = "y" ] || ncurses_opts+=("--without-ada")
CT_mkdir_pushd "build-tic"
# We need a tic that runs on build, not on host nor on target
# Use build = CT_REAL_BUILD so that configure thinks it is
# cross-compiling, and thus will use the ${CT_BUILD}-*
# tools instead of searching for the native ones...
CT_DoExecLog CFG \
"${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${CT_BUILD} \
--prefix=/usr \
--enable-symlinks \
--with-build-cc=${CT_REAL_BUILD}-gcc \
--with-build-cpp=${CT_REAL_BUILD}-gcc \
--with-build-cflags="${CT_CFLAGS_FOR_HOST}" \
"${ncurses_opts[@]}"
# ncurses insists on linking tic statically. It does not work
# on some OSes (eg. MacOS-X/Darwin/whatever-you-call-it).
CT_DoExecLog DEBUG sed -r -i -e 's/-static//g;' "progs/Makefile"
# Under some operating systems (eg. Winblows), there is an
# extension appended to executables. Find that.
tic_ext=$(grep -E '^x[[:space:]]*=' progs/Makefile |sed -r -e 's/^.*=[[:space:]]*//;')
CT_DoExecLog ALL make ${JOBSFLAGS} -C include
CT_DoExecLog ALL make ${JOBSFLAGS} -C progs "tic${tic_ext}"
CT_DoExecLog ALL install -d -m 0755 "${CT_BUILDTOOLS_PREFIX_DIR}/bin"
CT_DoExecLog ALL install -m 0755 "progs/tic${tic_ext}" "${CT_BUILDTOOLS_PREFIX_DIR}/bin"
CT_Popd
CT_mkdir_pushd "ncurses"
CT_DoExecLog CFG \
TIC_PATH="${CT_BUILDTOOLS_PREFIX_DIR}/bin/tic${tic_ext}" \
"${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${host} \
--with-build-cc=${CT_BUILD}-gcc \
--with-build-cpp=${CT_BUILD}-gcc \
--with-build-cflags="${CT_CFLAGS_FOR_HOST}" \
--prefix="${prefix}" \
--without-shared \
--without-sysmouse \
--without-progs \
--enable-termcap \
"${ncurses_opts[@]}"
CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoExecLog ALL make install
CT_Popd
}
# Build libexpat
# Parameter : description : type : default
# host : machine to run on : tuple : (none)
# prefix : prefix to install into : dir : (none)
# cflags : cflags to use : string : (empty)
# ldflags : ldflags to use : string : (empty)
do_gdb_expat_backend() {
local host
local prefix
local cflags
local ldflags
local arg
for arg in "$@"; do
eval "${arg// /\\ }"
done
CT_DoExecLog CFG \
"${CT_SRC_DIR}/expat-${CT_DEBUG_GDB_EXPAT_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${host} \
--prefix="${prefix}" \
--enable-static \
--disable-shared
CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoExecLog ALL make install
}
fi

View File

@ -63,22 +63,28 @@ dump_single_sample() {
-o -n "${CT_CLOOG}" \
-o -n "${CT_MPC}" \
-o -n "${CT_LIBELF}" \
-o -n "${CT_EXPAT}" \
-o -n "${CT_NCURSES}" \
-o -n "${CT_GMP_TARGET}" \
-o -n "${CT_MPFR_TARGET}" \
-o -n "${CT_PPL_TARGET}" \
-o -n "${CT_CLOOG_TARGET}" \
-o -n "${CT_MPC_TARGET}" \
-o -n "${CT_LIBELF_TARGET}" \
-o -n "${CT_EXPAT_TARGET}" \
-o -n "${CT_NCURSES_TARGET}" \
]; then
printf " %-*s :" ${width} "Companion libs"
complibs=1
fi
[ -z "${CT_GMP}" -a -z "${CT_GMP_TARGET}" ] || printf " gmp-%s" "${CT_GMP_VERSION}"
[ -z "${CT_MPFR}" -a -z "${CT_MPFR_TARGET}" ] || printf " mpfr-%s" "${CT_MPFR_VERSION}"
[ -z "${CT_PPL}" -a -z "${CT_PPL_TARGET}" ] || printf " ppl-%s" "${CT_PPL_VERSION}"
[ -z "${CT_CLOOG}" -a -z "${CT_CLOOG_TARGET}" ] || printf " cloog-ppl-%s" "${CT_CLOOG_VERSION}"
[ -z "${CT_MPC}" -a -z "${CT_MPC_TARGET}" ] || printf " mpc-%s" "${CT_MPC_VERSION}"
[ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s" "${CT_LIBELF_VERSION}"
[ -z "${CT_GMP}" -a -z "${CT_GMP_TARGET}" ] || printf " gmp-%s" "${CT_GMP_VERSION}"
[ -z "${CT_MPFR}" -a -z "${CT_MPFR_TARGET}" ] || printf " mpfr-%s" "${CT_MPFR_VERSION}"
[ -z "${CT_PPL}" -a -z "${CT_PPL_TARGET}" ] || printf " ppl-%s" "${CT_PPL_VERSION}"
[ -z "${CT_CLOOG}" -a -z "${CT_CLOOG_TARGET}" ] || printf " cloog-ppl-%s" "${CT_CLOOG_VERSION}"
[ -z "${CT_MPC}" -a -z "${CT_MPC_TARGET}" ] || printf " mpc-%s" "${CT_MPC_VERSION}"
[ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s" "${CT_LIBELF_VERSION}"
[ -z "${CT_EXPAT}" -a -z "${CT_EXPAT_TARGET}" ] || printf " expat-%s" "${CT_EXPAT_VERSION}"
[ -z "${CT_NCURSES}" -a -z "${CT_NCURSES_TARGET}" ] || printf " ncurses-%s" "${CT_NCURSES_VERSION}"
[ -z "${complibs}" ] || printf "\n"
printf " %-*s : %s\n" ${width} "binutils" "binutils-${CT_BINUTILS_VERSION}"
printf " %-*s :" ${width} "C compilers"

View File

@ -18,24 +18,24 @@ help-env::
# but are actual steps for canadian and cross-native.
# Please keep the last line with a '\' and keep the following empy line:
# it helps when diffing and merging.
CT_STEPS := libc_check_config \
companion_libs_for_build \
binutils_for_build \
companion_libs_for_host \
binutils_for_host \
cc_core_pass_1 \
kernel_headers \
libc_start_files \
cc_core_pass_2 \
libc \
cc_for_build \
cc_for_host \
libc_post_cc \
libelf_for_target \
binutils_for_target \
debug \
test_suite \
finish \
CT_STEPS := libc_check_config \
companion_libs_for_build \
binutils_for_build \
companion_libs_for_host \
binutils_for_host \
cc_core_pass_1 \
kernel_headers \
libc_start_files \
cc_core_pass_2 \
libc \
cc_for_build \
cc_for_host \
libc_post_cc \
companion_libs_for_target \
binutils_for_target \
debug \
test_suite \
finish \
# Keep an empty line above this comment, so the last
# back-slash terminated line works as expected.