123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- # Copyright 1999-2012 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- EAPI="3"
- inherit versionator eutils flag-o-matic multilib
- #version magic thanks to masterdriverz and UberLord using bash array instead of tr
- trarr="0abcdefghi"
- MY_PV="$(get_version_component_range 1)${trarr:$(get_version_component_range 2):1}$(get_version_component_range 3)"
- MY_P=${PN}-${MY_PV}
- S=${WORKDIR}/${PN}
- DESCRIPTION="SCM is a Scheme implementation from the author of slib"
- SRC_URI="http://groups.csail.mit.edu/mac/ftpdir/scm/${MY_P}.zip"
- HOMEPAGE="http://swiss.csail.mit.edu/~jaffer/SCM"
- SLOT="0"
- LICENSE="LGPL-3"
- KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-macos"
- IUSE="arrays bignums cautious dynamic-linking engineering-notation gsubr inexact
- ioext libscm macro ncurses posix readline regex sockets unix"
- #unzip for unpacking
- DEPEND="app-arch/unzip
- >=dev-scheme/slib-3.1.5
- dev-util/cproto
- ncurses? ( sys-libs/ncurses )
- readline? ( sys-libs/libtermcap-compat )"
- RDEPEND="${DEPEND}"
- src_prepare() {
- epatch "${FILESDIR}"/${P}-multiplefixes.patch
- }
- src_compile() {
- # SLIB is required to build SCM.
- local slibpath="${EPREFIX}/usr/share/slib/"
- if [ -n "$SCHEME_LIBRARY_PATH" ]; then
- einfo "using SLIB $SCHEME_LIBRARY_PATH"
- elif [ -d ${slibpath} ]; then
- export SCHEME_LIBRARY_PATH=${slibpath}
- fi
- einfo "Making scmlit"
- emake -j1 scmlit clean || die "faild to build scmlit"
- einfo "Building scm"
- local features=""
- use arrays && features+="arrays"
- use bignums && features+=" bignums"
- use cautious && features+=" cautious"
- use engineering-notation && features+=" engineering-notation"
- use inexact && features+=" inexact"
- use macro && features+=" macro"
- ( use readline ||
- use ncurses ||
- use regex ||
- use posix ||
- use ioext ||
- use gsubr ||
- use sockets ||
- use unix ||
- use dynamic-linking ) && features+=" dynamic-linking"
- ./build \
- --compiler-options="${CFLAGS}" \
- --linker-options="${LDFLAGS} -L${EPREFIX}/$(get_libdir)" \
- -s "${EPREFIX}"/usr/$(get_libdir)/scm \
- -F ${features:="none"} \
- -h system \
- -o scm || die
- einfo "Building DLLs"
- if use readline; then
- ./build \
- --compiler-options="${CFLAGS}" \
- --linker-options="${LDFLAGS}" \
- -h system \
- -F edit-line \
- -t dll || die
- fi
- if use ncurses ; then
- ./build \
- --compiler-options="${CFLAGS}" \
- --linker-options="${LDFLAGS}" \
- -F curses \
- -h system \
- -t dll || die
- fi
- if use regex ; then
- ./build \
- --compiler-options="${CFLAGS}" \
- --linker-options="${LDFLAGS}" \
- -c rgx.c \
- -h system \
- -t dll || die
- fi
- if use gsubr ; then
- ./build \
- --compiler-options="${CFLAGS}" \
- --linker-options="${LDFLAGS}" \
- -c gsubr.c \
- -h system \
- -t dll || die
- fi
- if use ioext ; then
- ./build \
- --compiler-options="${CFLAGS}" \
- --linker-options="${LDFLAGS}" \
- -c ioext.c \
- -h system \
- -t dll || die
- fi
- if use posix; then
- ./build \
- --compiler-options="${CFLAGS}" \
- --linker-options="${LDFLAGS}" \
- -c posix.c \
- -h system \
- -t dll || die
- fi
- if use sockets ; then
- ./build \
- --compiler-options="${CFLAGS}" \
- --linker-options="${LDFLAGS}" \
- -c socket.c \
- -h system \
- -t dll || die
- fi
- if use unix ; then
- ./build \
- --compiler-options="${CFLAGS}" \
- --linker-options="${LDFLAGS}" \
- -c unix.c \
- -h system \
- -t dll || die
- fi
- if use libscm ; then
- emake libscm.a || die
- fi
- }
- src_test() {
- emake check
- }
- src_install() {
- emake DESTDIR="${D}" man1dir="${EPREFIX}"/usr/share/man/man1/ \
- install || die "Install failed"
- if use libscm; then
- emake DESTDIR="${D}" libdir="${EPREFIX}"/usr/$(get_libdir)/ \
- installlib || die
- fi
- doinfo scm.info
- doinfo hobbit.info
- }
- pkg_postinst() {
- [ "${ROOT}" == "/" ] && pkg_config
- }
- pkg_config() {
- einfo "Regenerating catalog..."
- scm -e "(require 'new-catalog)"
- }
|