summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2023-02-09 20:08:54 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2023-03-06 16:27:50 +0800
commitf0d0a8f5ed4e27d9fff74cb1397acbd8143c166f (patch)
tree2b37d3c5bb545bb682e663f76e8eeb1f327a9171
parentb668e6d8a1128d8adbc481a574cfb4795b4f4064 (diff)
downloadgtk+-pkg-config-3-24.tar.gz
build: Generate pkg-config filespkg-config-3-24
...instead of using templates for the sake of autotools build support. This will hopefully attempt to clean things up a bit while attempting to retain compatibility. This ensures that the items in here are correct in terms of the libraries and packages that are being used.
-rw-r--r--gail-3.0.pc.in11
-rw-r--r--gdk-3.0.pc.in13
-rw-r--r--gdk/broadway/meson.build13
-rw-r--r--gdk/meson.build59
-rw-r--r--gdk/quartz/meson.build2
-rw-r--r--gdk/wayland/meson.build9
-rw-r--r--gdk/win32/meson.build34
-rw-r--r--gdk/x11/meson.build1
-rw-r--r--gtk+-3.0.pc.in16
-rw-r--r--gtk+-unix-print-3.0.pc.in14
-rw-r--r--gtk/meson.build90
-rw-r--r--libgail-util/meson.build9
-rw-r--r--meson.build215
13 files changed, 214 insertions, 272 deletions
diff --git a/gail-3.0.pc.in b/gail-3.0.pc.in
deleted file mode 100644
index 9777545c02..0000000000
--- a/gail-3.0.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Gail
-Description: GNOME Accessibility Implementation Library
-Version: @VERSION@
-Requires: atk gtk+-3.0
-Libs: -L${libdir} -lgailutil-3
-Cflags: -I${includedir}/gail-3.0
diff --git a/gdk-3.0.pc.in b/gdk-3.0.pc.in
deleted file mode 100644
index 97b0537291..0000000000
--- a/gdk-3.0.pc.in
+++ /dev/null
@@ -1,13 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-targets=@GDK_BACKENDS@
-
-Name: GDK
-Description: GTK+ Drawing Kit
-Version: @VERSION@
-Requires: @GDK_PACKAGES@
-Requires.private: @GDK_PRIVATE_PACKAGES@
-Libs: -L${libdir} -lgdk-3 @GDK_EXTRA_LIBS@
-Cflags: -I${includedir}/gtk-@GTK_API_VERSION@ @GDK_EXTRA_CFLAGS@
diff --git a/gdk/broadway/meson.build b/gdk/broadway/meson.build
index 6702280863..8a70652a82 100644
--- a/gdk/broadway/meson.build
+++ b/gdk/broadway/meson.build
@@ -28,7 +28,18 @@ gdk_broadway_public_headers = files(
install_headers(gdk_broadway_public_headers, subdir: 'gtk-3.0/gdk/broadway/')
install_headers('gdkbroadway.h', subdir: 'gtk-3.0/gdk/')
-gdk_broadway_deps = [shmlib]
+zlib_dep = dependency('zlib')
+gdk_broadway_pkg_deps = []
+gdk_broadway_lib_deps = [shmlib]
+if zlib_dep.type_name() == 'pkgconfig'
+ gdk_broadway_pkg_deps += zlib_dep
+else
+ gdk_broadway_lib_deps += zlib_dep
+endif
+gdk_backend_extra_pkgs += gdk_broadway_pkg_deps
+gdk_backend_extra_libs += gdk_broadway_lib_deps
+
+gdk_broadway_deps = gdk_broadway_lib_deps + gdk_broadway_pkg_deps
gen_c_array = find_program('gen-c-array.py')
diff --git a/gdk/meson.build b/gdk/meson.build
index 4bb1bf2b6c..76d24b8389 100644
--- a/gdk/meson.build
+++ b/gdk/meson.build
@@ -197,28 +197,18 @@ wlinc = include_directories('.')
gdk_gen_headers = [gdkenum_h, gdkmarshal_h, gdkconfig, gdkversionmacros]
-gdk_deps = [
- libm,
- pixbuf_dep,
- cairo_dep,
- pango_dep,
- fribidi_dep,
- cairogobj_dep,
- glib_dep,
- epoxy_dep,
- fontconfig_dep,
- platform_gio_dep,
- pangocairo_dep
-]
+pango_pkg_dep = win32_enabled ? pangowin32_dep : pango_dep
-if win32_enabled
- gdk_deps += [cc.find_library('advapi32'),
- cc.find_library('comctl32'),
- cc.find_library('dwmapi'),
- cc.find_library('imm32'),
- cc.find_library('setupapi'),
- cc.find_library('winmm')]
+gdk_pkg_deps = [pango_pkg_dep, pangocairo_dep, pixbuf_dep] + cairo_pkg_deps
+gdk_pkg_private_deps = [platform_gio_dep, fontconfig_dep, epoxy_dep, fribidi_dep]
+gdk_lib_deps = [libm, cairo_lib_deps]
+if profiler_enabled
+ if profiler_dep.found()
+ gdk_pkg_private_deps += profiler_dep
+ endif
+endif
+if win32_enabled
gdk_rc = configure_file(
input: 'win32/rc/gdk.rc.in',
output: 'gdk.rc',
@@ -228,11 +218,7 @@ if win32_enabled
gdk_sources += gdk_res
endif
-if profiler_enabled
- if profiler_dep.found()
- gdk_deps += [profiler_dep]
- endif
-endif
+gdk_deps = gdk_lib_deps + gdk_pkg_deps + gdk_pkg_private_deps
gdk_sources = [
# Generated
@@ -257,6 +243,9 @@ if wayland_enabled or broadway_enabled
endif
gdk_backends = []
+gdk_backend_extra_libs = []
+gdk_backend_extra_pkgs = []
+
gdk_backends_gen_headers = [] # non-public generated headers
foreach backend : ['broadway', 'quartz', 'wayland', 'win32', 'x11']
if get_variable('@0@_enabled'.format(backend))
@@ -302,6 +291,26 @@ libgdk = library('gdk-3',
install: true)
gdk_dep_sources = [gdkconfig, gdkenum_h]
+
+if cloudproviders_dep.found()
+ gdk_backend_extra_pkgs += cloudproviders_dep
+endif
+
+# pkg-config
+foreach gdk_pc: gdk_pcs
+ pkg.generate(libgdk,
+ name: 'GDK',
+ description: 'Gtk+ Drawing Kit',
+ filebase: gdk_pc,
+ libraries: ['-L${libdir}', '-lgdk-@0@'.format(gtk_major_version)] + \
+ gdk_lib_deps + gdk_backend_extra_libs,
+ requires: gdk_pkg_deps,
+ requires_private: gdk_pkg_private_deps + gdk_backend_extra_pkgs,
+ subdirs: ['gtk-@0@'.format(gtk_api_version)],
+ unescaped_variables: gdk_pc_variables,
+ )
+endforeach
+
# Introspection
if build_gir
gir_args = ['--quiet']
diff --git a/gdk/quartz/meson.build b/gdk/quartz/meson.build
index f4fcd8fba0..8a7e0dafca 100644
--- a/gdk/quartz/meson.build
+++ b/gdk/quartz/meson.build
@@ -54,6 +54,8 @@ iosurface_dep = dependency('appleframeworks', modules: 'IOSurface', required: tr
gdk_quartz_deps = [ core_graphics_dep, appkit_dep, cocoa_dep, carbon_dep, quartzcore_dep, iosurface_dep ]
+gdk_backend_extra_libs += gdk_quartz_deps
+
libgdk_quartz = static_library('gdk-quartz',
gdk_quartz_sources, gdkconfig, gdkenum_h,
include_directories: [confinc, gdkinc],
diff --git a/gdk/wayland/meson.build b/gdk/wayland/meson.build
index ad5dfe5591..c1bf4e125b 100644
--- a/gdk/wayland/meson.build
+++ b/gdk/wayland/meson.build
@@ -26,8 +26,8 @@ gdk_wayland_public_headers = files(
install_headers(gdk_wayland_public_headers, subdir: 'gtk-3.0/gdk/wayland')
install_headers('gdkwayland.h', subdir: 'gtk-3.0/gdk')
-gdk_wayland_deps = [
- shmlib,
+gdk_wayland_lib_deps = [shmlib]
+gdk_wayland_pkg_deps = [
xkbdep,
wlclientdep,
wlprotocolsdep,
@@ -35,6 +35,11 @@ gdk_wayland_deps = [
wlegldep,
]
+gdk_wayland_deps = gdk_wayland_lib_deps + gdk_wayland_pkg_deps
+
+gdk_backend_extra_pkgs += gdk_wayland_pkg_deps
+gdk_backend_extra_libs += gdk_wayland_lib_deps
+
# wayland protocols
wlprotocolsdep = dependency('wayland-protocols')
proto_dir = wlprotocolsdep.get_variable(pkgconfig: 'pkgdatadir')
diff --git a/gdk/win32/meson.build b/gdk/win32/meson.build
index ce35090aec..05622b70a6 100644
--- a/gdk/win32/meson.build
+++ b/gdk/win32/meson.build
@@ -48,12 +48,40 @@ endif
install_headers(gdk_win32_public_headers, subdir: 'gtk-3.0/gdk/win32')
install_headers('gdkwin32.h', subdir: 'gtk-3.0/gdk')
+gdk_pkg_deps = [pangowin32_dep] + gdk_pkg_deps
-gdk_win32_deps = [ # FIXME
- pangowin32_dep,
- meson.get_compiler('c').find_library('hid')
+gdk_backend_extra_pkgs += dependency(
+ 'cairo-win32',
+ version: cairo_req,
+ required: false
+)
+
+gdk_win32_lib_deps = [
+ cc.find_library('advapi32'),
+ cc.find_library('dwmapi'),
+ cc.find_library('gdi32'),
+ cc.find_library('hid'),
+ cc.find_library('imm32'),
+ cc.find_library('ole32'),
+ cc.find_library('setupapi'),
+ cc.find_library('shell32'),
+ cc.find_library('user32'),
+ cc.find_library('winmm'),
]
+gdk_backend_extra_libs = gdk_win32_lib_deps
+# For Go users, should check whether we should ask people to
+# whitelist -Wl,-l.... items, since we are dynamically linking
+# items
+if cc.get_argument_syntax() != 'msvc'
+ if get_option('default_library') == 'shared'
+ gdk_backend_extra_libs += [ '-Wl,-luuid' ]
+ else
+ gdk_backend_extra_libs += cc.find_library('uuid')
+ endif
+endif
+gdk_win32_deps = [gdk_pkg_deps, gdk_win32_lib_deps]
+
libgdk_win32 = static_library('gdk-win32',
gdk_win32_sources, gdkconfig, gdkenum_h,
include_directories: [confinc, gdkinc],
diff --git a/gdk/x11/meson.build b/gdk/x11/meson.build
index 754ae0a615..88919d14e1 100644
--- a/gdk/x11/meson.build
+++ b/gdk/x11/meson.build
@@ -68,6 +68,7 @@ gdk_x11_deps = [
xrandr_dep,
xinerama_dep,
]
+gdk_backend_extra_pkgs = gdk_x11_deps
libgdk_x11 = static_library('gdk-x11', gdkmarshal_h,
gdk_x11_sources, gdkconfig, gdkenum_h,
diff --git a/gtk+-3.0.pc.in b/gtk+-3.0.pc.in
deleted file mode 100644
index cf5d3be677..0000000000
--- a/gtk+-3.0.pc.in
+++ /dev/null
@@ -1,16 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-targets=@GDK_BACKENDS@
-
-gtk_binary_version=@GTK_BINARY_VERSION@
-gtk_host=@host@
-
-Name: GTK+
-Description: GTK+ Graphical UI Library
-Version: @VERSION@
-Requires: gdk-@GTK_API_VERSION@ @GTK_PACKAGES@
-Requires.private: @GTK_PRIVATE_PACKAGES@
-Libs: -L${libdir} -lgtk-3 @GTK_EXTRA_LIBS@
-Cflags: -I${includedir}/gtk-@GTK_API_VERSION@ @GTK_EXTRA_CFLAGS@
diff --git a/gtk+-unix-print-3.0.pc.in b/gtk+-unix-print-3.0.pc.in
deleted file mode 100644
index 8c0f32326c..0000000000
--- a/gtk+-unix-print-3.0.pc.in
+++ /dev/null
@@ -1,14 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-targets=@GDK_BACKENDS@
-
-gtk_binary_version=@GTK_BINARY_VERSION@
-gtk_host=@host@
-
-Name: GTK+
-Description: GTK+ Unix print support
-Version: @VERSION@
-Requires: gtk+-@GTK_API_VERSION@ @GTK_PACKAGES@
-Cflags: -I${includedir}/gtk-@GTK_API_VERSION@/unix-print
diff --git a/gtk/meson.build b/gtk/meson.build
index 4b7a453e11..33ba05d929 100644
--- a/gtk/meson.build
+++ b/gtk/meson.build
@@ -831,41 +831,62 @@ gtk_sources += [
gtktypebuiltins,
]
-gtk_deps = [
+harfbuzz_pkg = []
+harfbuzz_lib = []
+
+if harfbuzz_dep.found()
+ if harfbuzz_dep.type_name() == 'pkgconfig' or harfbuzz_dep.type_name() == 'internal'
+ harfbuzz_pkg = harfbuzz_dep
+ else
+ harfbuzz_lib = harfbuzz_dep
+ endif
+endif
+
+gtk_pkg_deps = [
+ atk_dep,
gmodule_dep,
glib_dep,
gobject_dep,
- platform_gio_dep,
pangocairo_dep,
pango_dep,
- pangoft_dep,
- harfbuzz_dep,
- fribidi_dep,
- cairogobj_dep,
- cairo_dep,
+ harfbuzz_pkg,
+] + cairo_pkg_deps + [
fontconfig_dep,
pixbuf_dep,
- atk_dep,
- epoxy_dep,
- libm,
]
+gtk_private_pkg_deps = [atk_dep, epoxy_dep, fribidi_dep]
+gtk_extra_private_pkg_deps = []
+
+gtk_lib_deps = [harfbuzz_lib] + cairo_lib_deps + [libm]
+
if x11_enabled
x11_data_prefix = dependency('x11').get_variable(pkgconfig: 'prefix')
gtk_cargs += [ '-DX11_DATA_PREFIX="@0@"'.format(x11_data_prefix), ]
gtk_sources += gtk_use_x11_sources
- gtk_deps += [ xi_dep, x11_dep, ]
+ gtk_extra_private_pkg_deps += [ xi_dep, x11_dep, ]
endif
if wayland_enabled
gtk_sources += gtk_use_wayland_sources
+ gtk_extra_private_pkg_deps += [
+ wlclientdep,
+ xkbdep,
+ wlcursordep,
+ wlegldep,
+]
endif
if win32_enabled
gtk_cargs += []
gtk_sources += gtk_use_win32_sources
- gtk_deps += [ giowin32_dep, pangowin32_dep ]
+ gtk_pkg_deps += [ giowin32_dep, pangowin32_dep ]
+ gtk_lib_deps += [
+ cc.find_library('comctl32'),
+ cc.find_library('comdlg32'),
+ cc.find_library('winspool'),
+ ]
gtk_rc_body = configure_file(
input: 'gtk-win32.rc.body.in',
@@ -902,8 +923,9 @@ if win32_enabled
gtk_res = import('windows').compile_resources(gtk_rc)
gtk_sources += gtk_res
else
- gtk_deps += [ atkbridge_dep, ]
+ gtk_private_pkg_deps += [ atkbridge_dep, ]
endif
+gtk_private_pkg_deps += platform_gio_dep
if quartz_enabled
gtk_sources += gtk_use_quartz_sources
@@ -913,7 +935,7 @@ endif
# So we don't add these twice
if x11_enabled or wayland_enabled
gtk_sources += gtk_use_wayland_or_x11_sources
- gtk_deps += pangoft_dep
+ gtk_extra_private_pkg_deps += pangoft_dep
endif
if not (x11_enabled or win32_enabled or quartz_enabled)
@@ -921,16 +943,22 @@ if not (x11_enabled or win32_enabled or quartz_enabled)
endif
if cloudproviders_enabled
- gtk_deps += cloudproviders_dep
+ gtk_pkg_deps += cloudproviders_dep
endif
if os_unix and tracker3_enabled
- gtk_deps += tracker3_dep
+ gtk_pkg_deps += tracker3_dep
endif
# Unconditional. If libintl isn't found,
# the object just does nothing being in the deplist
-gtk_deps += libintl_dep
+gtk_lib_deps += libintl_dep
+
+gtk_deps = \
+ gtk_pkg_deps + \
+ gtk_private_pkg_deps + \
+ gtk_lib_deps + \
+ gtk_extra_private_pkg_deps
gtk_settings_schemas = [
'org.gtk.Settings.FileChooser.gschema.xml',
@@ -988,6 +1016,34 @@ libgtk = library('gtk-3',
darwin_versions : gtk_osxversions,
install: true)
+# pkg-config
+foreach gtk_pc: gtk_pcs
+ pkg.generate(libgtk,
+ name: 'GTK+',
+ description: 'GTK+ Graphical UI Library',
+ filebase: gtk_pc,
+ libraries: ['-L${libdir}', '-lgtk-@0@'.format(gtk_major_version)] + \
+ gtk_lib_deps,
+ requires: [libgdk] + gtk_pkg_deps,
+ requires_private: gtk_private_pkg_deps,
+ subdirs: ['gtk-@0@'.format(gtk_api_version)],
+ unescaped_variables: gdk_pc_variables,
+ variables: gtk_pc_variables,
+ )
+endforeach
+
+if os_unix
+ pkg.generate(libgtk,
+ name: 'GTK+',
+ description: 'GTK+ Unix print support',
+ filebase: 'gtk+-unix-print-@0@'.format(gtk_api_version),
+ requires: ['gtk+-@0@'.format(gtk_api_version)] + gtk_pkg_deps,
+ subdirs: ['gtk-@0@/unix-print/gtk'.format(gtk_api_version)],
+ unescaped_variables: gdk_pc_variables,
+ variables: gtk_pc_variables,
+ )
+endif
+
# Introspection
if build_gir
gir_args = ['--quiet']
diff --git a/libgail-util/meson.build b/libgail-util/meson.build
index 940ea40ca9..c04f4b40f5 100644
--- a/libgail-util/meson.build
+++ b/libgail-util/meson.build
@@ -30,3 +30,12 @@ libgailutil = library('gailutil-3',
] + common_cflags,
link_args: gailutil_link_args,
install: true)
+
+pkg.generate(libgailutil,
+ name: 'Gail',
+ filebase: 'gail-3.0',
+ description: 'GNOME Accessibility Implementation Library',
+ libraries: ['-L${libdir}', '-lgailutil-@0@'.format(gtk_major_version)],
+ requires: [atk_dep, libgtk],
+ subdirs: ['gail-@0@'.format(gtk_api_version)],
+)
diff --git a/meson.build b/meson.build
index 0f73529358..a4bf66f6c3 100644
--- a/meson.build
+++ b/meson.build
@@ -39,6 +39,7 @@ cloudproviders_req = '>= 0.2.5'
xkbcommon_req = '>= 0.2.0'
gnome = import('gnome')
+pkg = import('pkgconfig')
add_project_arguments('-DG_LOG_USE_STRUCTURED=1', language: 'c')
add_project_arguments('-DGLIB_MIN_REQUIRED_VERSION=' + glib_min_required, language: 'c')
@@ -423,7 +424,8 @@ endif
if win32_enabled
# for GTK_IM_CONTEXT_IME
- pangowin32_dep = dependency('pangowin32', fallback : ['pango', 'libpangowin32_dep'])
+ pangowin32_dep = dependency('pangowin32', version: pango_req,
+ fallback : ['pango', 'libpangowin32_dep'])
endif
pangocairo_dep = dependency('pangocairo', version: cairo_req,
@@ -484,8 +486,6 @@ endif
backend_immodules = []
-pc_gdk_extra_libs = []
-
cairo_found_type = cairo_dep.type_name()
if cairo_found_type == 'internal'
cairo_features = subproject('cairo').get_variable('built_features')
@@ -516,24 +516,9 @@ foreach backend: [ ['cairo-xlib', cairo_req, x11_enabled],
endif
endforeach
-cairo_pkg_found = false
-cairogobj_pkg_found = false
-
-if cairo_found_type == 'internal' or cairo_found_type == 'pkgconfig'
- cairo_pkg_found = true
-endif
-if cairogobj_found_type == 'internal' or cairogobj_found_type == 'pkgconfig'
- cairogobj_pkg_found = true
-endif
-
-cairo_libs = []
-
cdata.set('HAVE_HARFBUZZ', harfbuzz_dep.found() ? 1 : false)
cdata.set('HAVE_PANGOFT', pangoft_dep.found() ? 1 : false)
-atk_pkgs = ['atk']
-
-wayland_pkgs = []
if wayland_enabled
wlclientdep = dependency('wayland-client', version: wayland_req)
wlprotocolsdep = dependency('wayland-protocols', version: wayland_proto_req)
@@ -542,16 +527,8 @@ if wayland_enabled
backend_immodules += ['wayland']
cdata.set('HAVE_XDG_ACTIVATION', wlprotocolsdep.version().version_compare('>=1.21'))
-
- wayland_pkgs = [
- 'wayland-client', wayland_req,
- 'xkbcommon', xkbcommon_req,
- 'wayland-cursor', wayland_req,
- 'wayland-egl',
- ]
endif
-x11_pkgs = []
if x11_enabled
xrandr_dep = dependency('xrandr', version: '>= 1.2.99')
xrandr15_dep = dependency('xrandr', version: '>= 1.5', required: false)
@@ -568,23 +545,6 @@ if x11_enabled
backend_immodules += ['xim']
- x11_pkgs = ['fontconfig', 'x11', 'xext', 'xi', 'xrandr']
-
- if xcursor_dep.found()
- x11_pkgs += ['xcursor']
- endif
- if xfixes_dep.found()
- x11_pkgs += ['xfixes']
- endif
- if xcomposite_dep.found()
- x11_pkgs += ['xcomposite']
- endif
- if xdamage_dep.found()
- x11_pkgs += ['xdamage']
- endif
-
- atk_pkgs += ['atk-bridge-2.0']
-
cdata.set('HAVE_XDAMAGE', xdamage_dep.found() ? 1 : false)
cdata.set('HAVE_XCURSOR', xcursor_dep.found() ? 1 : false)
cdata.set('HAVE_XCOMPOSITE', xcomposite_dep.found() ? 1 : false)
@@ -634,7 +594,6 @@ if x11_enabled
if xinerama_dep.found() and cc.has_header_symbol('X11/extensions/Xinerama.h', 'XineramaQueryExtension', dependencies: xinerama_dep)
cdata.set('HAVE_XFREE_XINERAMA', 1)
cdata.set('HAVE_XINERAMA', 1)
- x11_pkgs += ['xinerama']
endif
else
xinerama_dep = []
@@ -645,28 +604,22 @@ if x11_enabled
endif
if broadway_enabled
- pc_gdk_extra_libs += ['-lz']
backend_immodules += ['broadway']
endif
if quartz_enabled
- pc_gdk_extra_libs += ['-Wl,-framework,Cocoa', '-Wl,-framework,Carbon', '-Wl,-framework,CoreGraphics']
backend_immodules += ['quartz']
cdata.set('QUARTZ_RELOCATION', 1)
endif
extra_demo_ldflags = []
if win32_enabled
- pc_gdk_extra_libs += ['-lgdi32', '-limm32', '-lshell32', '-lole32']
if cc.get_id() == 'msvc'
# Since the demo programs are now built as pure GUI programs, we
# need to pass in /entry:mainCRTStartup so that they will properly
# link on Visual Studio builds
extra_demo_ldflags = ['/entry:mainCRTStartup']
- else
- pc_gdk_extra_libs += ['-Wl,-luuid']
endif
- pc_gdk_extra_libs += ['-lwinmm', '-ldwmapi', '-lsetupapi', '-lcfgmgr32', '-lhid', '-lwinspool', '-lcomctl32', '-lcomdlg32']
backend_immodules += ['ime']
# Check whether libepoxy is built with EGL support on Windows
@@ -819,11 +772,14 @@ if os_unix
endif
cloudproviders_enabled = get_option('cloudproviders')
-cloudproviders_packages = []
+cloudproviders_dep = dependency(
+ 'cloudproviders',
+ version: cloudproviders_req,
+ required: cloudproviders_enabled,
+)
+
if cloudproviders_enabled
- cloudproviders_dep = dependency('cloudproviders', version: cloudproviders_req, required: true)
if cloudproviders_dep.found()
- cloudproviders_packages += ['cloudproviders', cloudproviders_req]
cdata.set('HAVE_CLOUDPROVIDERS', cloudproviders_dep.found() ? 1 : false)
else
error('Cloudproviders support not found, but was explicitly requested.')
@@ -849,6 +805,41 @@ endif
gir = find_program('g-ir-scanner', required : get_option('introspection'))
build_gir = gir.found() and get_option('introspection')
+gtk_pcs = ['gtk+-@0@'.format(gtk_api_version)]
+gdk_pcs = ['gdk-@0@'.format(gtk_api_version)]
+
+pkg_targets = []
+disabled_backends = []
+foreach backend: [ 'broadway', 'quartz', 'wayland', 'win32', 'x11']
+ if get_variable('@0@_enabled'.format(backend))
+ gtk_pcs += ['gtk+-@0@-@1@'.format(backend, gtk_api_version)]
+ gdk_pcs += ['gdk-@0@-@1@'.format(backend, gtk_api_version)]
+ pkg_targets += [backend]
+ else
+ disabled_backends += [backend]
+ endif
+endforeach
+
+gdk_pc_variables = [
+ 'targets=@0@'.format(' '.join(pkg_targets))
+]
+
+gtk_pc_variables = [
+ 'gtk_binary_version=@0@'.format(gtk_binary_version),
+ 'gtk_host=@0@-@1@'.format(host_machine.cpu_family(), host_machine.system()), # FIXME
+]
+
+# Sadly, Cairo only gained Meson build support quite a bit after 3.24.x was released
+cairo_lib_deps = []
+cairo_pkg_deps = []
+foreach dep: [cairogobj_dep, cairo_dep]
+ if dep.type_name() == 'library'
+ cairo_lib_deps += dep
+ else
+ cairo_pkg_deps += dep
+ endif
+endforeach
+
subdir('gdk')
subdir('gtk')
subdir('modules')
@@ -870,122 +861,6 @@ configure_file(
configuration: cdata,
)
-# pkg-config files - bit of a mess all of this
-pkgconf = configuration_data()
-
-pkgconf.set('prefix', get_option('prefix'))
-pkgconf.set('exec_prefix', '${prefix}')
-pkgconf.set('libdir', '${prefix}' / get_option('libdir'))
-pkgconf.set('includedir', '${prefix}' / get_option('includedir'))
-pkgconf.set('GTK_API_VERSION', gtk_api_version)
-pkgconf.set('VERSION', meson.project_version())
-pkgconf.set('GTK_BINARY_VERSION', gtk_binary_version)
-pkgconf.set('host', '@0@-@1@'.format(host_machine.cpu_family(), host_machine.system())) # FIXME
-
-# Requires
-pango_pkgname = win32_enabled ? 'pangowin32' : 'pango'
-gdk_packages = ' '.join([ pango_pkgname, pango_req,
- 'pangocairo', pango_req,
- 'gdk-pixbuf-2.0', gdk_pixbuf_req ])
-
-cairo_packages = ''
-
-if cairo_pkg_found
- cairo_packages += ' '.join([ ' cairo', cairo_req ])
-elif cc.get_id() == 'msvc' and cairo_dep.found()
- cairo_libs += '-lcairo'
-endif
-if cairogobj_pkg_found
- cairo_packages += ' '.join([ ' cairo-gobject', cairo_req ])
-elif cc.get_id() == 'msvc' and cairogobj_dep.found()
- cairo_libs += '-lcairo-gobject'
-endif
-
-gdk_packages += cairo_packages
-pkgconf.set('GDK_PACKAGES', gdk_packages)
-
-if have_gio_unix
- gio_packages = ['gio-unix-2.0', glib_req]
-else
- gio_packages = ['gio-2.0', glib_req]
-endif
-
-pkgconf.set('GDK_PRIVATE_PACKAGES',
- ' '.join(gio_packages + x11_pkgs + wayland_pkgs + cairo_backends +
- ['epoxy', epoxy_req] + cloudproviders_packages +
- ['fribidi', fribidi_req]))
-
-gtk_packages = ' '.join([
- atk_dep.name(), atk_req,
- cairo_packages,
- pixbuf_dep.name(), gdk_pixbuf_req,
- 'gio-2.0', glib_req,
-])
-pkgconf.set('GTK_PACKAGES', gtk_packages)
-
-# Requires.private
-pc_gdk_extra_libs += cairo_libs
-
-gtk_private_packages = atk_pkgs + wayland_pkgs + ['epoxy', epoxy_req, 'fribidi', fribidi_req]
-if wayland_enabled or x11_enabled
- gtk_private_packages += ['pangoft2']
-endif
-gtk_private_packages += gio_packages
-
-pkgconf.set('GTK_PRIVATE_PACKAGES', ' '.join(gtk_private_packages))
-
-pkgconf.set('GDK_EXTRA_LIBS', ' '.join(pc_gdk_extra_libs))
-pkgconf.set('GSK_EXTRA_LIBS', '')
-pkgconf.set('GTK_EXTRA_LIBS', '')
-
-pkgconf.set('GDK_EXTRA_CFLAGS', '')
-pkgconf.set('GSK_EXTRA_CFLAGS', '')
-pkgconf.set('GTK_EXTRA_CFLAGS', '')
-
-pkg_install_dir = join_paths(get_option('libdir'), 'pkgconfig')
-
-gtk_pcs = ['gtk+-3.0.pc']
-gdk_pcs = ['gdk-3.0.pc']
-
-pkg_targets = ''
-disabled_backends = []
-foreach backend: [ 'broadway', 'quartz', 'wayland', 'win32', 'x11']
- if get_variable('@0@_enabled'.format(backend))
- gtk_pcs += ['gtk+-@0@-3.0.pc'.format(backend)]
- gdk_pcs += ['gdk-@0@-3.0.pc'.format(backend)]
- pkg_targets += ' ' + backend
- else
- disabled_backends += [backend]
- endif
-endforeach
-pkgconf.set('GDK_BACKENDS', pkg_targets.strip())
-
-configure_file(input: 'gail-3.0.pc.in',
- output: 'gail-3.0.pc',
- configuration: pkgconf,
- install_dir: pkg_install_dir)
-
-foreach pkg: gdk_pcs
- configure_file(input: 'gdk-3.0.pc.in',
- output: pkg,
- configuration: pkgconf,
- install_dir: pkg_install_dir)
-endforeach
-
-foreach pkg: gtk_pcs
- configure_file(input: 'gtk+-3.0.pc.in',
- output: pkg,
- configuration: pkgconf,
- install_dir: pkg_install_dir)
-endforeach
-
-if os_unix
- configure_file(input: 'gtk+-unix-print-3.0.pc.in',
- output: 'gtk+-unix-print-3.0.pc',
- configuration: pkgconf,
- install_dir: pkg_install_dir)
-endif
-
subdir('po')
subdir('po-properties')
subdir('docs/tools')
@@ -1015,7 +890,7 @@ summary = [
'------',
'GTK+ @0@ (@1@)'.format(gtk_version, gtk_api_version),
'',
- ' Display backends: @0@ [disabled: @1@]'.format(pkg_targets.strip(), ' '.join(disabled_backends)),
+ ' Display backends: @0@ [disabled: @1@]'.format(' '.join(pkg_targets), ' '.join(disabled_backends)),
' Print backends: @0@ [disabled: @1@]'.format(' '.join(print_backends), ' '.join(disabled_print_backends)),
' Cloud support: @0@'.format(get_option('cloudproviders')),
' Colord support: @0@'.format(get_option('colord')),