diff options
-rw-r--r-- | .SRCINFO | 33 | ||||
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | 0001-Added-missing-headers-and-symbols.patch | 27 | ||||
-rw-r--r-- | 0002-ipc-rmid-deferred-release.patch | 11 | ||||
-rw-r--r-- | 0026-create-argb-fonts.all.patch | 22 | ||||
-rw-r--r-- | PKGBUILD | 71 |
6 files changed, 167 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..e0ce3024b003 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,33 @@ +pkgbase = android-armv7a-eabi-cairo + pkgdesc = 2D graphics library with support for multiple output devices (Android armv7a-eabi) + pkgver = 1.18.0 + pkgrel = 1 + url = http://cairographics.org/ + arch = any + license = LGPL + license = MPL + makedepends = android-meson + makedepends = android-armv7a-eabi-librsvg + makedepends = android-armv7a-eabi-poppler + depends = android-armv7a-eabi-fontconfig + depends = android-armv7a-eabi-glib2 + depends = android-armv7a-eabi-libpng + depends = android-armv7a-eabi-lzo + depends = android-armv7a-eabi-pixman + depends = android-armv7a-eabi-zlib + provides = android-armv7a-eabi-cairo + conflicts = android-armv7a-eabi-cairo + options = !strip + options = !buildflags + options = staticlibs + options = !emptydirs + source = https://gitlab.freedesktop.org/cairo/cairo/-/archive/1.18.0/cairo-1.18.0.tar.gz + source = 0001-Added-missing-headers-and-symbols.patch + source = 0002-ipc-rmid-deferred-release.patch + source = 0026-create-argb-fonts.all.patch + sha256sums = 39a78afdc33a435c0f2ab53a5ec2a693c3c9b6d2ec9783ceecb2b94d54d942b0 + sha256sums = a73c90af559d4fb2e72bdd80ebc624b19579f3df0e9c0ad6e8af9aef41e7789a + sha256sums = 50143b4a090169b1d086cffdf1f0364c82facc886466e3b2f7fea668520961e8 + sha256sums = 6db6c44fbdb4926d09afa978fe80430186c4b7b7d255059602b1f94c6a079975 + +pkgname = android-armv7a-eabi-cairo diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..f46de972b6fc --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +pkg/ +src/ +*.xz diff --git a/0001-Added-missing-headers-and-symbols.patch b/0001-Added-missing-headers-and-symbols.patch new file mode 100644 index 000000000000..faadcaa72bfc --- /dev/null +++ b/0001-Added-missing-headers-and-symbols.patch @@ -0,0 +1,27 @@ +--- a/src/cairo-ft-private.h ++++ b/src/cairo-ft-private.h +@@ -38,6 +38,8 @@ + #ifndef CAIRO_FT_PRIVATE_H + #define CAIRO_FT_PRIVATE_H + ++#include <freetype/ftcolor.h> ++ + #include "cairoint.h" + #include "cairo-ft.h" + +--- a/util/malloc-stats.c ++++ b/util/malloc-stats.c +@@ -117,7 +117,13 @@ + for (i = 0; i < num; i++) + addrs[i] = (void *) func_stats[i].addr; + ++#if defined(__ANDROID_API__) && __ANDROID_API__ >= 33 + strings = backtrace_symbols (addrs, num); ++#else ++ strings = malloc (num * sizeof (char *)); ++ for (i = 0; i < num; i++) ++ strings[i] = "unknown"; ++#endif + + for (i = 0; i < num; i++) { + char *p; diff --git a/0002-ipc-rmid-deferred-release.patch b/0002-ipc-rmid-deferred-release.patch new file mode 100644 index 000000000000..2ea92bbd41e0 --- /dev/null +++ b/0002-ipc-rmid-deferred-release.patch @@ -0,0 +1,11 @@ +--- a/meson.build ++++ b/meson.build +@@ -373,7 +373,7 @@ + # We don't know the type of prop (bool, string) but need to differentiate + # between a set value (bool) or the fallback value (string), so convert to + # a string and check the string value. +- prop_str = '@0@'.format(prop) ++ prop_str = 'false' + if prop_str in ['true', 'false'] + ipc_rmid_deferred_release = (prop_str == 'true') + message('IPC_RMID_DEFERRED_RELEASE:', ipc_rmid_deferred_release) diff --git a/0026-create-argb-fonts.all.patch b/0026-create-argb-fonts.all.patch new file mode 100644 index 000000000000..866b49f8a8b7 --- /dev/null +++ b/0026-create-argb-fonts.all.patch @@ -0,0 +1,22 @@ +--- cairo-bb17403622e9ea474017e0039af8ee48b2b285db/src/win32/cairo-win32-font.c.orig 2014-04-02 04:16:04.638143700 +0000 ++++ cairo-bb17403622e9ea474017e0039af8ee48b2b285db/src/win32/cairo-win32-font.c 2014-04-05 20:10:47.108309200 +0000 +@@ -1600,7 +1600,7 @@ + width = x2 - x1; + height = y2 - y1; + +- surface = cairo_win32_surface_create_with_dib (CAIRO_FORMAT_RGB24, ++ surface = cairo_win32_surface_create_with_dib (CAIRO_FORMAT_ARGB32, + width, height); + status = _cairo_surface_paint (surface, CAIRO_OPERATOR_SOURCE, + &_cairo_pattern_white.base, NULL); +--- cairo-bb17403622e9ea474017e0039af8ee48b2b285db/src/win32/cairo-win32-surface.c.orig 2014-03-21 13:10:19.000000000 +0000 ++++ cairo-bb17403622e9ea474017e0039af8ee48b2b285db/src/win32/cairo-win32-surface.c 2014-04-05 20:12:14.176865500 +0000 +@@ -227,7 +227,7 @@ + + /* We can only handle opaque solid color sources and destinations */ + assert (_cairo_pattern_is_opaque_solid(source)); +- assert (dst->format == CAIRO_FORMAT_RGB24); ++ assert (dst->format == CAIRO_FORMAT_RGB24 || dst->format == CAIRO_FORMAT_ARGB32); + + solid_pattern = (cairo_solid_pattern_t *)source; + color = RGB(((int)solid_pattern->color.red_short) >> 8, diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..37a3f1047831 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,71 @@ +# Maintainer: Gonzalo Exequiel Pedone <hipersayan DOT x AT gmail DOT com> +# Contributor: drakkan <nicola.murino at gmail dot com> +# Contributor: Chris Kitching <chriskitching@linux.com> +# Contributor: Xiao-Long Chen <chenxiaolong@cxl.epac.to> + +_android_arch=armv7a-eabi + +pkgname=android-${_android_arch}-cairo +pkgver=1.18.0 +pkgrel=1 +arch=('any') +pkgdesc="2D graphics library with support for multiple output devices (Android ${_android_arch})" +license=("LGPL" + "MPL") +url="http://cairographics.org/" +conflicts=("android-${_android_arch}-cairo") +depends=("android-${_android_arch}-fontconfig" + "android-${_android_arch}-glib2" + "android-${_android_arch}-libpng" + "android-${_android_arch}-lzo" + "android-${_android_arch}-pixman" + "android-${_android_arch}-zlib") +provides=("android-${_android_arch}-cairo") +makedepends=('android-meson' + "android-${_android_arch}-librsvg" + "android-${_android_arch}-poppler") +options=(!strip !buildflags staticlibs !emptydirs) +source=("https://gitlab.freedesktop.org/cairo/cairo/-/archive/${pkgver}/cairo-${pkgver}.tar.gz" + "0001-Added-missing-headers-and-symbols.patch" + "0002-ipc-rmid-deferred-release.patch" + "0026-create-argb-fonts.all.patch") +sha256sums=('39a78afdc33a435c0f2ab53a5ec2a693c3c9b6d2ec9783ceecb2b94d54d942b0' + 'a73c90af559d4fb2e72bdd80ebc624b19579f3df0e9c0ad6e8af9aef41e7789a' + '50143b4a090169b1d086cffdf1f0364c82facc886466e3b2f7fea668520961e8' + '6db6c44fbdb4926d09afa978fe80430186c4b7b7d255059602b1f94c6a079975') + +prepare() { + cd "${srcdir}/cairo-${pkgver}" + patch -Np1 -i ../0001-Added-missing-headers-and-symbols.patch + patch -Np1 -i ../0002-ipc-rmid-deferred-release.patch + patch -Np1 -i ../0026-create-argb-fonts.all.patch +} + +build() { + cd "${srcdir}/cairo-${pkgver}" + source android-env ${_android_arch} + + mkdir -p build + cd build + android-${_android_arch}-meson \ + -D spectre=disabled \ + -D dwrite=disabled \ + -D freetype=enabled \ + -D fontconfig=enabled \ + -D tests=disabled \ + -D symbol-lookup=disabled \ + -D gtk_doc=false \ + -D xcb=disabled \ + -D xlib=disabled \ + -D xlib-xcb=disabled \ + --buildtype=release \ + --default-library=both + echo '#define HAVE_CTIME_R 1'$'\n' >> config.h + ninja +} + +package() { + DESTDIR="${pkgdir}" ninja -C "${srcdir}/cairo-${pkgver}/build" install + ${ANDROID_STRIP} -g "$pkgdir"/${ANDROID_PREFIX_LIB}/*.a || true + ${ANDROID_STRIP} -g --strip-unneeded "${pkgdir}"/${ANDROID_PREFIX_LIB}/*.so +} |