package/cairo: move to the meson build system

- Moved BR2_PACKAGE_CAIRO_{SCRIPT,PS,PDF,XML} to Config.in.legacy
  since they are not selectable anymore in the meson-build options.
  BR2_PACKAGE_CAIRO_ZLIB serves for all of them now.

- Moved BR2_PACKAGE_CAIRO_SVG to Config.in.legacy since the PNG
  option already selects that one. This is now in sync with the
  meson build options.

- Note that the dependencies for the various options are slightly changed,
  but there is not much mentioned about that, the meson introduction is done
  in one big commit: [1].

- Added xlib_libXrender dependency, which was optional when using
  autotools (--enable-xlib-xrender), but became mandatory when using
  meson [2].

- Added two patches to fix cross compiling, upstream: [3]

[1]: 596a82f2d1
[2]: https://gitlab.freedesktop.org/cairo/cairo/-/blame/1.17.4/meson.build#L277
[3]: https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/534

Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
[Arnout: edit patch 0005 so it applies with fuzz 0]
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
This commit is contained in:
Thomas Devoogdt
2024-02-07 20:31:22 +01:00
committed by Arnout Vandecappelle
parent d429d5d399
commit 1fa58814c0
10 changed files with 202 additions and 158 deletions

View File

@@ -146,6 +146,41 @@ endif
comment "Legacy options removed in 2024.08"
config BR2_PACKAGE_CAIRO_SVG
bool "cairo svg support"
select BR2_LEGACY
select BR2_PACKAGE_CAIRO_PNG
help
Cairo SVG is compiled together with PNG.
config BR2_PACKAGE_CAIRO_SCRIPT
bool "cairo script support"
select BR2_LEGACY
select BR2_PACKAGE_CAIRO_ZLIB
help
Cairo script got merged into cairo zlib.
config BR2_PACKAGE_CAIRO_PS
bool "cairo postscript support"
select BR2_LEGACY
select BR2_PACKAGE_CAIRO_ZLIB
help
Cairo PS got merged into cairo zlib.
config BR2_PACKAGE_CAIRO_PDF
bool "cairo pdf support"
select BR2_LEGACY
select BR2_PACKAGE_CAIRO_ZLIB
help
Cairo PDF got merged into cairo zlib.
config BR2_PACKAGE_CAIRO_XML
bool "cairo xml support"
select BR2_LEGACY
select BR2_PACKAGE_CAIRO_ZLIB
help
Cairo XML got merged into cairo zlib.
config BR2_GDB_VERSION_12
bool "gdb 12.x has been removed"
select BR2_LEGACY

View File

@@ -0,0 +1,62 @@
From 39cbc3c1f1caf558188bd2203c976bae8de2f6a7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
Date: Thu, 25 Feb 2021 10:52:45 +0000
Subject: [PATCH] meson: allow skipping of run check for
IPC_RMID_DEFERRED_RELEASE
The run check is particularly annoying in cross-compile scenarios,
so allow bypassing the check by having the user provide the value
via a cross file or native file:
[properties]
ipc_rmid_deferred_release = true
Closes #408
Upstream: https://gitlab.freedesktop.org/cairo/cairo/-/commit/1bec56ea8a931e1ae1c74cc740134497ec365267
Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
---
meson.build | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/meson.build b/meson.build
index b159b4071..5f593e54d 100644
--- a/meson.build
+++ b/meson.build
@@ -264,13 +264,28 @@ if x11_dep.found() and xext_dep.found()
['X11/extensions/shmstr.h', {'extra-headers': extra_headers}],
]
deps += [x11_dep, xext_dep]
- res = cc.run(files('meson-cc-tests/ipc_rmid_deferred_release.c'),
- dependencies: [x11_dep, xext_dep],
- name: 'shmctl IPC_RMID allowes subsequent attaches')
- if res.returncode() == 0
- conf.set('IPC_RMID_DEFERRED_RELEASE', 1)
+ # Can skip the run check by providing the result in a cross file or
+ # native file as bool property value.
+ prop = meson.get_external_property('ipc_rmid_deferred_release', 'auto')
+ # 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 chec the string value.
+ prop_str = '@0@'.format(prop)
+ if prop_str in ['true', 'false']
+ ipc_rmid_deferred_release = (prop_str == 'true')
+ message('IPC_RMID_DEFERRED_RELEASE:', ipc_rmid_deferred_release)
+ elif prop_str == 'auto'
+ res = cc.run(files('meson-cc-tests/ipc_rmid_deferred_release.c'),
+ dependencies: [x11_dep, xext_dep],
+ name: 'shmctl IPC_RMID allowes subsequent attaches')
+
+ ipc_rmid_deferred_release = (res.returncode() == 0)
+ else
+ error('Unexpected value for external property ipc_rmid_deferred_release: @0@'.format(prop_str))
endif
+
+ conf.set10('IPC_RMID_DEFERRED_RELEASE', ipc_rmid_deferred_release)
endif
if feature_conf.get('CAIRO_HAS_XLIB_SURFACE', 0) == 1
--
2.34.1

