summaryrefslogtreecommitdiff
blob: 9128073c9c6b8e1744ec56bfccde5dff6ddbc809 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-scheme/stalin/stalin-0.11.ebuild,v 1.4 2014/08/10 21:26:00 slyfox Exp $

inherit eutils

DESCRIPTION="An aggressively optimizing Scheme compiler"
HOMEPAGE="http://community.schemewiki.org/?Stalin"
SRC_URI="ftp://ftp.ecn.purdue.edu/qobi/${P}.tgz"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~x86"
IUSE=""
RESTRICT="strip"
RDEPEND="x11-libs/libX11"
DEPEND="${RDEPEND}"

src_unpack() {
	unpack ${A}
	cd "${S}"
	sed -i -e 's/-O3 -fomit-frame-pointer/$(CFLAGS)/' makefile
}

pkg_setup() {
	ewarn "Stalin is an ugly beast, which will eat all your memory and stress your"
	ewarn "processor to levels you have never experienced. If you want to abort,"
	ewarn "please do it now. You have been warned."
}

src_compile() {
	einfo "Beginning of stalin's compilation process. It may take several minutes."
	./build || die "Stalin's compilation failed"
}

src_test() {
	einfo "This may take REALLY much time and requires"
	einfo "possibly more than 2Gb of RAM+swap."
	cd benchmarks
	./compile-and-run-stalin-old-benchmarks || die "old benchmarks failed"
	#./compile-and-run-stalin-bcl-benchmarks || die "bcl bechmarks failed"
	#./compile-and-run-stalin-fdlcc-benchmarks || die "fdlcc benchmarks failed"
}

src_install() {
	pushd include
		dodir /usr/include/${PN}
		insinto /usr/include/${PN}
		doins gc.h gc_config_macros.h
		dodir /usr/lib/${PN}
		insinto /usr/lib/${PN}
		doins libgc.a libstalin.a stalin stalin-architecture-name \
		stalin.architectures QobiScheme.sc xlib.sc xlib-original.sc \
		Scheme-to-C-compatibility.sc
		fperms 755 /usr/lib/${PN}/stalin \
		/usr/lib/${PN}/stalin-architecture-name
	popd
(
cat <<'EOF'
#!/bin/bash

exec /usr/lib/stalin/stalin -I /usr/include/stalin \
-I /usr/lib/stalin -copt -fno-strict-aliasing $@

EOF
) > stalin
	exeinto /usr/bin
	doexe stalin
	doman stalin.1
	dodoc ANNOUNCEMENT MORE README
	pushd benchmarks
		sed -i -e 's/..\/stalin/stalin/' make-hello
		dodoc hello.sc make-hello
	popd
}

pkg_postinst() {
	elog "In ${ROOT}/usr/share/doc/${PF} you will find the make-hello and"
	elog "hello.sc files(compressed). If you put them in the same directory"
	elog "and run make.hello, it will produce a \"hello\" executable."
	elog "The \"make-hello\" file can be used as an example of how to use"
	elog "stalin to compile code and create efficient executables. "
	elog "man stalin , for documentation"
}