summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs/tango/tango-0.98.ebuild')
-rw-r--r--dev-libs/tango/tango-0.98.ebuild230
1 files changed, 230 insertions, 0 deletions
diff --git a/dev-libs/tango/tango-0.98.ebuild b/dev-libs/tango/tango-0.98.ebuild
new file mode 100644
index 0000000..7dff8ca
--- /dev/null
+++ b/dev-libs/tango/tango-0.98.ebuild
@@ -0,0 +1,230 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="Platform library for the D programming language"
+HOMEPAGE="http://www.dsource.org/projects/tango/"
+SRC_URI="http://downloads.dsource.org/projects/${PN}/${PV}/${P}-src.tar.gz"
+
+LICENSE="|| ( AFL-2.1 BSD )"
+SLOT="0"
+KEYWORDS="~x86"
+
+# Tango with GDC needs to be cleaned up
+#IUSE="gdc"
+IUSE=""
+
+DEPEND="!dev-libs/phobos"
+RDEPEND=""
+S=${WORKDIR}/${P}-src
+
+# Helper functions for compiling
+tango_filter_file() {
+ FILE=$1
+ if [ "`echo $FILE | grep win32`" -o "`echo $FILE | grep Win32`" ]; then
+ return 1
+ fi
+ if [ "`echo $FILE | grep darwin`" ]; then
+ return 1
+ fi
+ return 0
+}
+
+tango_compile_file() {
+ DC=$1
+ FILENAME=$3
+ OBJNAME=`echo $FILENAME | sed -e 's/\.d//' | sed -e 's/\//\./g'`
+ OBJNAME=${OBJNAME}.o
+
+ if tango_filter_file $OBJNAME; then
+ $DC -c -inline -release -O -version=Posix -version=Tango -of$OBJNAME $FILENAME
+ ar -r lib/$2 $OBJNAME
+ rm $OBJNAME
+ fi
+}
+
+tango_compile_library() {
+ cd ${S}
+ for fil in `find tango -name '*.d'`
+ do
+ tango_compile_file $1 $2 $fil
+ done
+ ranlib lib/$2
+}
+
+tango_compile_dmd() {
+ for f in "dmd-posix.mak common/tango/posix.mak compiler/dmd/posix.mak"
+ do
+ fperms guo=rw $f
+ sed -i -e "s:^DC=.*:DC=/opt/dmd/bin/dmd.bin:" $f
+ edos2unix $f
+ done
+
+ OLDHOME=$HOME
+ export HOME=${S}/lib
+ make clean -fdmd-posix.mak
+ make lib doc install -fdmd-posix.mak || die "Compile failed!"
+ make clean -fdmd-posix.mak
+ export HOME=$OLDHOME
+
+ tango_compile_library /opt/dmd/bin/dmd.bin libtango.a
+}
+
+tango_compile_gdc() {
+ GDC_VER="`gdc --version | grep 'gdc' | sed 's/^.*gdc \([0-9]*\.[0-9]*\).*$/\1/'`"
+ GDC_MAJOR="`echo $GDC_VER | sed 's/\..*//'`"
+ GDC_MINOR="`echo $GDC_VER | sed 's/.*\.//'`"
+
+ if [ "$GDC_MAJOR" = "0" -a "$GDC_MINOR" -lt "23" ]; then
+ eerror " "
+ eerror "This version of Tango requires GDC 0.23 or newer!"
+ eerror " "
+ die "Required version of GDC not found"
+ fi
+
+ HOST_ARCH="`./compiler/gdc/config.guess | sed 's/-.*//'`"
+ ADD_CFLAGS=
+ if [ "$HOST_ARCH" = "powerpc" -a ! "`./compiler/gdc/config.guess | grep darwin`" ]; then
+ ADD_CFLAGS="-mregnames"
+ fi
+
+ pushd ./compiler/gdc
+ ./configure || die "Configure failed!"
+ popd
+
+ OLDHOME=$HOME
+ export HOME=${S}/lib
+ make clean -fgdc-posix.mak
+ make lib doc install -fgdc-posix.mak ADD_CFLAGS="$ADD_CFLAGS" || die "Compile failed!"
+ make clean -fgdc-posix.mak
+ export HOME=$OLDHOME
+
+ tango_compile_library gdmd libgtango.a
+}
+
+# Helper functions for installing
+tango_install_dmd() {
+ LOC=/opt/dmd
+ cd ${S}
+ insinto ${LOC}/lib
+ doins ${S}/lib/*.a
+ insinto ${LOC}/include/d/tango
+ doins ${S}/object.di
+ mv ${S}/tango ${D}${LOC}/include/d/tango
+ mv ${S}/std ${D}${LOC}/include/d/tango
+
+ cat <<END > "dmd"
+#!/bin/sh
+${LOC}/bin/dmd.bin -I${LOC}/include/d/tango -L${LOC}/lib/libtango.a -version=Tango -version=Posix \$*
+END
+ fperms guo=rx dmd
+ mkdir ${D}${LOC}/bin
+ cp dmd ${D}${LOC}/bin
+}
+
+tango_install_gdc() {
+ insinto /usr/$(get_libdir)/gcc/$CHOST/$(gcc-fullversion)
+ doins ${S}/lib/*.a
+ insinto /usr/include/d/$(gcc-fullversion)
+ doins ${S}/object.di
+ doins ${S}/tango/*
+}
+
+pkg_setup() {
+ if use gdc; then
+ if ! built_with_use sys-devel/gcc d; then
+ eerror " "
+ eerror "You have enabled the gdc USE flag, but gcc was "
+ eerror "not compiled with the d USE flag. Either merge "
+ eerror "sys-devel/gcc with d enabled, or "
+ eerror "dev-lang/dmd-bin with the tango USE flag. "
+ eerror " "
+ die "No suitable D compiler found!"
+ else
+ if built_with_use dev-lang/dmd-bin tango; then
+ export ENABLE_LIBRARY="both"
+ einfo " "
+ einfo "dev-lang/dmd-bin with tango USE flag detected, "
+ einfo "the Tango standard library with be built and "
+ einfo "enabled for the DMD compiler. "
+ einfo " "
+ einfo "You have also used the gdc use flag, and "
+ einfo "Tango will be built and enabled for the GDC "
+ einfo "compiler. "
+ einfo " "
+ else
+ export ENABLE_LIBRARY="gdc"
+ einfo " "
+ einfo "The Tango standard library will be built and "
+ einfo "enabled for the GDC compiler. "
+ einfo " "
+ fi
+ fi
+ else
+ if ! built_with_use dev-lang/dmd-bin tango; then
+ eerror " "
+ eerror "dev-lang/dmd-bin was not built with the tango "
+ eerror "USE flag. Please enable it if you wish to use "
+ eerror "Tango with DMD. If you want to use Tango with "
+ eerror "GDC, please enable the gdc USE flag for this "
+ eerror "package. "
+ eerror " "
+ die "No suitable D compiler found!"
+ else
+ export ENABLE_LIBRARY="dmd"
+ einfo " "
+ einfo "the Tango standard library with be built and "
+ einfo "enabled for the DMD compiler. "
+ einfo " "
+ fi
+ fi
+}
+
+src_compile() {
+ cd ${S}/lib
+
+ case "$ENABLE_LIBRARY" in
+
+ "dmd" )
+ tango_compile_dmd
+ ;;
+
+ "gdc" )
+ tango_compile_gdc
+ ;;
+
+ "both" )
+ tango_compile_dmd
+ tango_compile_gdc
+ ;;
+
+ esac
+}
+
+src_install() {
+ case "$ENABLE_LIBRARY" in
+
+ "dmd" )
+ tango_install_dmd
+ ;;
+
+ "gdc" )
+ tango_install_gdc
+ ;;
+
+ "both" )
+ tango_install_dmd
+ tango_install_gdc
+ ;;
+
+ esac
+}
+
+pkg_postinst() {
+ einfo " "
+ einfo "*Please* run env-update && source /etc/profile "
+ einfo "before using your D compilers! "
+ einfo " "
+}