ffcall, new recipe (#11248)

This commit is contained in:
Schrijvers Luc
2024-10-23 11:34:02 +02:00
committed by GitHub
parent 596c9f2660
commit ee1c922290

View File

@@ -0,0 +1,145 @@
SUMMARY="Foreign function call libraries"
DESCRIPTION="This is a library which can be used to build foreign function call interfaces in \
embedded interpreters.
Installed libraries and header files:
It installs a library libffcall.{a,so}; to link with it, use the compiler option '-lffcall'.
It consists of two parts:
* avcall - calling C functions with variable arguments. Its include file is <avcall.h>.
* callback - closures with variable arguments as first-class C functions. Its include file is \
<callback.h>.
Additionally, you can determine the libffcall version by including <ffcall-version.h>.
For backward compatibility with versions 1.x, libraries libavcall.{a,so} and libcallback.{a,so} \
are installed as well. But they are deprecated; use libffcall.{a,so} instead."
HOMEPAGE="https://www.gnu.org/software/libffcall/"
COPYRIGHT="1993-1995 Bill Triggs
1995-2021 Bruno Haible
1997 Jörg Höhle
2000 Adam Fedor
2001-2012 Sam Steingold
2001-2002 Gerhard Tonn
2004 Paul Guyot
2005 Thiemo Seufer
2009 Max Lapan
2010 Valery Ushakov"
LICENSE="GNU GPL v2"
REVISION="1"
SOURCE_URI="https://ftp.gnu.org/gnu/libffcall/libffcall-$portVersion.tar.gz"
CHECKSUM_SHA256="7f422096b40498b1389093955825f141bb67ed6014249d884009463dc7846879"
SOURCE_DIR="libffcall-$portVersion"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
ffcallLibs="
libavcall
libcallback
libffcall
libtrampoline
"
libavcallVersion="1.1.1"
libcallbackVersion="1.0.5"
libffcallVersion="0.1.1"
libtrampolineVersion="1.0.4"
for i in lib $ffcallLibs; do
eval "${i}VersionCompat=\"\$${i}Version compat >= \${${i}Version%%.*}\""
done
PROVIDES="
ffcall$secondaryArchSuffix = $portVersion
lib:libavcall$secondaryArchSuffix = $libavcallVersionCompat
lib:libcallback$secondaryArchSuffix = $libcallbackVersionCompat
lib:libffcall$secondaryArchSuffix = $libffcallVersionCompat
lib:libtrampoline$secondaryArchSuffix = $libtrampolineVersionCompat
"
REQUIRES="
haiku$secondaryArchSuffix
"
PROVIDES_devel="
ffcall${secondaryArchSuffix}_devel = $portVersion
devel:libavcall$secondaryArchSuffix = $libavcallVersionCompat
devel:libcallback$secondaryArchSuffix = $libcallbackVersionCompat
devel:libffcall$secondaryArchSuffix = $libffcallVersionCompat
devel:libtrampoline$secondaryArchSuffix = $libtrampolineVersionCompat
devel:libvacall$secondaryArchSuffix
"
REQUIRES_devel="
ffcall$secondaryArchSuffix == $portVersion base
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
"
BUILD_PREREQUIRES="
cmd:aclocal
cmd:autoreconf
cmd:gcc$secondaryArchSuffix
cmd:libtoolize$secondaryArchSuffix
cmd:make
"
defineDebugInfoPackage ffcall$secondaryArchSuffix \
$libDir/libavcall.so.$libavcallVersion \
$libDir/libcallback.so.$libcallbackVersion \
$libDir/libffcall.so.$libffcallVersion \
$libDir/libtrampoline.so.$libtrampolineVersion
BUILD()
{
autoreconf -fi
runConfigure --omit-dirs dataDir ./configure \
--datadir=$developDocDir \
--disable-static
make $jobArgs
}
INSTALL()
{
make install
# remove libtool files
rm -rf $libDir/*.la
# rename generic manpage names
pushd $manDir/man3
for f in *; do
mv $f ffcall-$f
done
popd
# Add pkgconfig file
mkdir -p $developLibDir/pkgconfig
cat > $developLibDir/pkgconfig/libffcall.pc << EOF
bindir=$prefix/bin
exec_prefix=$prefix
libdir=$libDir
includedir=$includeDir
Name: libffcall
Description: $SUMMARY
Version: $portVersion
Libs: -L$developLibDir -lffcall
Cflags: -I$includeDir
EOF
prepareInstalledDevelLibs \
libavcall\
libcallback \
libffcall \
libtrampoline \
libvacall
packageEntries devel \
$developDir \
$manDir
}
TEST()
{
make check
}