blob: 641bd3b7938f6dd7474c44b1b88067c79116be15 [file] [log] [blame]
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
inherit eutils flag-o-matic versionator toolchain-funcs
strip-flags
filter-flags "-pipe"
#due to cache requirements we cannot dynamically match gcc version
#so sticking to a particular (and working) one
GCCVER="3.4.5"
DESCRIPTION="Gnu Pascal Compiler"
HOMEPAGE="http://gnu-pascal.de"
SRC_URI="http://www.math.uni.wroc.pl/~hebisch/${PN}/${P}.tar.bz2
ftp://gcc.gnu.org/pub/gcc/releases/gcc-${GCCVER}/gcc-core-${GCCVER}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~sparc ~x86"
IUSE="nls"
DEPEND=""
RDEPEND="${DEPEND}"
S="${WORKDIR}/gcc-${GCCVER}"
# GCC version strings
GCCMAJOR=$(get_version_component_range 1 "${GCCVER}")
GCCMINOR=$(get_version_component_range 2 "${GCCVER}")
GCCBRANCH=$(get_version_component_range 1-2 "${GCCVER}")
GCCRELEASE=$(get_version_component_range 1-3 "${GCCVER}")
# possible future crosscompilation support
export CTARGET=${CTARGET:-${CHOST}}
PREFIX="/usr"
LIBPATH="${PREFIX}/lib/${PN}/${CTARGET}/${GCCBRANCH}"
LIBEXECPATH="${PREFIX}/libexec/${PN}/${CTARGET}/${GCCBRANCH}"
INCLUDEPATH="${LIBPATH}/include"
DATAPATH="${PREFIX}/share"
BUILDDIR="${WORKDIR}/build"
src_unpack() {
unpack ${A}
cd "${WORKDIR}/${P}/p"
#comment out read to let ebuild continue
sed -i -e "s:read:#read:" config-lang.in || die "seding autoreplies failed"
#and remove that P var (it doesn't seem to do much except to break a build)
sed -i -e "s:\$(P)::" Make-lang.in || die "seding Make-lan.in failed"
cd "${WORKDIR}"
mv ${P}/p "${S}/gcc/"
# Build in a separate build tree
mkdir -p ${BUILDDIR}
}
src_compile() {
local myconf
if use nls; then
myconf="${myconf} --enable-nls --without-included-gettext"
else
myconf="${myconf} --disable-nls"
fi
# reasonably sane globals (from toolchain)
myconf="${myconf} \
--with-system-zlib \
--disable-checking \
--disable-werror \
--disable-libunwind-exceptions"
use amd64 && myconf="${myconf} --disable-multilib"
cd ${BUILDDIR}
tc-export CC
einfo "Configuring GCC for GPC build..."
# addwrite "/dev/zero"
"${S}"/configure \
--prefix=${PREFIX} \
--libdir="${LIBPATH}" \
--libexecdir="${LIBEXECPATH}" \
--datadir=${DATAPATH} \
--mandir=${DATAPATH}/man \
--infodir=${DATAPATH}/info \
--program-prefix="" \
--enable-shared \
--host=${CHOST} \
--target=${CTARGET} \
--enable-languages="c,pascal" \
--enable-threads=posix \
--enable-long-long \
--enable-cstdio=stdio \
--enable-clocale=generic \
--enable-__cxa_atexit \
--enable-version-specific-runtime-libs \
--with-local-prefix=${PREFIX}/local \
${myconf} || die "configure failed"
touch "${S}"/gcc/c-gperf.h
einfo "Building GPC..."
# Fix for our libtool-portage.patc
MAKEOPTS="${MAKEOPTS} -j1" emake LIBPATH="${LIBPATH}" bootstrap || die "make failed"
}
src_install () {
# Do not allow symlinks in ${PREFIX}/lib/gcc-lib/${CHOST}/${PV}/include as
# this can break the build.
for x in cd ${BUILDDIR}/gcc/include/*; do
if [ -L ${x} ]; then
rm -f ${x}
fi
done
einfo "Installing GPC..."
cd ${BUILDDIR}/gcc
make DESTDIR="${D}" \
pascal.install-with-gcc || die
# gcc insists on installing libs in its own place
mv "${D}${LIBPATH}/gcc/${CTARGET}/${GCCRELEASE}"/* "${D}${LIBPATH}"
if [ "${ARCH}" == "amd64" ]; then
# ATTN! this may in fact be related to multilib, rather than amd64
mv "${D}${LIBPATH}/gcc/${CTARGET}"/lib64/libgcc_s* "${D}${LIBPATH}"
mv "${D}${LIBPATH}/gcc/${CTARGET}"/lib/libgcc_s* "${D}${LIBPATH}"/32/
fi
mv "${D}${LIBEXECPATH}/gcc/${CTARGET}/${GCCRELEASE}"/* "${D}${LIBEXECPATH}"
rm -rf "${D}${LIBPATH}/gcc"
rm -rf "${D}${LIBEXECPATH}/gcc"
rm -rf "${D}${LIBEXECPATH}"/install-tools/
# Install documentation.
dodir /usr/share/doc/${PF}
mv "${D}${PREFIX}"/doc/gpc/* "${D}"/usr/share/doc/${PF}
prepalldocs
# final cleanups
rmdir "${D}${PREFIX}"/include "${D}/${PREFIX}"/share/man/man7
rm -rf "${D}${PREFIX}"/doc
# create an env.d entry
dodir /etc/env.d
echo "PATH=${LIBEXECPATH}" > "${D}"etc/env.d/56gpc
echo "ROOTPATH=${LIBEXECPATH}" >> "${D}"etc/env.d/56gpc
}
pkg_postinst ()
{
einfo
elog "Please don't forget to source /etc/profile"
einfo
}