summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2004-10-25 06:00:15 +0000
committerMike Frysinger <vapier@gentoo.org>2004-10-25 06:00:15 +0000
commit963b50b74132871eee9ea49e1d93f405e583d480 (patch)
tree02caefe183cad2abcce742a81df2234c49fc4e3f
parenttabify (diff)
downloadgentoo-2-963b50b74132871eee9ea49e1d93f405e583d480.tar.gz
gentoo-2-963b50b74132871eee9ea49e1d93f405e583d480.tar.bz2
gentoo-2-963b50b74132871eee9ea49e1d93f405e583d480.zip
merge a bunch of fixes from my local
-rw-r--r--eclass/toolchain.eclass81
1 files changed, 32 insertions, 49 deletions
diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index 1b6b6980bad0..a51409bbbd77 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -1,6 +1,6 @@
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/toolchain.eclass,v 1.32 2004/10/22 17:50:05 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/toolchain.eclass,v 1.33 2004/10/25 06:00:15 vapier Exp $
#
# This eclass should contain general toolchain-related functions that are
# expected to not change, or change much.
@@ -11,25 +11,14 @@ INHERITED="$INHERITED $ECLASS"
DESCRIPTION="Based on the ${ECLASS} eclass"
EXPORT_FUNCTIONS src_unpack pkg_setup src_compile src_install
-[ ! -n "${CCHOST}" ] && export CCHOST="${CHOST}"
+export CTARGET="${CTARGET:-${CHOST}}"
if [ "${ETYPE}" == "gcc-library" ] ; then
IUSE="nls build uclibc"
- if [ -n "${SO_VERSION_SLOT}" ] ; then
- if [ "${CHOST}" == "${CCHOST}" ] ; then
- SLOT="5"
- else
- SLOT="${CCHOST}-5"
- fi
- fi
+ SLOT="${CTARGET}-${SO_VERSION_SLOT:-5}"
else
IUSE="static nls bootstrap build multilib gcj gtk f77 nocxx objc hardened uclibc n32 n64 boundschecking"
-
- if [ "${CHOST}" == "${CCHOST}" ] ; then
- SLOT="${PV%.*}"
- else
- SLOT="${CCHOST}-${PV%.*}"
- fi
+ SLOT="${CTARGET}-${PV%.*}"
fi
@@ -47,9 +36,6 @@ gcc_setup_static_vars() {
PRERELEASE=${PV/_pre/-}
fi
- # Theoretical cross compiler support
- [ ! -n "${CCHOST}" ] && export CCHOST="${CHOST}"
-
GCCMAJOR="$(get_version_component_range 1)"
GCCMINOR="$(get_version_component_range 2)"
GCCMICRO="$(get_version_component_range 3)"
@@ -61,10 +47,10 @@ gcc_setup_path_vars() {
if [ "$1" == "versioned" ] ; then
# GCC 3.4 no longer uses gcc-lib.
- LIBPATH="${LIBPATH:="${PREFIX}/lib/gcc/${CCHOST}/${MY_PV_FULL}"}"
+ LIBPATH="${LIBPATH:="${PREFIX}/lib/gcc/${CTARGET}/${MY_PV_FULL}"}"
INCLUDEPATH="${INCLUDEPATH:="${LIBPATH}/include"}"
- BINPATH="${BINPATH:="${PREFIX}/${CCHOST}/gcc-bin/${MY_PV}"}"
- DATAPATH="${DATAPATH:="${PREFIX}/share/gcc-data/${CCHOST}/${MY_PV}"}"
+ BINPATH="${BINPATH:="${PREFIX}/${CTARGET}/gcc-bin/${MY_PV}"}"
+ DATAPATH="${DATAPATH:="${PREFIX}/share/gcc-data/${CTARGET}/${MY_PV}"}"
# Dont install in /usr/include/g++-v3/, but in gcc internal directory.
# We will handle /usr/include/g++-v3/ with gcc-config ...
STDCXX_INCDIR="${STDCXX_INCDIR:="${LIBPATH}/include/g++-v${MY_PV/\.*/}"}"
@@ -105,12 +91,12 @@ gcc_setup_variables() {
gcc-compiler-pkg_setup() {
# Must compile for mips64-linux target if we want n32/n64 support
- case "${CCHOST}" in
+ case "${CTARGET}" in
mips64-*) ;;
*)
if use n32 || use n64; then
eerror "n32/n64 can only be used when target host is mips64-*-linux-*";
- die "Invalid USE flags for CCHOST ($CCHOST)";
+ die "Invalid USE flags for CTARGET ($CTARGET)";
fi
;;
esac
@@ -544,7 +530,7 @@ split_out_specs_files() {
do_gcc_config() {
# we only want to switch compilers if installing to / and we're not
# building a cross-compiler.
- ! [ "${ROOT}" == "/" -a "${CHOST}" == "${CCHOST}" ] && return 0
+ ! [ "${ROOT}" == "/" -a "${CHOST}" == "${CTARGET}" ] && return 0
# the grep -v is in there to filter out informational messages >_<
local current_gcc_config="$(gcc-config -c | grep -v ^\ )"
@@ -569,7 +555,7 @@ do_gcc_config() {
einfo "automatically switched for you. If you would like to switch"
einfo "to the newly installed gcc version, do the following:"
echo
- einfo "gcc-config ${CCHOST}-${MY_PV_FULL}${use_specs}"
+ einfo "gcc-config ${CTARGET}-${MY_PV_FULL}${use_specs}"
einfo "source /etc/profile"
echo
ebeep
@@ -582,7 +568,7 @@ do_gcc_config() {
fi
fi
- if [ -n "${use_specs}" -a ! -e ${ROOT}/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL}${use_specs} ] ; then
+ if [ -n "${use_specs}" -a ! -e ${ROOT}/etc/env.d/gcc/${CTARGET}-${MY_PV_FULL}${use_specs} ] ; then
ewarn "The currently selected specs-specific gcc config,"
ewarn "${current_specs}, doesn't exist anymore. This is usually"
ewarn "due to enabling/disabling hardened or switching to a version"
@@ -592,12 +578,12 @@ do_gcc_config() {
epause
fi
- if [ -e ${ROOT}/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL}${use_specs} ] ; then
+ if [ -e ${ROOT}/etc/env.d/gcc/${CTARGET}-${MY_PV_FULL}${use_specs} ] ; then
# we dont want to lose the current specs setting!
- gcc-config --use-portage-chost ${CCHOST}-${MY_PV_FULL}${use_specs}
+ gcc-config --use-portage-chost ${CTARGET}-${MY_PV_FULL}${use_specs}
else
# ...unless of course the specs-specific entry doesnt exist :)
- gcc-config --use-portage-chost ${CCHOST}-${MY_PV_FULL}
+ gcc-config --use-portage-chost ${CTARGET}-${MY_PV_FULL}
fi
}
@@ -800,17 +786,17 @@ gcc-compiler-configure() {
# Travis Tilley <lv@gentoo.org> (11 Jul 2004)
if ! use build && use gcj && use gtk
then
- myconf="${myconf} --enable-java-awt=gtk"
+ confgcc="${confgcc} --enable-java-awt=gtk"
fi
use build || use !gcj && confgcc="${confgcc} --disable-libgcj"
# Add --with-abi flags to enable respective MIPS ABIs
- case "${CCHOST}" in
+ case "${CTARGET}" in
mips*)
- use multilib && myconf="${myconf} --with-abi=32"
- use n64 && myconf="${myconf} --with-abi=n64"
- use n32 && myconf="${myconf} --with-abi=n32"
+ use multilib && confgcc="${confgcc} --with-abi=32"
+ use n64 && confgcc="${confgcc} --with-abi=n64"
+ use n32 && confgcc="${confgcc} --with-abi=n32"
;;
esac
@@ -833,7 +819,7 @@ gcc-compiler-configure() {
# Other than the variables described for gcc_setup_variables, the following
# will alter tha behavior of gcc_do_configure:
#
-# CCHOST
+# CTARGET
# CBUILD
# Enable building for a target that differs from CHOST
#
@@ -872,26 +858,23 @@ gcc_do_configure() {
# Incredibly theoretical cross-compiler support
confgcc="${confgcc} --host=${CHOST}"
- if [ "${CCHOST}" != "${CHOST}" -a "${CCHOST}" != "" ] ; then
+ if [ "${CTARGET}" != "${CHOST}" -a "${CTARGET}" != "" ] ; then
# Straight from the GCC install doc:
# "GCC has code to correctly determine the correct value for target
# for nearly all native systems. Therefore, we highly recommend you
# not provide a configure target when configuring a native compiler."
- confgcc="${confgcc} --target=${CCHOST}"
+ confgcc="${confgcc} --target=${CTARGET}"
fi
if [ "${CBUILD}" != "" ] ; then
confgcc="${confgcc} --build=${CBUILD}"
fi
- # altivec support
- if use ppc || use ppc64 ; then
- use altivec && confgcc="${confgcc} --enable-altivec"
- use !altivec && confgcc="${confgcc} --disable-altivec"
- fi
+ # ppc altivec support
+ confgcc="${confgcc} $(use_enable altivec)"
# Fix linking problem with c++ apps which where linked
# against a 3.2.2 libgcc
- [ "${ARCH}" = "hppa" ] && myconf="${myconf} --enable-sjlj-exceptions"
+ [ "${ARCH}" = "hppa" ] && confgcc="${confgcc} --enable-sjlj-exceptions"
# Native Language Support
if use nls && use !build ; then
@@ -954,8 +937,8 @@ gcc_do_configure() {
# and now to do the actual configuration
addwrite "/dev/zero"
- ${S}/configure ${confgcc} ${@} ${EXTRA_ECONF} || \
- die "failed to run configure"
+ ${S}/configure ${confgcc} "${@}" ${EXTRA_ECONF} \
+ || die "failed to run configure"
# return to whatever directory we were in before
popd > /dev/null
@@ -964,7 +947,7 @@ gcc_do_configure() {
# This function accepts one optional argument, the make target to be used.
# If ommitted, gcc_do_make will try to guess whether it should use all,
-# profiledbootstrap, or bootstrap-lean depending on CCHOST and arch. An
+# profiledbootstrap, or bootstrap-lean depending on CTARGET and arch. An
# example of how to use this function:
#
# gcc_do_make all-target-libstdc++-v3
@@ -995,7 +978,7 @@ gcc_do_make() {
STAGE1_CFLAGS="${STAGE1_CFLAGS:="-O"}"
- if [ -z "${CCHOST}" -o "${CCHOST}" == "${CHOST}" ] ; then
+ if [ -z "${CTARGET}" -o "${CTARGET}" == "${CHOST}" ] ; then
# we only want to use the system's CFLAGS if not building a
# cross-compiler.
BOOT_CFLAGS="${BOOT_CFLAGS:="${CFLAGS}"}"
@@ -1010,7 +993,7 @@ gcc_do_make() {
# Set make target to $1 if passed
[ "$1" != "" ] && GCC_MAKE_TARGET="$1"
# default target
- if [ "${CCHOST}" != "${CHOST}" ] ; then
+ if [ "${CTARGET}" != "${CHOST}" ] ; then
# 3 stage bootstrapping doesnt quite work when you cant run the
# resulting binaries natively ^^;
GCC_MAKE_TARGET="${GCC_MAKE_TARGET:=all}"
@@ -1192,7 +1175,7 @@ gcc-library-src_install() {
create_gcc_env_entry() {
dodir /etc/env.d/gcc
- local gcc_envd_base="/etc/env.d/gcc/${CCHOST}-${MY_PV_FULL}"
+ local gcc_envd_base="/etc/env.d/gcc/${CTARGET}-${MY_PV_FULL}"
if [ "$1" == "" ] ; then
gcc_envd_file="${D}${gcc_envd_base}"