summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2005-05-21 06:21:13 +0000
committerMike Frysinger <vapier@gentoo.org>2005-05-21 06:21:13 +0000
commitee8d6f0bc2d00b3ab026fd3e70ba164f5ea21a8a (patch)
treeba873d5297964d6bf250c9b002dfd81064d28e85 /sys-devel
parentadd some notes about using gpg and /usr on a different partition #90482 (diff)
downloadgentoo-2-ee8d6f0bc2d00b3ab026fd3e70ba164f5ea21a8a.tar.gz
gentoo-2-ee8d6f0bc2d00b3ab026fd3e70ba164f5ea21a8a.tar.bz2
gentoo-2-ee8d6f0bc2d00b3ab026fd3e70ba164f5ea21a8a.zip
Add patches from Debian/crosstool and try to make more cross-compile friendly.
(Portage version: 2.0.51.22-r1)
Diffstat (limited to 'sys-devel')
-rw-r--r--sys-devel/gcc/ChangeLog7
-rw-r--r--sys-devel/gcc/files/digest-gcc-2.95.3-r92
-rw-r--r--sys-devel/gcc/gcc-2.95.3-r9.ebuild265
3 files changed, 273 insertions, 1 deletions
diff --git a/sys-devel/gcc/ChangeLog b/sys-devel/gcc/ChangeLog
index 214362dcc885..fe23bf23415e 100644
--- a/sys-devel/gcc/ChangeLog
+++ b/sys-devel/gcc/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for sys-devel/gcc
# Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/ChangeLog,v 1.406 2005/05/15 01:42:23 halcy0n Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/ChangeLog,v 1.407 2005/05/21 06:21:12 vapier Exp $
+
+*gcc-2.95.3-r9 (21 May 2005)
+
+ 21 May 2005; Mike Frysinger <vapier@gentoo.org> +gcc-2.95.3-r9.ebuild:
+ Add patches from Debian/crosstool and try to make more cross-compile friendly.
*gcc-4.0.1_beta20050514 (15 May 2005)
diff --git a/sys-devel/gcc/files/digest-gcc-2.95.3-r9 b/sys-devel/gcc/files/digest-gcc-2.95.3-r9
new file mode 100644
index 000000000000..542318a3432d
--- /dev/null
+++ b/sys-devel/gcc/files/digest-gcc-2.95.3-r9
@@ -0,0 +1,2 @@
+MD5 f3ad4f32c2296fad758ed051b5ac8e28 gcc-2.95.3.tar.gz 12911721
+MD5 3d3425b380a0baa453e4393f28d6832a gcc-2.95.3-patches-1.2.tar.bz2 121655
diff --git a/sys-devel/gcc/gcc-2.95.3-r9.ebuild b/sys-devel/gcc/gcc-2.95.3-r9.ebuild
new file mode 100644
index 000000000000..f929e4286e07
--- /dev/null
+++ b/sys-devel/gcc/gcc-2.95.3-r9.ebuild
@@ -0,0 +1,265 @@
+# 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-r9.ebuild,v 1.1 2005/05/21 06:21:13 vapier Exp $
+
+inherit eutils flag-o-matic toolchain-funcs versionator fixheadtails gnuconfig
+
+# 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
+# problems.
+do_filter_flags() {
+ strip-flags
+
+ # In general gcc does not like optimization ... we'll add -O2 where safe
+ filter-flags -O?
+
+ # Compile problems with these (bug #6641 among others)...
+ filter-flags -fno-exceptions -fomit-frame-pointer -ggdb
+
+ # Are we trying to compile with gcc3 ? CFLAGS and CXXFLAGS needs to be
+ # valid for gcc-2.95.3 ...
+ gcc2-flags
+}
+
+export CTARGET=${CTARGET:-${CHOST}}
+if [[ ${CTARGET} = ${CHOST} ]] ; then
+ if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then
+ export CTARGET=${CATEGORY/cross-}
+ fi
+fi
+
+LOC="/usr"
+GCC_BRANCH_VER="$(get_version_component_range 1-2)"
+GCC_RELEASE_VER="$(get_version_component_range 1-3)"
+
+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.2
+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
+ mirror://gentoo/${P}-patches-${PATCH_VER}.tar.bz2"
+
+LICENSE="GPL-2 LGPL-2.1"
+KEYWORDS="x86 ppc sparc alpha"
+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=">=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
+ unpack ${P}-patches-${PATCH_VER}.tar.bz2
+ [[ $(tc-arch ${TARGET}) == "alpha" ]] \
+ && rm -f "${EPATCH_SOURCE}"/10_all_new-atexit.patch
+
+ cd "${S}"
+ epatch
+
+ # Fixup libtool to correctly generate .la files with portage
+ libtoolize --copy --force
+
+ # Fix outdated head/tails format #65668
+ ht_fix_file configure gcc/Makefile.in
+
+ # Currently if any path is changed via the configure script, it breaks
+ # 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
+ 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
+
+ gnuconfig_update
+}
+
+src_compile() {
+ # Make sure we have sane CFLAGS
+ do_filter_flags
+
+ # Build in a separate build tree
+ mkdir -p "${WORKDIR}"/build
+ cd "${WORKDIR}"/build
+
+ 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}"
+ [[ ${CHOST} == ${CTARGET} ]] \
+ && myconf="${myconf} --enable-shared --enable-threads=posix" \
+ || myconf="${myconf} --disable-shared --disable-threads"
+ myconf="--prefix=${LOC}
+ --bindir=${BINPATH}
+ --datadir=${DATAPATH}
+ --mandir=${DATAPATH}/man
+ --infodir=${DATAPATH}/info
+ --host=${CHOST}
+ --target=${CTARGET}
+ --with-system-zlib
+ --enable-long-long
+ --enable-version-specific-runtime-libs
+ --with-local-prefix=${LOC}/local
+ --enable-languages=${gcclangs}
+ ${myconf}
+ ${EXTRA_ECONF}"
+ echo ./configure "${myconf}"
+ addwrite "/dev/zero"
+ ${S}/configure ${myconf} || die "configure failed"
+
+ touch ${S}/gcc/c-gperf.h
+
+ if ! use static ; then
+ # Fix for our libtool-portage.patch
+ S="${WORKDIR}/build" \
+ emake bootstrap-lean \
+ 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 "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 ${WORKDIR}/build/gcc/include/* ; do
+ [[ -L ${x} ]] && rm -f "${x}"
+ done
+
+ # Do the 'make install' from the build directory
+ cd ${WORKDIR}/build
+ S="${WORKDIR}/build" \
+ make \
+ prefix=${D}${LOC} \
+ bindir=${D}${BINPATH} \
+ datadir=${D}${DATAPATH} \
+ mandir=${D}${DATAPATH}/man \
+ infodir=${D}${DATAPATH}/info \
+ LIBPATH="${LIBPATH}" \
+ FAKE_ROOT="${D}" \
+ install || die
+
+ [[ -r ${D}${BINPATH}/gcc ]] || die "gcc not found in ${D}"
+
+ dodir /lib /usr/bin
+ dodir /etc/env.d/gcc
+ 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}
+
+ # Tell libtool files where real libraries are
+ 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}
+ done
+
+ # These should be symlinks
+ 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
+ rm -f ${D}${LOC}/lib/libiberty.a
+
+ cd ${S}
+ 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
+ docinto html
+ dodoc faq.html
+ docinto gcc
+ cd ${S}/gcc
+ dodoc BUGS ChangeLog* FSFChangeLog* LANGUAGES NEWS PROBLEMS README* SERVICE TESTS.FLUNK
+ cd ${S}/libchill
+ docinto libchill
+ dodoc ChangeLog
+ cd ${S}/libf2c
+ docinto libf2c
+ dodoc ChangeLog changes.netlib README TODO
+ cd ${S}/libio
+ docinto libio
+ dodoc ChangeLog NEWS README
+ cd dbz
+ docinto libio/dbz
+ dodoc README
+ cd ../stdio
+ docinto libio/stdio
+ dodoc ChangeLog*
+ cd ${S}/libobjc
+ docinto libobjc
+ dodoc ChangeLog README* THREADS*
+ cd ${S}/libstdc++
+ docinto libstdc++
+ dodoc ChangeLog NEWS
+ fi
+ has noman ${FEATURES} && rm -r "${D}"/${DATAPATH}/man
+ has noinfo ${FEATURES} && rm -r "${D}"/${DATAPATH}/info
+}
+
+pkg_postinst() {
+ [[ ${ROOT} != "/" ]] && return 0
+ gcc-config --use-portage-chost ${CTARGET}-${GCC_RELEASE_VER}
+}