# 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 }