View File

@@ -0,0 +1,41 @@
From 8d5037ed642b02cdb018e49866aa286f30a7b59a Mon Sep 17 00:00:00 2001
From: Thomas Devoogdt <thomas@devoogdt.com>
Date: Mon, 5 Feb 2024 17:47:07 +0100
Subject: [PATCH] meson: always skip IPC_RMID_DEFERRED_RELEASE check when
cross-compiling
../../br-test-pkg/bootlin-armv5-uclibc/build/cairo-1.17.4/meson.build:279:13:
ERROR: Can not run test applications in this cross environment.
Commit 1bec56ea8a931e1ae1c74cc740134497ec365267 added support to define
ipc_rmid_deferred_release in a cross-compile config, but still kept
the default to auto, which anyhow results in an error when cross-compiling.
There is only one usage of the ipc_rmid_deferred_release compile declarative
which was originally added in this commit: 5041b462d084de8552336275914d30c23bf5dd35.
If ipc_rmid_deferred_release is set to FALSE, an additional XSync is performed.
This doesn't sound very harmful, so that is why this commit defaults to FALSE
and thus avoids any cross-compile errors.
Upstream: https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/534
Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 9efe91978..6a670bf94 100644
--- a/meson.build
+++ b/meson.build
@@ -267,7 +267,7 @@ if x11_dep.found() and xext_dep.found()
# Can skip the run check by providing the result in a cross file or
# native file as bool property value.
- prop = meson.get_external_property('ipc_rmid_deferred_release', 'auto')
+ prop = meson.get_external_property('ipc_rmid_deferred_release', meson.is_cross_build() ? 'false' : 'auto')
# 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 chec the string value.
--
2.34.1

View File

@@ -4,6 +4,7 @@ config BR2_PACKAGE_CAIRO
select BR2_PACKAGE_FONTCONFIG
select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7
select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7
select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_XORG7
help
Cairo is a 2D graphics library with support for multiple
output devices. Currently supported output targets include
@@ -15,34 +16,15 @@ config BR2_PACKAGE_CAIRO
if BR2_PACKAGE_CAIRO
config BR2_PACKAGE_CAIRO_PS
bool "postscript support"
select BR2_PACKAGE_ZLIB
select BR2_PACKAGE_CAIRO_PDF
config BR2_PACKAGE_CAIRO_PDF
bool "pdf support"
select BR2_PACKAGE_ZLIB
config BR2_PACKAGE_CAIRO_PNG
bool "png support"
bool "png support (png and svg surfaces)"
select BR2_PACKAGE_LIBPNG
select BR2_PACKAGE_ZLIB
config BR2_PACKAGE_CAIRO_SCRIPT
bool "script support"
select BR2_PACKAGE_CAIRO_PNG
config BR2_PACKAGE_CAIRO_SVG
bool "svg support"
select BR2_PACKAGE_CAIRO_PNG
select BR2_PACKAGE_CAIRO_PDF
config BR2_PACKAGE_CAIRO_TEE
bool "tee support"
config BR2_PACKAGE_CAIRO_XML
bool "xml support"
select BR2_PACKAGE_CAIRO_PNG
config BR2_PACKAGE_CAIRO_ZLIB
bool "zlib support (script, ps, pdf, and xml surfaces)"
select BR2_PACKAGE_ZLIB
endif

View File

