blob: 59278d1b1694c95adab7137b5897582604aab45e [file] [log] [blame]
Patrick Williams92b42cb2022-09-03 06:53:57 -05001SUMMARY = "Library for rendering SVG files"
2DESCRIPTION = "A small library to render Scalable Vector Graphics (SVG), \
3associated with the GNOME Project. It renders SVG files to Cairo surfaces. \
4Cairo is the 2D, antialiased drawing library that GNOME uses to draw things to \
5the screen or to generate output for printing."
6HOMEPAGE = "https://gitlab.gnome.org/GNOME/librsvg"
7BUGTRACKER = "https://gitlab.gnome.org/GNOME/librsvg/issues"
8
9LICENSE = "LGPL-2.1-or-later"
10LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
11 "
12
13SECTION = "x11/utils"
14DEPENDS = "cairo gdk-pixbuf glib-2.0 libxml2 pango python3-docutils-native"
15BBCLASSEXTEND = "native nativesdk"
16
17inherit cargo_common gnomebase pixbufcache upstream-version-is-even gobject-introspection rust vala gi-docgen
18
19SRC_URI += "file://0001-Makefile.am-pass-rust-target-to-cargo-also-when-not-.patch \
20 file://0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch \
21 "
22
23SRC_URI[archive.sha256sum] = "4f03190f45324d1fa1f52a79dfcded1f64eaf49b3ae2f88eedab0c07617cae6e"
24
25# librsvg is still autotools-based, but is calling cargo from its automake-driven makefiles
26# so we cannot use cargo class directly, but still need bits and pieces from it
27# for cargo to be happy
28BASEDEPENDS:append = " cargo-native"
29
30export RUST_BACKTRACE = "full"
31export RUSTFLAGS
32
33export RUST_TARGET = "${RUST_HOST_SYS}"
34
35RUSTFLAGS:append:mips = " --cfg crossbeam_no_atomic_64"
36RUSTFLAGS:append:mipsel = " --cfg crossbeam_no_atomic_64"
37RUSTFLAGS:append:powerpc = " --cfg crossbeam_no_atomic_64"
38RUSTFLAGS:append:riscv32 = " --cfg crossbeam_no_atomic_64"
39
40CARGO_DISABLE_BITBAKE_VENDORING = "1"
41do_configure[postfuncs] += "cargo_common_do_configure"
42
43inherit rust-target-config
44
Patrick Williams92b42cb2022-09-03 06:53:57 -050045# rust-cross writes the target linker binary into target json definition without any flags.
46# This breaks here because the linker isn't going to work without at least knowing where
47# the sysroot is. So copy the json to workdir, and patch in the path to wrapper from rust class
48# which supplies the needed flags.
49do_compile:prepend() {
50 sed -ie 's,"linker": ".*","linker": "${RUST_TARGET_CC}",g' ${RUST_TARGETS_DIR}/${RUST_HOST_SYS}.json
51}
52
53# Issue only on windows
54CVE_CHECK_IGNORE += "CVE-2018-1000041"
55
56CACHED_CONFIGUREVARS = "ac_cv_path_GDK_PIXBUF_QUERYLOADERS=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
57
58PACKAGECONFIG ??= "gdkpixbuf"
Andrew Geisslerc5535c92023-01-27 16:10:19 -060059PACKAGECONFIG:append:class-target = " ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'vala', '', d)}"
Patrick Williams92b42cb2022-09-03 06:53:57 -050060# The gdk-pixbuf loader
61PACKAGECONFIG[gdkpixbuf] = "--enable-pixbuf-loader,--disable-pixbuf-loader,gdk-pixbuf-native"
Andrew Geisslerc5535c92023-01-27 16:10:19 -060062PACKAGECONFIG[vala] = "--enable-vala,--disable-vala"
Patrick Williams92b42cb2022-09-03 06:53:57 -050063
64do_install:append() {
65 # Loadable modules don't need .a or .la on Linux
66 rm -f ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.a ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.la
67}
68
69PACKAGES =+ "librsvg-gtk rsvg"
70FILES:rsvg = "${bindir}/rsvg* \
71 ${datadir}/pixmaps/svg-viewer.svg \
72 ${datadir}/themes"
73FILES:librsvg-gtk = "${libdir}/gdk-pixbuf-2.0/*/*/*.so \
74 ${datadir}/thumbnailers/librsvg.thumbnailer"
75RRECOMMENDS:librsvg-gtk = "gdk-pixbuf-bin"
76
77PIXBUF_PACKAGES = "librsvg-gtk"