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.
gentoo-overlay/dev-scheme/bigloo/bigloo-4.4c_p4-r6.ebuild

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
}