summaryrefslogtreecommitdiff
blob: a428e4536b381947323819795c4c888e85b38f3f (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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lisp/clisp/clisp-2.33.2-r1.ebuild,v 1.3 2004/11/04 17:31:23 mkennedy Exp $

inherit flag-o-matic common-lisp-common eutils gcc

DESCRIPTION="A portable, bytecode-compiled implementation of Common Lisp"
HOMEPAGE="http://clisp.sourceforge.net/"
SRC_URI="mirror://sourceforge/clisp/${P}.tar.bz2"

LICENSE="GPL-2"
SLOT="2"
KEYWORDS="x86 ~ppc"
IUSE="X fastcgi nls pcre postgres readline"

DEPEND="dev-libs/libsigsegv
	dev-lisp/common-lisp-controller
	>=cl-defsystem3-3.3i-r3
	>=dev-lisp/cl-asdf-1.84
	fastcgi? ( dev-libs/fcgi )
	postgres? ( dev-db/postgresql )
	X? ( virtual/x11 )
	readline? ( sys-libs/readline )
	nls? ( sys-devel/gettext )
	pcre? ( dev-libs/libpcre )"

src_unpack() {
	unpack ${A}
	epatch ${FILESDIR}/${PV}/fastcgi-Makefile.in-gentoo.patch
	epatch ${FILESDIR}/${PV}/glibc-linux.lisp-sigpause-gentoo.patch
}

src_compile() {
	# Handle the case where the user has some other -falign-functions
	# option set.  Bug 34630.
	if ! is-flag '-falign-functions=4' \
		&& expr "$CFLAGS" : '.*\(-falign-functions=[[:digit:]]\+\)' >/dev/null; then
		CFLAGS=${CFLAGS/\
		$(expr "$CFLAGS" : '.*\(-falign-functions=[[:digit:]]\+\)')/\
		-falign-functions=4}
	fi

	# Fails to compile without -falign-functions=4 when -march=pentium4
	# (or -march=pentium3, sometimes??) is defined.	 Bugs 33425 and 34630.
	if (is-flag '-march=pentium4' || is-flag '-march=pentium3') \
		&& ! is-flag '-falign-functions=4'; then
		append-flags '-falign-functions=4'
	fi

	# Athlon XP users report problems with -O3 optimization.  In this
	# block, we remove any optimization flag.  Depending on bug 34497. we
	# may be able to reduce optimization to -O2.
	if is-flag '-march=athlon-xp'; then
		filter-flags '-O*'
	fi

	# The previous stanza might not be necessary.  Bug 39830.
	if is-flag '-march=athlon-xp'; then
		replace-flags '-march=athlon-xp' '-mcpu=athlon-xp'
	fi

#	einfo "Using CFLAGS: ${CFLAGS}"
#	export CC="$(gcc-getCC) ${CFLAGS}"

	# Let CLISP use its own set of optimizations
	unset CFLAGS CXXFLAGS
	local myconf="--with-dynamic-ffi
		--with-unicode
		--with-module=regexp
		--with-module=syscalls
		--with-module=wildcard
		--with-module=bindings/glibc"
	use readline || myconf="${myconf} --with-noreadline"
	use nls || myconf="${myconf} --with-nogettext"
	use X && myconf="${myconf} --with-module=clx/new-clx"
	if use postgres; then
		myconf="${myconf} --with-module=postgresql"
		CC="${CC} -I $(pg_config --includedir)"
	fi
	use fastcgi && myconf="${myconf} --with-module=fastcgi"
	use pcre && myconf="${myconf} --with-module=pcre"
	./configure --prefix=/usr ${myconf} build || die "./configure failed"
	cd build
	./makemake ${myconf} >Makefile
	emake -j1 config.lisp
	sed -i 's,"vi","nano",g' config.lisp
	sed -i 's,http://www.lisp.org/HyperSpec/,http://www.lispworks.com/reference/HyperSpec/,g' config.lisp
	emake -j1 || die
}

src_install() {
	cd build && make DESTDIR=${D} prefix=/usr install-bin || die
	doman clisp.1
	dodoc SUMMARY README* NEWS MAGIC.add GNU-GPL COPYRIGHT \
		ANNOUNCE clisp.dvi clisp.html

	rm -f ${D}/usr/lib/clisp/base/*
	(cd ${D}/usr/lib/clisp/base && ln -s ../full/* .)
	chmod a+x ${D}/usr/lib/clisp/clisp-link

	# install common-lisp-controller profile
	exeinto /usr/lib/common-lisp/bin
	doexe ${FILESDIR}/clisp.sh
	insinto /usr/lib/clisp
	doins ${FILESDIR}/install-clc.lisp

	keepdir /usr/lib/common-lisp/clisp
}

pkg_preinst() {
	local clisp_dir=/usr/lib/clisp
	local old_mem=$clisp_dir/full/lispinit.mem
	local new_mem=$clisp_dir/full/lispinit-new.mem
	local clean_mem=$clisp_dir/full/lispinit-clean.mem
	local lisp_run=$clisp_dir/full/lisp.run
	rm -f $old_mem $new_mem $clean_mem $lisp_run
}

pkg_postinst() {
	standard-impl-postinst clisp
	while read line; do einfo "${line}"; done <<EOF

PLEASE NOTE: FASL files (.fas) created by versions of CLISP prior to
2.33 are not compatible with this version of CLISP (${PV}). You will
need to re-create your FASLs via. recompilation.  FASLs in
/usr/lib/common-lisp/clisp for Common Lisp Controller-installed Lisp
packages have aready been recompiled for you.

EOF
}

pkg_postrm() {
	standard-impl-postrm clisp /usr/bin/clisp
}