forked from AuroraMiddleware/gtk
meson: Simplify how cairo dependencies are checked
There is no reason to fallback to find_library for cairo and still rely on pkg-config for all other dependencies, and just when using MSVC. When building and pkg-config is not working it is preferable to fallback to a subproject just like for all other dependencies. Also add cairo.wrap now that meson support has been merged upstream.
This commit is contained in:
parent
1021e12121
commit
efbbfb6547
55
meson.build
55
meson.build
@ -352,8 +352,10 @@ if os_unix
|
||||
endif
|
||||
gmodule_dep = dependency('gmodule-2.0', version: glib_req,
|
||||
fallback : ['glib', 'libgmodule_dep'])
|
||||
cairo_dep = dependency('cairo', version: cairo_req, required : cc.get_id() != 'msvc')
|
||||
cairogobj_dep = dependency('cairo-gobject', version: cairo_req, required : cc.get_id() != 'msvc')
|
||||
cairo_dep = dependency('cairo', version: cairo_req,
|
||||
fallback : ['cairo', 'libcairo_dep'])
|
||||
cairogobj_dep = dependency('cairo-gobject', version: cairo_req,
|
||||
fallback : ['cairo', 'libcairogobject_dep'])
|
||||
pango_dep = dependency('pango', version: pango_req,
|
||||
fallback : ['pango', 'libpango_dep'])
|
||||
fribidi_dep = dependency('fribidi', version: fribidi_req,
|
||||
@ -380,7 +382,8 @@ pixbuf_dep = dependency('gdk-pixbuf-2.0', version: gdk_pixbuf_req,
|
||||
fallback : ['gdk-pixbuf', 'gdkpixbuf_dep'])
|
||||
epoxy_dep = dependency('epoxy', version: epoxy_req,
|
||||
fallback: ['libepoxy', 'libepoxy_dep'])
|
||||
harfbuzz_dep = dependency('harfbuzz', version: '>= 0.9', required: false)
|
||||
harfbuzz_dep = dependency('harfbuzz', version: '>= 0.9', required: false,
|
||||
fallback: ['harfbuzz', 'libharfbuzz_dep'])
|
||||
xkbdep = dependency('xkbcommon', version: xkbcommon_req, required: wayland_enabled)
|
||||
graphene_dep = dependency('graphene-gobject-1.0', version: graphene_req,
|
||||
fallback: ['graphene', 'graphene_dep'])
|
||||
@ -426,7 +429,7 @@ foreach backend: [ ['cairo-xlib', cairo_req, x11_enabled],
|
||||
cairo_backend_req = backend.get(1)
|
||||
cairo_backend = backend.get(0)
|
||||
if backend_enabled
|
||||
if dependency(cairo_backend, version: cairo_backend_req, required : cc.get_id() != 'msvc').found()
|
||||
if dependency(cairo_backend, version: cairo_backend_req).found()
|
||||
cairo_backends += [ cairo_backend ]
|
||||
endif
|
||||
endif
|
||||
@ -442,44 +445,9 @@ if cairogobj_dep.found()
|
||||
cairogobj_pkg_found = true
|
||||
endif
|
||||
|
||||
cairo_libs = []
|
||||
if cc.get_id() == 'msvc'
|
||||
# Fallback dependency discovery for those on Visual Studio that do not generate
|
||||
# pkg-config files in their build systems for MSVC
|
||||
# Fallback for Cairo
|
||||
if not cairo_dep.found()
|
||||
if (cc.has_header('cairo.h') and cc.has_header('cairo-win32.h'))
|
||||
cairo_dep = cc.find_library('cairo')
|
||||
if cairo_dep.found()
|
||||
cairo_libs += '-lcairo'
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# Fallback for Cairo-GObject
|
||||
if not cairogobj_dep.found()
|
||||
if cc.has_header('cairo-gobject.h')
|
||||
cairogobj_dep = cc.find_library('cairo-gobject')
|
||||
if cairogobj_dep.found()
|
||||
cairo_libs += '-lcairo-gobject'
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# Fallback for HarfBuzz
|
||||
if not harfbuzz_dep.found()
|
||||
if cc.has_header('hb.h')
|
||||
harfbuzz_dep = cc.find_library('harfbuzz', required : false)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
cairo_csi_dep = cc.find_library('cairo-script-interpreter',
|
||||
required: get_option('build-tests'))
|
||||
|
||||
if not harfbuzz_dep.found()
|
||||
harfbuzz_dep = dependency('harfbuzz', version: '>= 0.9', required: false,
|
||||
fallback: ['harfbuzz', 'libharfbuzz_dep'])
|
||||
cairo_csi_dep = dependency('cairo-script-interpreter', required: false)
|
||||
if not cairo_csi_dep.found()
|
||||
cairo_csi_dep = cc.find_library('cairo-script-interpreter', required: get_option('build-tests'))
|
||||
endif
|
||||
|
||||
cdata.set('HAVE_CAIRO_SCRIPT_INTERPRETER', cairo_csi_dep.found())
|
||||
@ -781,9 +749,6 @@ pkgconf.set('GSK_PACKAGES',
|
||||
pkgconf.set('GTK_PACKAGES',
|
||||
' '.join([ 'gio-2.0', glib_req ]))
|
||||
|
||||
# Requires.private
|
||||
pc_gdk_extra_libs += cairo_libs
|
||||
|
||||
gio_pkgname = os_unix ? 'gio-unix-2.0' : 'gio-2.0'
|
||||
pkgconf.set('GDK_PRIVATE_PACKAGES',
|
||||
' '.join([ gio_pkgname, glib_req,
|
||||
|
6
subprojects/cairo.wrap
Normal file
6
subprojects/cairo.wrap
Normal file
@ -0,0 +1,6 @@
|
||||
[wrap-git]
|
||||
directory=cairo
|
||||
url=https://gitlab.freedesktop.org/cairo/cairo.git
|
||||
push-url=ssh://git@gitlab.freedesktop.org:cairo/cairo.git
|
||||
revision=master
|
||||
depth=1
|
Loading…
Reference in New Issue
Block a user