summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel')
-rw-r--r--sys-devel/gcc/files/digest-gcc-2.95.3-r81
-rw-r--r--sys-devel/gcc/gcc-2.95.3-r8.ebuild247
2 files changed, 103 insertions, 145 deletions
diff --git a/sys-devel/gcc/files/digest-gcc-2.95.3-r8 b/sys-devel/gcc/files/digest-gcc-2.95.3-r8
index c6940932e4ef..2c0c7ea1127f 100644
--- a/sys-devel/gcc/files/digest-gcc-2.95.3-r8
+++ b/sys-devel/gcc/files/digest-gcc-2.95.3-r8
@@ -1 +1,2 @@
MD5 f3ad4f32c2296fad758ed051b5ac8e28 gcc-2.95.3.tar.gz 12911721
+MD5 eb0d9b6fe90b5198ed8645215c12c8cb gcc-2.95.3-patches-1.0.tar.bz2 9215
diff --git a/sys-devel/gcc/gcc-2.95.3-r8.ebuild b/sys-devel/gcc/gcc-2.95.3-r8.ebuild
index e1ace96f6756..3c75f53bc5af 100644
--- a/sys-devel/gcc/gcc-2.95.3-r8.ebuild
+++ b/sys-devel/gcc/gcc-2.95.3-r8.ebuild
@@ -1,8 +1,8 @@
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-2.95.3-r8.ebuild,v 1.38 2005/01/11 08:58:54 eradicator Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-2.95.3-r8.ebuild,v 1.39 2005/01/15 03:03:36 vapier Exp $
-inherit eutils flag-o-matic gcc versionator fixheadtails
+inherit eutils flag-o-matic toolchain-funcs versionator fixheadtails
# The next command strips most flags from CFLAGS/CXXFLAGS. If you do
# not like it, comment it out, but do not file bugreports if you run into
@@ -21,78 +21,64 @@ do_filter_flags() {
gcc2-flags
}
-# Theoretical cross compiler support
-[ ! -n "${CCHOST}" ] && export CCHOST="${CHOST}"
+export CTARGET=${CTARGET:-${CHOST}}
+if [[ ${CTARGET} = ${CHOST} ]] ; then
+ if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then
+ export CTARGET=${CATEGORY/cross-}
+ fi
+fi
LOC="/usr"
-#GCC_BRANCH_VER="`echo ${PV} | awk -F. '{ gsub(/_pre.*|_alpha.*/, ""); print $1 "." $2 }'`"
-#GCC_RELEASE_VER="`echo ${PV} | awk '{ gsub(/_pre.*|_alpha.*/, ""); print $0 }'`"
GCC_BRANCH_VER="$(get_version_component_range 1-2)"
GCC_RELEASE_VER="$(get_version_component_range 1-3)"
-LIBPATH="${LOC}/lib/gcc-lib/${CCHOST}/${GCC_RELEASE_VER}"
-BINPATH="${LOC}/${CCHOST}/gcc-bin/${GCC_BRANCH_VER}"
-DATAPATH="${LOC}/share/gcc-data/${CCHOST}/${GCC_BRANCH_VER}"
+LIBPATH="${LOC}/lib/gcc-lib/${CTARGET}/${GCC_RELEASE_VER}"
+BINPATH="${LOC}/${CTARGET}/gcc-bin/${GCC_BRANCH_VER}"
+DATAPATH="${LOC}/share/gcc-data/${CTARGET}/${GCC_BRANCH_VER}"
# Dont install in /usr/include/g++/, but in gcc internal directory.
# We will handle /usr/include/g++/ with gcc-config ...
STDCXX_INCDIR="${LIBPATH}/include/g++"
+PATCH_VER=1.0
DESCRIPTION="Modern C/C++ compiler written by the GNU people"
HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html"
-SRC_URI="ftp://gcc.gnu.org/pub/gcc/releases/${P}/${P}.tar.gz"
+SRC_URI="ftp://gcc.gnu.org/pub/gcc/releases/${P}/${P}.tar.gz
+ mirror://gentoo/${P}-patches-${PATCH_VER}.tar.bz2"
LICENSE="GPL-2 LGPL-2.1"
KEYWORDS="x86 ppc sparc alpha"
-IUSE="static nls bootstrap java build"
-
-# Ok, this is a hairy one again, but lets assume that we
-# are not cross compiling, than we want SLOT to only contain
-# $PV, as people upgrading to new gcc layout will not have
-# their old gcc unmerged ...
-SLOT="${GCC_BRANCH_VER}"
-
-DEPEND="virtual/libc
- >=sys-devel/gcc-config-1.2
- !build? ( >=sys-libs/ncurses-5.2-r2
- nls? ( sys-devel/gettext ) )"
+IUSE="static nls build multislot nocxx fortran"
+
+if use multislot ; then
+ SLOT="${CTARGET}-${GCC_CONFIG_VER}"
+elif [[ ${CTARGET} != ${CHOST} ]] ; then
+ SLOT="${CTARGET}-${GCC_BRANCH_VER}"
+else
+ SLOT="${GCC_BRANCH_VER}"
+fi
+
RDEPEND="virtual/libc
>=sys-devel/gcc-config-1.2.3
>=sys-libs/zlib-1.1.4
>=sys-apps/texinfo-4.2-r4
!build? ( >=sys-libs/ncurses-5.2-r2 )"
+DEPEND="${RDEPEND}
+ !build? ( nls? ( sys-devel/gettext ) )"
# Hack used to patch Makefiles to install into the build dir
FAKE_ROOT=""
src_unpack() {
unpack ${P}.tar.gz
-
cd ${S}
+
# Fixup libtool to correctly generate .la files with portage
- libtoolize --copy --force &> /dev/null
-
- # This new patch for the atexit problem occured with glibc-2.2.3 should
- # work with glibc-2.2.4. This closes bug #3987 and #4004.
- #
- # Azarah - 29 Jun 2002
- #
- # http://archive.linuxfromscratch.org/mail-archives/lfs-dev/2001/08/0476.html
- # http://archive.linuxfromscratch.org/mail-archives/lfs-dev/2001/08/0589.html
- #
- #
- # Something to note, is that this patch makes gcc crash if its given
- # the "-mno-ieee-fp" flag ... libvorbis is an good example of this.
- # This however is on of those which one we want fixed most cases :/
- #
- # Azarah - 30 Jun 2002
- #
- if ! use alpha ; then
- epatch ${FILESDIR}/2.95.3/${P}-new-atexit.diff
- else
- epatch ${FILESDIR}/2.95.3/${P}-alpha.diff
- fi
+ libtoolize --copy --force
- cd ${S}
+ unpack ${P}-patches-${PATCH_VER}.tar.bz2
+ [[ $(tc-arch ${CTARGET}) == "alpha" ]] \
+ && epatch 2.95.3/${P}-alpha.diff \
+ || epatch 2.95.3/${P}-new-atexit.diff
# Fix outdated head/tails format #65668
ht_fix_file configure gcc/Makefile.in
@@ -101,100 +87,82 @@ src_unpack() {
# installing into ${D}. We should not patch it in src_install() with
# absolute paths, as some modules then gets rebuild with the wrong
# paths. Thus we use $FAKE_ROOT.
- for x in $(find . -name Makefile.in)
- do
- # Fix --datadir=
- cp ${x} ${x}.orig
- sed -e 's:datadir = @datadir@:datadir = $(FAKE_ROOT)@datadir@:' \
- ${x}.orig > ${x}
-
- # Fix --bindir=
- cp ${x} ${x}.orig
- sed -e 's:bindir = @bindir@:bindir = $(FAKE_ROOT)@bindir@:' \
- ${x}.orig > ${x}
-
- # Fix --with-gxx-include-dir=
- cp ${x} ${x}.orig
- sed -e 's:gxx_include_dir=${includedir}:gxx_include_dir=$(FAKE_ROOT)${includedir}:' \
- ${x}.orig > ${x}
-
- rm -f ${x}.orig
+ for x in $(find . -name Makefile.in) ; do
+ sed -i \
+ -e 's:datadir = @datadir@:datadir = $(FAKE_ROOT)@datadir@:' \
+ -e 's:bindir = @bindir@:bindir = $(FAKE_ROOT)@bindir@:' \
+ -e 's:gxx_include_dir=${includedir}:gxx_include_dir=$(FAKE_ROOT)${includedir}:' \
+ ${x} || die "could not sed $x"
done
}
src_compile() {
- local myconf=""
- use build \
- && myconf="${myconf} --enable-languages=c" \
- || myconf="${myconf} --enable-shared"
- if ! use nls || use build
- then
- myconf="${myconf} --disable-nls"
- else
- myconf="${myconf} --enable-nls --without-included-gettext"
- fi
-
# Make sure we have sane CFLAGS
do_filter_flags
# Build in a separate build tree
- mkdir -p ${WORKDIR}/build
- cd ${WORKDIR}/build
+ mkdir -p "${WORKDIR}"/build
+ cd "${WORKDIR}"/build
- einfo "Configuring GCC..."
- addwrite "/dev/zero"
- ${S}/configure --prefix=${LOC} \
+ local gcclangs="c"
+ local myconf=""
+ if use build ; then
+ myconf="--disable-nls"
+ else
+ myconf=""
+ use !nocxx && gcclangs="${gcclangs},c++"
+ use fortran && gcclangs="${gcclangs},f77"
+ use nls && myconf="${myconf} --enable-nls --without-included-gettext"
+ fi
+ [[ -n ${CBUILD} ]] && myconf="${myconf} --build=${CBUILD}"
+ myconf="--prefix=${LOC} \
--bindir=${BINPATH} \
--datadir=${DATAPATH} \
--mandir=${DATAPATH}/man \
--infodir=${DATAPATH}/info \
--enable-shared \
--host=${CHOST} \
- --target=${CCHOST} \
+ --target=${CTARGET} \
--with-system-zlib \
--enable-threads=posix \
--enable-long-long \
--enable-version-specific-runtime-libs \
--with-local-prefix=${LOC}/local \
- ${myconf} || die
+ --enable-languages=${gcclangs} \
+ ${myconf} \
+ ${EXTRA_ECONF}"
+ echo ${S}/configure ${myconf}
+ addwrite "/dev/zero"
+ ${S}/configure ${myconf} || die "configure failed"
touch ${S}/gcc/c-gperf.h
- # Setup -j in MAKEOPTS
- get_number_of_jobs
-
- einfo "Building GCC..."
- if ! use static
- then
+ if ! use static ; then
# Fix for our libtool-portage.patch
S="${WORKDIR}/build" \
emake bootstrap-lean \
- LIBPATH="${LIBPATH}" STAGE1_CFLAGS="-O" || die
+ LIBPATH="${LIBPATH}" STAGE1_CFLAGS="-O" || die "make failed"
# Above FLAGS optimize and speedup build, thanks
# to Jeff Garzik <jgarzik@mandrakesoft.com>
else
S="${WORKDIR}/build" \
emake LDFLAGS=-static bootstrap \
- LIBPATH="${LIBPATH}" STAGE1_CFLAGS="-O" || die
+ LIBPATH="${LIBPATH}" STAGE1_CFLAGS="-O" || die "make static failed"
fi
}
src_install() {
# Do allow symlinks in ${LOC}/lib/gcc-lib/${CHOST}/${PV}/include as
# this can break the build.
- for x in cd ${WORKDIR}/build/gcc/include/*
- do
- if [ -L ${x} ]
- then
- rm -f ${x}
- fi
+ for x in ${WORKDIR}/build/gcc/include/* ; do
+ [[ -L ${x} ]] && rm -f "${x}"
done
- einfo "Installing GCC..."
# Do the 'make install' from the build directory
cd ${WORKDIR}/build
S="${WORKDIR}/build" \
- make prefix=${D}${LOC} \
+ make \
+ prefix=${D}${LOC} \
bindir=${D}${BINPATH} \
datadir=${D}${DATAPATH} \
mandir=${D}${DATAPATH}/man \
@@ -203,67 +171,58 @@ src_install() {
FAKE_ROOT="${D}" \
install || die
- [ -r ${D}${BINPATH}/gcc ] || die "gcc not found in ${D}"
+ [[ -r ${D}${BINPATH}/gcc ]] || die "gcc not found in ${D}"
dodir /lib /usr/bin
dodir /etc/env.d/gcc
- echo "PATH=\"${BINPATH}\"" > ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- echo "ROOTPATH=\"${BINPATH}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- echo "LDPATH=\"${LIBPATH}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- echo "MANPATH=\"${DATAPATH}/man\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- echo "INFOPATH=\"${DATAPATH}/info\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- echo "STDCXX_INCDIR=\"${STDCXX_INCDIR##*/}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- # Also set CC and CXX
- echo "CC=\"gcc\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- echo "CXX=\"g++\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-
- # Install wrappers
- exeinto /lib
- doexe ${FILESDIR}/cpp
- exeinto /usr/bin
- doexe ${FILESDIR}/cc
+ cat << EOF > ${D}/etc/env.d/gcc/${CTARGET}-${GCC_RELEASE_VER}
+PATH="${BINPATH}"
+ROOTPATH="${BINPATH}"
+LDPATH="${LIBPATH}"
+MANPATH="${DATAPATH}/man"
+INFOPATH="${DATAPATH}/info"
+STDCXX_INCDIR="${STDCXX_INCDIR##*/}"
+EOF
# Make sure we dont have stuff lying around that
# can nuke multiple versions of gcc
- if ! use build
- then
- cd ${D}${LIBPATH}
+ if ! use build ; then
+ cd "${D}"${LIBPATH}
# Tell libtool files where real libraries are
- for LA in ${D}${LOC}/lib/*.la ${D}${LIBPATH}/../*.la
- do
- if [ -f ${LA} ]
- then
- sed -e "s:/usr/lib:${LIBPATH}:" ${LA} > ${LA}.hacked
- mv ${LA}.hacked ${LA}
- mv ${LA} ${D}${LIBPATH}
+ for LA in ${D}${LOC}/lib/*.la ${D}${LIBPATH}/../*.la ; do
+ if [[ -f ${LA} ]] ; then
+ sed -i -e "s:/usr/lib:${LIBPATH}:" "${LA}"
+ mv "${LA}" "${D}"${LIBPATH}
fi
done
# Move all the libraries to version specific libdir.
- for x in ${D}${LOC}/lib/*.{so,a}* ${D}${LIBPATH}/../*.{so,a}*
- do
- [ -f ${x} ] && mv -f ${x} ${D}${LIBPATH}
+ for x in ${D}${LOC}/lib/*.{so,a}* ${D}${LIBPATH}/../*.{so,a}* ; do
+ [[ -f ${x} ]] && mv -f "${x}" "${D}"${LIBPATH}
done
# These should be symlinks
- cd ${D}${BINPATH}
- rm -f ${CCHOST}-{gcc,g++,c++,g77}
- [ -f gcc ] && ln -sf gcc ${CCHOST}-gcc
- [ -f g++ ] && ln -sf g++ ${CCHOST}-g++
- [ -f g++ ] && ln -sf g++ ${CCHOST}-c++
- [ -f g77 ] && ln -sf g77 ${CCHOST}-g77
+ cd "${D}"${BINPATH}
+ for x in gcc g++ c++ g77 gcj ; do
+ # For some reason, g77 gets made instead of ${CTARGET}-g77... this makes it safe
+ [[ -f ${x} ]] && mv ${x} ${CTARGET}-${x}
+
+ if [[ ${CHOST} == ${CTARGET} ]] && [[ -f ${CTARGET}-${x} ]] ; then
+ [[ ! -f ${x} ]] && mv ${CTARGET}-${x} ${x}
+ ln -sf ${x} ${CTARGET}-${x}
+ fi
+ done
fi
# This one comes with binutils
- if [ -f ${D}${LOC}/lib/libiberty.a ]
- then
- rm -f ${D}${LOC}/lib/libiberty.a
- fi
+ rm -f ${D}${LOC}/lib/libiberty.a
cd ${S}
- if ! use build
- then
+ if use build ; then
+ rm -r "${D}"/usr/share/{man,info}
+ rm -r "${D}"/${DATAPATH}/{man,info}
+ elif ! has nodoc ${FEATURES} ; then
cd ${S}
docinto /
dodoc README* FAQ MAINTAINERS
@@ -293,14 +252,12 @@ src_install() {
cd ${S}/libstdc++
docinto libstdc++
dodoc ChangeLog NEWS
- else
- rm -rf ${D}/usr/share/{man,info}
fi
+ has noman ${FEATURES} && rm -r "${D}"/${DATAPATH}/man
+ has noinfo ${FEATURES} && rm -r "${D}"/${DATAPATH}/info
}
pkg_postinst() {
- if [ "${ROOT}" = "/" -a "${CHOST}" == "${CCHOST}" ]
- then
- gcc-config --use-portage-chost ${CCHOST}-${GCC_RELEASE_VER}
- fi
+ [[ ${ROOT} != "/" ]] && return 0
+ gcc-config --use-portage-chost ${CTARGET}-${GCC_RELEASE_VER}
}