You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
222 lines
5.4 KiB
222 lines
5.4 KiB
# Copyright 1999-2024 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
inherit elisp-common flag-o-matic toolchain-funcs
|
|
|
|
MY_PV=${PV/_p/-} # e.g.: 4.4c_p4 -> 4.4c-4
|
|
MY_P="${PN}-${MY_PV}"
|
|
|
|
DESCRIPTION="Practical Scheme Compiler with many extensions"
|
|
HOMEPAGE="http://www-sop.inria.fr/indes/fp/Bigloo/index.html"
|
|
SRC_URI="ftp://ftp-sop.inria.fr/indes/fp/Bigloo/${MY_P}.tar.gz"
|
|
S="${WORKDIR}/${MY_P}"
|
|
|
|
LICENSE="GPL-2+"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64 ~x86"
|
|
IUSE="alsa avahi emacs flac +gmp gpg gstreamer java libuv mp3 pulseaudio +sqlite"
|
|
REQUIRED_USE="flac? ( alsa ) mp3? ( alsa )"
|
|
|
|
EMACS_DEPEND="
|
|
emacs? ( >=app-editors/emacs-23.1:* )
|
|
"
|
|
DEPEND="
|
|
dev-libs/boehm-gc[threads]
|
|
dev-libs/libpcre2:=
|
|
dev-libs/libunistring:=
|
|
dev-libs/openssl:=
|
|
alsa? ( media-libs/alsa-lib )
|
|
avahi? ( net-dns/avahi )
|
|
flac? ( media-libs/flac:= )
|
|
gmp? ( dev-libs/gmp:= )
|
|
gpg? ( app-crypt/gnupg )
|
|
gstreamer? (
|
|
media-libs/gst-plugins-base:1.0=
|
|
media-libs/gstreamer:1.0=
|
|
)
|
|
java? (
|
|
app-arch/zip
|
|
virtual/jdk:*
|
|
)
|
|
libuv? ( dev-libs/libuv:= )
|
|
mp3? ( media-sound/mpg123 )
|
|
pulseaudio? ( media-libs/libpulse )
|
|
sqlite? ( dev-db/sqlite:3= )
|
|
"
|
|
RDEPEND="
|
|
${DEPEND}
|
|
${EMACS_DEPEND}
|
|
sys-devel/binutils
|
|
dev-debug/gdb
|
|
"
|
|
BDEPEND="
|
|
${EMACS_DEPEND}
|
|
sys-apps/texinfo
|
|
"
|
|
|
|
DOCS=( ChangeLog README.md TODO.org )
|
|
SITEFILE="50${PN}-gentoo.el"
|
|
|
|
src_prepare() {
|
|
default
|
|
|
|
sed -e "/^ar=/s|=|= \"$(tc-getAR)\"|" \
|
|
-e "/^ranlib=/s|=|= \"$(tc-getRANLIB)\"|" \
|
|
-i ./configure \
|
|
|| die
|
|
|
|
sed "s|^ar |$(tc-getAR) |" -i ./autoconf/ranlib || die
|
|
}
|
|
|
|
src_configure() {
|
|
# -Werror=lto-type-mismatch
|
|
# https://bugs.gentoo.org/858248
|
|
#
|
|
# The code has various issues that make it look quite worrying to enable
|
|
# LTO, so I wouldn't risk it even if upstream fixes this one. Cannot even
|
|
# test compile the package due to bug #870481, bug #911667
|
|
#
|
|
# It is also impossible to test from git if any of these are fixed, since
|
|
# you need a working version in order to compile from git.
|
|
filter-lto
|
|
|
|
tc-export AR AS CC CPP CXX LD
|
|
export CFLAGS
|
|
export LDFLAGS
|
|
|
|
local -a myconf=(
|
|
# Compilation
|
|
--as="$(tc-getAS)"
|
|
--cc="$(tc-getCC)"
|
|
--cflags="${CFLAGS}"
|
|
--cpicflags="-fPIC"
|
|
--cwarningflags=""
|
|
--ldflags="${LDFLAGS}"
|
|
# Installation directories
|
|
--prefix=/usr
|
|
--bindir=/usr/share/${PN}/bin
|
|
--docdir=/usr/share/doc/${PF}
|
|
--infodir=/usr/share/info
|
|
--libdir=/usr/"$(get_libdir)"
|
|
--mandir=/usr/share/man
|
|
# Custom internal components
|
|
--customgc=no
|
|
--customgmp=no
|
|
--customlibuv=no
|
|
--customunistring=no
|
|
--jvm=$(usex java)
|
|
--native=yes
|
|
--sharedbde=yes
|
|
--sharedcompiler=yes
|
|
--strip=no
|
|
# Libraries, Bigloo calls them APIs
|
|
--disable-phidget # not important for now, only in ::ros-overlay ?
|
|
--enable-calendar # iCalendar parser
|
|
--enable-crypto
|
|
--enable-csv # parsing CSV files
|
|
--enable-mail # IMAP protocol implementation
|
|
--enable-multimedia
|
|
--enable-packrat # packrat parser
|
|
--enable-phone
|
|
--enable-pkgcomp
|
|
--enable-pthread
|
|
--enable-srfi1
|
|
--enable-srfi18
|
|
--enable-ssl
|
|
--enable-text # BibTeX parser
|
|
--enable-upnp # Upnp protocol implementation
|
|
--enable-web # XML, CGI, and RSS parsers
|
|
$(use_enable alsa)
|
|
$(use_enable avahi)
|
|
$(use_enable flac wav)
|
|
$(use_enable flac)
|
|
$(use_enable gmp srfi27)
|
|
$(use_enable gmp)
|
|
$(use_enable gpg openpgp)
|
|
$(use_enable gstreamer)
|
|
$(use_enable libuv)
|
|
$(use_enable mp3 mpg123)
|
|
$(use_enable pulseaudio)
|
|
$(use_enable sqlite pkglib)
|
|
$(use_enable sqlite)
|
|
# GNU Emacs libraries
|
|
--bee=$(usex emacs full partial)
|
|
--emacs=$(usex emacs "${EMACS}" "no")
|
|
--lispdir=$(usex emacs "${SITELISP}/${PN}" "")
|
|
)
|
|
ebegin "Configuring Bigloo with the following options: ${myconf[@]}"
|
|
sh ./configure "${myconf[@]}"
|
|
eend $? || die "configure script failed"
|
|
|
|
# When Emacs version is too high (e.g. 28) bigloo will skip compiling
|
|
# and installing the Emacs support files.
|
|
# The file "bmacs/Makefile" lists all officially supported Emacs versions.
|
|
if use emacs ; then
|
|
sed "/^EMACSBRAND=/s|generic|emacs23|" -i Makefile.config || die
|
|
fi
|
|
}
|
|
|
|
src_compile() {
|
|
emake -j1
|
|
|
|
emake -C bdl -j1
|
|
emake -C bdb -j1
|
|
emake -C cigloo -j1
|
|
|
|
use emacs && emake -C bmacs
|
|
}
|
|
|
|
src_test() {
|
|
emake test
|
|
}
|
|
|
|
src_install() {
|
|
emake DESTDIR="${D}" LN_S="ln -rs" install
|
|
emake DESTDIR="${D}" -C bdl install
|
|
emake DESTDIR="${D}" -C bdb install
|
|
emake DESTDIR="${D}" -C cigloo install
|
|
|
|
# The ".sh" scripts set proper environment and library order for Bigloo,
|
|
# but programs (and the Bigloo Emacs library, "bee-mode") want "bigloo",
|
|
# not "bigloo.sh". To make programs work we install all executable files
|
|
# into "/usr/share/bigloo/bin", and then pick one by one for non-scripts:
|
|
# if a script with ".sh" extensions exists, then we link the script,
|
|
# not the picked executable to a binary name, otherwise link the binary.
|
|
mkdir -p "${D}"/usr/bin || die
|
|
pushd "${D}" >/dev/null || die
|
|
local bin bin_link
|
|
for bin in usr/share/${PN}/bin/* ; do
|
|
if [[ "${bin}" != *.sh ]] ; then
|
|
bin_link="usr/bin/$(basename "${bin}")"
|
|
|
|
if [[ -f ${bin}.sh ]] ; then
|
|
ln -s ../../${bin}.sh "${bin_link}" || die
|
|
else
|
|
ln -s ../../${bin} "${bin_link}" || die
|
|
fi
|
|
fi
|
|
done
|
|
popd >/dev/null || die
|
|
|
|
if use emacs ; then
|
|
emake DESTDIR="${D}" install-bee
|
|
|
|
elisp-site-file-install "${FILESDIR}/${SITEFILE}"
|
|
fi
|
|
|
|
einstalldocs
|
|
|
|
# Remove static libs, bug #890820, #891041
|
|
find "${ED}" -name "*.a" -delete || die
|
|
}
|
|
|
|
pkg_postinst() {
|
|
use emacs && elisp-site-regen
|
|
}
|
|
|
|
pkg_postrm() {
|
|
use emacs && elisp-site-regen
|
|
}
|