@@ -17,168 +17,96 @@ CAIRO_IGNORE_CVES += CVE-2019-6462
# 0002-Fix-mask-usage-in-image-compositor.patch
CAIRO_IGNORE_CVES += CVE-2020-35492
CAIRO_CONF_ENV = LIBS="$(CAIRO_LIBS)"
CAIRO_CFLAGS = $(TARGET_CFLAGS)
CAIRO_LDFLAGS = $(TARGET_LDFLAGS)
# relocation truncated to fit: R_68K_GOT16O
ifeq ($(BR2_m68k_cf),y)
CAIRO_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mxgot"
endif
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),)
CAIRO_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -DCAIRO_NO_MUTEX=1"
CAIRO_CFLAGS += -mxgot
endif
# cairo can use C++11 atomics when available, so we need to link with
# libatomic for the architectures who need libatomic.
ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
CAIRO_LIBS += -latomic
CAIRO_LDFLAGS += -latomic
endif
CAIRO_CONF_OPTS = \
--enable-trace=no \
--enable-interpreter=no
CAIRO_DEPENDENCIES = host-pkgconf fontconfig pixman
-Dfontconfig=enabled \
-Dtests=disabled \
-Dspectre=disabled \
-Dc_std=gnu11
CAIRO_DEPENDENCIES = \
host-pkgconf \
fontconfig \
pixman
# Just the bare minimum to make other host-* packages happy
HOST_CAIRO_CONF_OPTS = \
--enable-trace=no \
--enable-interpreter=no \
--disable-directfb \
--enable-ft \
--enable-gobject \
--disable-glesv2 \
--disable-vg \
--disable-xlib \
--disable-xcb \
--without-x \
--disable-xlib-xrender \
--disable-ps \
--disable-pdf \
--enable-png \
--enable-script \
--disable-svg \
--disable-tee \
--disable-xml
-Dfontconfig=enabled \
-Dfreetype=enabled \
-Dpng=enabled \
-Dtee=disabled \
-Dxcb=disabled \
-Dxlib=disabled \
-Dzlib=enabled \
-Dtests=disabled \
-Dglib=enabled \
-Dspectre=disabled \
-Dc_std=gnu11
HOST_CAIRO_DEPENDENCIES = \
host-freetype \
host-fontconfig \
host-libglib2 \
host-libpng \
host-pixman \
host-pkgconf
# DirectFB svg support rely on Cairo and Cairo DirectFB support depends on
# DirectFB. Break circular dependency by disabling DirectFB support in Cairo
# (which is experimental)
ifeq ($(BR2_PACKAGE_DIRECTFB)x$(BR2_PACKAGE_DIRECTFB_SVG),yx)
CAIRO_CONF_OPTS += --enable-directfb
CAIRO_DEPENDENCIES += directfb
else
CAIRO_CONF_OPTS += --disable-directfb
endif
ifeq ($(BR2_PACKAGE_FREETYPE),y)
CAIRO_CONF_OPTS += --enable-ft
CAIRO_DEPENDENCIES += freetype
else
CAIRO_CONF_OPTS += --disable-ft
endif
ifeq ($(BR2_PACKAGE_LIBEXECINFO),y)
CAIRO_DEPENDENCIES += libexecinfo
CAIRO_LIBS += -lexecinfo
endif
ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
CAIRO_CONF_OPTS += --enable-gobject
CAIRO_DEPENDENCIES += libglib2
else
CAIRO_CONF_OPTS += --disable-gobject
endif
# Can use GL or GLESv2 but not both
ifeq ($(BR2_PACKAGE_HAS_LIBGL),y)
CAIRO_CONF_OPTS += --enable-gl --disable-glesv2
CAIRO_DEPENDENCIES += libgl
else
ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y)
CAIRO_CONF_OPTS += --disable-gl --enable-glesv2
CAIRO_DEPENDENCIES += libgles
else
CAIRO_CONF_OPTS += --disable-gl --disable-glesv2
endif
endif
ifeq ($(BR2_PACKAGE_HAS_LIBOPENVG),y)
CAIRO_CONF_OPTS += --enable-vg
CAIRO_DEPENDENCIES += libopenvg
else
CAIRO_CONF_OPTS += --disable-vg
endif
host-pkgconf \
host-zlib
ifeq ($(BR2_PACKAGE_LZO),y)
CAIRO_DEPENDENCIES += lzo
endif
ifeq ($(BR2_PACKAGE_FREETYPE),y)
CAIRO_CONF_OPTS += -Dfreetype=enabled
CAIRO_DEPENDENCIES += freetype
else
CAIRO_CONF_OPTS += -Dfreetype=disabled
endif
ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
CAIRO_CONF_OPTS += -Dglib=enabled
CAIRO_DEPENDENCIES += libglib2
else
CAIRO_CONF_OPTS += -Dglib=disabled
endif
ifeq ($(BR2_PACKAGE_XORG7),y)
CAIRO_CONF_OPTS += --enable-xlib --enable-xcb --with-x
CAIRO_DEPENDENCIES += xlib_libX11 xlib_libXext
CAIRO_CONF_OPTS += -Dxcb=enabled -Dxlib=enabled
CAIRO_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXrender
else
CAIRO_CONF_OPTS += --disable-xlib --disable-xcb --without-x
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y)
CAIRO_CONF_OPTS += --enable-xlib-xrender
CAIRO_DEPENDENCIES += xlib_libXrender
else
CAIRO_CONF_OPTS += --disable-xlib-xrender
endif
ifeq ($(BR2_PACKAGE_CAIRO_PS),y)
CAIRO_CONF_OPTS += --enable-ps
CAIRO_DEPENDENCIES += zlib
else
CAIRO_CONF_OPTS += --disable-ps
endif
ifeq ($(BR2_PACKAGE_CAIRO_PDF),y)
CAIRO_CONF_OPTS += --enable-pdf
CAIRO_DEPENDENCIES += zlib
else
CAIRO_CONF_OPTS += --disable-pdf
CAIRO_CONF_OPTS += -Dxcb=disabled -Dxlib=disabled
endif
ifeq ($(BR2_PACKAGE_CAIRO_PNG),y)
CAIRO_CONF_OPTS += --enable-png
CAIRO_CONF_OPTS += -Dpng=enabled
CAIRO_DEPENDENCIES += libpng
else
CAIRO_CONF_OPTS += --disable-png
endif
ifeq ($(BR2_PACKAGE_CAIRO_SCRIPT),y)
CAIRO_CONF_OPTS += --enable-script
else
CAIRO_CONF_OPTS += --disable-script
endif
ifeq ($(BR2_PACKAGE_CAIRO_SVG),y)
CAIRO_CONF_OPTS += --enable-svg
else
CAIRO_CONF_OPTS += --disable-svg
CAIRO_CONF_OPTS += -Dpng=disabled
endif
ifeq ($(BR2_PACKAGE_CAIRO_TEE),y)
CAIRO_CONF_OPTS += --enable-tee
CAIRO_CONF_OPTS += -Dtee=enabled
else
CAIRO_CONF_OPTS += --disable-tee
CAIRO_CONF_OPTS += -Dtee=disabled
endif
ifeq ($(BR2_PACKAGE_CAIRO_XML),y)
CAIRO_CONF_OPTS += --enable-xml
ifeq ($(BR2_PACKAGE_CAIRO_ZLIB),y)
CAIRO_CONF_OPTS += -Dzlib=enabled
CAIRO_DEPENDENCIES += zlib
else
CAIRO_CONF_OPTS += --disable-xml
CAIRO_CONF_OPTS += -Dzlib=disabled
endif
$(eval $(autotools-package))
$(eval $(host-autotools-package))
$(eval $(meson-package))
$(eval $(host-meson-package))

