blob: 997c4fe40b2d2f05da48baa043c4bc1885e87fdf [file] [log] [blame]
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=4
inherit autotools toolchain-funcs
RESTRICT="test"
DESCRIPTION="OpenDylan language runtime environment"
HOMEPAGE="http://opendylan.org"
SRC_URI="http://opendylan.org/downloads/${PN}/${PV}/${P}-sources.tar.bz2"
LICENSE="Opendylan"
SLOT="0"
# not tested on x86
KEYWORDS="~amd64 ~x86"
IUSE=""
# the boehm-gc check is "wrong" and reported upstream
# but for now static-libs useflag is needed
DEPEND="app-arch/unzip
dev-libs/boehm-gc[threads]
dev-lang/perl
dev-perl/XML-Parser
|| ( dev-lang/opendylan-bin dev-lang/opendylan )
x86? ( <dev-libs/mps-1.108 )"
RDEPEND="${DEPEND}"
# on x86 there's a dependency on mps, but the build system is a bit ... hmm ...
# let's give it more of a chance to survive then
NAUGHTY_FILES=(
sources/lib/run-time/collector.c.malloc
sources/lib/run-time/collector.c
sources/lib/run-time/pentium-win32/buffalo-collector.c
sources/lib/run-time/pentium-win32/heap-stats.c
sources/lib/run-time/heap-utils.h
)
NAUGHTY_HEADERS=(
mps.h
mpscmv.h
mpscamc.h
mpsavm.h
)
src_prepare() {
# configure autodetects clang and prefers it, #527108
sed -i -e 's/clang//' configure.ac || die
mkdir -p build-aux
elibtoolize && eaclocal || die "Fail"
automake --foreign --add-missing # this one dies wrongfully
eautoconf || die "Fail"
# mps headers, included wrong
if use x86; then
for i in ${NAUGHTY_FILES[@]}; do
for header in ${NAUGHTY_HEADERS[@]}; do
sed -i -e "s:\"${header}\":<${header}>:" $i
done
done
fi
}
src_configure() {
if has_version =dev-lang/opendylan-bin-2014.1; then
PATH=/opt/opendylan-2014.1/bin/:$PATH
elif has_version =dev-lang/opendylan-bin-2013.2; then
PATH=/opt/opendylan-2013.2/bin/:$PATH
elif has_version =dev-lang/opendylan-bin-2013.1; then
PATH=/opt/opendylan-2013.1/bin/:$PATH
else
PATH=/opt/opendylan/bin:$PATH
fi
if use amd64; then
econf --prefix=/opt/opendylan || die
else
econf --prefix=/opt/opendylan --with-mps=/usr/include/mps/ || die
fi
if use x86; then
# Includedir, pointing at something wrong
sed -i -e 's:-I$(MPS)/code:-I$(MPS):' sources/lib/run-time/pentium-linux/Makefile || die "Couldn't fix mps path"
sed -i -e 's~(cd $(MPS)/code; make -f lii4gc.gmk mmdw.a)~:;~' sources/lib/run-time/pentium-linux/Makefile || die "Couldn't fix mps building"
sed -i -e 's~(cd $(MPS)/code; make -f lii4gc.gmk mpsplan.a)~:;~' sources/lib/run-time/pentium-linux/Makefile || die "Couldn't fix mps building"
sed -i -e 's~$(MPS_LIB)/mpsplan.a~/usr/lib/mpsplan.a~' sources/lib/run-time/pentium-linux/Makefile || die "Couldn't fix mps clone"
sed -i -e 's~$(MPS_LIB)/mmdw.a~/usr/lib/mmdw.a~' sources/lib/run-time/pentium-linux/Makefile || die "Couldn't fix mps clone"
fi
}
src_compile() {
ulimit -s 32000 # this is naughty build system
emake -j1 3-stage-bootstrap || die
}
src_install() {
ulimit -s 32000 # this is naughty build system
# because of Makefile weirdness it rebuilds quite a bit here
# upstream has been notified
emake -j1 DESTDIR="${D}" install
mkdir -p "${D}/etc/env.d/opendylan/"
echo "export PATH=/opt/opendylan/bin:\$PATH" > "${D}/etc/env.d/opendylan/99-opendylan" || die "Failed to add env settings"
}