diff options
author | Mike Frysinger <vapier@gentoo.org> | 2005-05-21 06:21:13 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2005-05-21 06:21:13 +0000 |
commit | ee8d6f0bc2d00b3ab026fd3e70ba164f5ea21a8a (patch) | |
tree | ba873d5297964d6bf250c9b002dfd81064d28e85 /sys-devel | |
parent | add some notes about using gpg and /usr on a different partition #90482 (diff) | |
download | gentoo-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/ChangeLog | 7 | ||||
-rw-r--r-- | sys-devel/gcc/files/digest-gcc-2.95.3-r9 | 2 | ||||
-rw-r--r-- | sys-devel/gcc/gcc-2.95.3-r9.ebuild | 265 |
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} +} |