cairo: Disable static, and add "xcairo" recipe that builds the Xlib backend as a standalone library.

This commit is contained in:
Augustin Cavalier
2021-12-17 23:42:56 -05:00
parent a726ce40e6
commit 51eeb3cbb6
3 changed files with 190 additions and 13 deletions

View File

@@ -0,0 +1,122 @@
SUMMARY="Multi-platform 2D graphics library"
DESCRIPTION="Cairo is a 2D graphics library with support for multiple output \
devices. Currently supported output targets include the X Window \
System (via both Xlib and XCB), quartz, win32, and image buffers, \
as well as PDF, PostScript, and SVG file output. Experimental backends \
include OpenGL, BeOS, OS/2, and DirectFB."
HOMEPAGE="http://cairographics.org/"
COPYRIGHT="2000, 2002, 2004-2007 Keith Packard
2002-2003 University of Southern California
2004-2010 Red Hat, Inc.
2005-2010 Mozilla Corporation
2006-2009 Adrian Johnson
2007-2009 Chris Wilson
2006-2013 Intel Corporation
2011 Andrea Canciani
2011 Samsung Electronics
2010-2011 Linaro Limited
2009-2010 Eric Anholt
2002-2010 many others"
LICENSE="GNU LGPL v2.1
MPL v1.1"
REVISION="2"
SOURCE_URI="http://cairographics.org/releases/cairo-$portVersion.tar.xz"
CHECKSUM_SHA256="5e7b29b3f113ef870d1e3ecf8adf21f923396401604bda16d44be45e66052331"
PATCHES="cairo-$portVersion.patchset"
SOURCE_DIR="cairo-$portVersion"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
libVersion="2.11600.0"
libVersionCompat="$libVersion compat >= ${libVersion%%.*}"
PROVIDES="
xcairo$secondaryArchSuffix = $portVersion
lib:libcairo_xlib$secondaryArchSuffix = $libVersionCompat
"
REQUIRES="
haiku$secondaryArchSuffix
cairo$secondaryArchSuffix == $portVersion
lib:libpixman_1$secondaryArchSuffix
lib:libX11$secondaryArchSuffix
"
PROVIDES_devel="
xcairo${secondaryArchSuffix}_devel = $portVersion
devel:libcairo_xlib$secondaryArchSuffix = $libVersionCompat
"
REQUIRES_devel="
xcairo$secondaryArchSuffix == $portVersion base
cairo${secondaryArchSuffix}_devel == $portVersion
devel:libpixman_1$secondaryArchSuffix
devel:libX11$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
cairo${secondaryArchSuffix}_devel == $portVersion
devel:libX11$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:aclocal
cmd:autoconf
cmd:automake
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:libtoolize
cmd:make
cmd:pkg_config$secondaryArchSuffix
"
defineDebugInfoPackage xcairo$secondaryArchSuffix \
"$libDir"/libcairo-xlib.so.$libVersion
BUILD()
{
exit 0
autoreconf -fi
export CFLAGS=-D__BSD_VISIBLE
runConfigure ./configure \
--disable-static --enable-shared \
--enable-xlib
make $jobArgs
# hack: build libcairo-xlib from just the relevant objects
rm -f cairo-tmp.a
# TODO: these symbols should really all be hidden
ar rcs cairo-tmp.a src/.libs/*.o
gcc -shared -o libcairo-xlib.so -lcairo -lpixman-1 -lfreetype -lfontconfig \
-lX11 -lXext -Wl,--no-undefined \
src/.libs/*xlib*.o cairo-tmp.a
}
INSTALL()
{
# install our custom cairo-xlib
mkdir -p $libDir
cp libcairo-xlib.so $libDir
mv $libDir/libcairo-xlib.so $libDir/libcairo-xlib.so.$libVersion
ln -s libcairo-xlib.so.$libVersion $libDir/libcairo-xlib.so.2
ln -s libcairo-xlib.so.$libVersion $libDir/libcairo-xlib.so
# pkg-config
mkdir -p $developLibDir/pkgconfig/
cp src/cairo-xlib.pc $developLibDir/pkgconfig/
sed -i "s/Libs\\:/Libs\\: -lcairo-xlib/" $developLibDir/pkgconfig/cairo-xlib.pc
# header
mkdir -p $includeDir/cairo
cp src/cairo-xlib.h $includeDir/cairo/
sed -i '/^#if CAIRO_HAS_XLIB_SURFACE.*/i #define CAIRO_HAS_XLIB_SURFACE 1' $includeDir/cairo/cairo-xlib.h
prepareInstalledDevelLibs \
libcairo-xlib
# make compatibility symlinks
ln -s libcairo-xlib.so.$libVersion $libDir/libcairo-xlib.so.2
packageEntries devel \
$developDir
}