View File

@@ -9,9 +9,8 @@ config BR2_PACKAGE_LIBGTK2
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz
select BR2_PACKAGE_AT_SPI2_CORE
select BR2_PACKAGE_CAIRO
select BR2_PACKAGE_CAIRO_PS
select BR2_PACKAGE_CAIRO_PDF
select BR2_PACKAGE_CAIRO_SVG
select BR2_PACKAGE_CAIRO_PNG
select BR2_PACKAGE_CAIRO_ZLIB
select BR2_PACKAGE_LIBGLIB2
select BR2_PACKAGE_PANGO
select BR2_PACKAGE_GDK_PIXBUF

View File

@@ -25,9 +25,8 @@ config BR2_PACKAGE_LIBGTK3
BR2_PACKAGE_HAS_LIBGL
select BR2_PACKAGE_AT_SPI2_CORE
select BR2_PACKAGE_CAIRO
select BR2_PACKAGE_CAIRO_PS
select BR2_PACKAGE_CAIRO_PDF
select BR2_PACKAGE_CAIRO_SVG
select BR2_PACKAGE_CAIRO_PNG
select BR2_PACKAGE_CAIRO_ZLIB
select BR2_PACKAGE_LIBEPOXY
select BR2_PACKAGE_LIBGLIB2
select BR2_PACKAGE_PANGO

View File

@@ -9,7 +9,7 @@ config BR2_PACKAGE_LIBRSVG
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz
select BR2_PACKAGE_CAIRO
select BR2_PACKAGE_CAIRO_PNG
select BR2_PACKAGE_CAIRO_SCRIPT
select BR2_PACKAGE_CAIRO_ZLIB
select BR2_PACKAGE_GDK_PIXBUF
select BR2_PACKAGE_HOST_RUSTC
select BR2_PACKAGE_LIBGLIB2

View File

@@ -1,7 +1,7 @@
config BR2_PACKAGE_LIBSVG_CAIRO
bool "libsvg-cairo"
select BR2_PACKAGE_CAIRO
select BR2_PACKAGE_CAIRO_SVG
select BR2_PACKAGE_CAIRO_PNG
select BR2_PACKAGE_LIBSVG
help
Libsvg-cairo provides the ability to render SVG content from

View File

@@ -19,10 +19,8 @@ config BR2_PACKAGE_RRDTOOL_RRDGRAPH
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # pango -> harfbuzz
depends on BR2_INSTALL_LIBSTDCPP # freetype support from pango
select BR2_PACKAGE_CAIRO
select BR2_PACKAGE_CAIRO_PDF
select BR2_PACKAGE_CAIRO_PNG
select BR2_PACKAGE_CAIRO_PS
select BR2_PACKAGE_CAIRO_SVG
select BR2_PACKAGE_CAIRO_ZLIB
select BR2_PACKAGE_PANGO
help
This enables the graphing capabilities ('rrdgraph').