[gtk+] meson: Conditionally check for dependencies



commit 6dd6660c685d22e88af5ed4d0b5f1f22df0338de
Author: Timm Bäder <mail baedert org>
Date:   Sat Sep 24 17:35:10 2016 +0200

    meson: Conditionally check for dependencies

 config.h.meson             |    6 ++
 demos/gtk-demo/meson.build |    2 +-
 meson.build                |  156 +++++++++++++++++++++++++-------------------
 3 files changed, 95 insertions(+), 69 deletions(-)
---
diff --git a/config.h.meson b/config.h.meson
index e6cd25d..55e026a 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -194,6 +194,12 @@
 /* Have the SYNC extension library */
 #mesondefine HAVE_XSYNC
 
+/* Define to 1 if you have the `_lock_file' function */
+#mesondefine HAVE__LOCK_FILE
+
+/* Define to 1 if you have the `flockfile' function */
+#mesondefine HAVE_FLOCKFILE
+
 /* Define if _NL_MEASUREMENT_MEASUREMENT is available */
 #mesondefine HAVE__NL_MEASUREMENT_MEASUREMENT
 
diff --git a/demos/gtk-demo/meson.build b/demos/gtk-demo/meson.build
index 11fe332..ee44a85 100644
--- a/demos/gtk-demo/meson.build
+++ b/demos/gtk-demo/meson.build
@@ -73,7 +73,7 @@ demos = files([
 
 gtkdemo_deps = [libgtk_dep]
 
-if build_font_demo
+if harfbuzz_dep.found() and pangoft_dep.found()
   demos += files('font_features.c')
   gtkdemo_deps += harfbuzz_dep
 endif
diff --git a/meson.build b/meson.build
index 1a56ec3..e3d9ec4 100644
--- a/meson.build
+++ b/meson.build
@@ -13,10 +13,10 @@ add_global_arguments('-DG_LOG_USE_STRUCTURED=1', language: 'c')
 add_global_arguments('-DG_ENABLE_DEBUG', language: 'c')
 add_global_arguments('-DG_ENABLE_CONSISTENCY_CHECKS', language: 'c')
 
-gtk_version = meson.project_version().split('.')
-gtk_major_version = gtk_version[0]
-gtk_minor_version = gtk_version[1]
-gtk_micro_version = gtk_version[2]
+gtk_version       = meson.project_version().split('.')
+gtk_major_version = gtk_version[0].to_int()
+gtk_minor_version = gtk_version[1].to_int()
+gtk_micro_version = gtk_version[2].to_int()
 gtk_interface_age = 0
 add_global_arguments('-DGTK_VERSION="' + meson.project_version() + '"', language: 'c')
 
@@ -27,7 +27,7 @@ add_global_arguments('-DGTK_VERSION="' + meson.project_version() + '"', language
 # for GTK+.
 gtk_binary_version = '3.0.0'
 
-gtk_binary_age = 100 * gtk_minor_version.to_int() + gtk_micro_version.to_int()
+gtk_binary_age = 100 * gtk_minor_version + gtk_micro_version
 gtk_api_version = '@0@.0'.format(gtk_major_version)
 
 x11_enabled      = get_option('enable-x11-backend')
@@ -35,10 +35,10 @@ wayland_enabled  = get_option('enable-wayland-backend')
 broadway_enabled = get_option('enable-broadway-backend')
 
 
-mkmarshal = find_program('build_marshal.py')
+mkmarshal    = find_program('build_marshal.py')
 glib_marshal = find_program('glib-genmarshal')
-mkenum = find_program('build_enum.py')
-perl = find_program('perl')
+mkenum       = find_program('build_enum.py')
+perl         = find_program('perl')
 glib_mkenums = find_program('glib-mkenums')
 
 os_unix   = false
@@ -56,10 +56,6 @@ endif
 
 os_unix = not os_win32
 
-build_font_demo = false
-
-
-
 
 cc = meson.get_compiler('c')
 cdata = configuration_data()
@@ -67,6 +63,7 @@ cdata.set('PACKAGE_VERSION', '"'+meson.project_version()+'"')
 cdata.set('GTK_LOCALEDIR', '"'+get_option('localedir')+'"')
 cdata.set('GTK_DATADIR', '"'+get_option('datadir')+'"')
 cdata.set('GTK_LIBDIR', '"'+get_option('libdir')+'"')
+cdata.set('GETTEXT_PACKAGE', '"gtk30"')
 cdata.set('GTK_MAJOR_VERSION', gtk_major_version)
 cdata.set('GTK_MINOR_VERSION', gtk_minor_version)
 cdata.set('GTK_MICRO_VERSION', gtk_micro_version)
@@ -102,7 +99,6 @@ endforeach
 
 check_functions = [
 # check token HAVE_BIND_TEXTDOMAIN_CODESET
-# check token HAVE_COLORD
 # check token HAVE_CUPS_API_1_6
   ['HAVE_DCGETTEXT', 'dcgettext', '#include<libintl.h>'],
   ['HAVE_DECL_ISINF', 'isinf', '#include<math.h>'],
@@ -116,23 +112,21 @@ check_functions = [
 # check token HAVE_HTTP_AUTHSTRING
 # check token HAVE_IPRINTDIALOGCALLBACK
 # check token HAVE_LC_MESSAGES
-# check token HAVE_LIBM
 # check token HAVE_LOCALTIME_R
   ['HAVE_LSTAT', 'lstat', '#include<sys/stat.h>'],
-# check token HAVE_MALLINFO
-# check token HAVE_MKSTEMP
   ['HAVE_MMAP', 'mmap', '#include<sys/mman.h>'],
   ['HAVE_NEARBYINT', 'nearbyint', '#include<math.h>'],
-# check token HAVE_PAPI
-# check token HAVE_POSIX_FALLOCATE
+  ['HAVE_POSIX_FALLOCATE', 'posix_fallocate', '#include<fcntl.h>'],
+  ['HAVE__LOCK_FILE', '_lock_file', '#include<stdio.h>'],
+  ['HAVE_FLOCKFILE', 'flockfile', '#include<stdio.h>'],
+  ['HAVE_MKSTEMP', 'mkstemp', '#include<stdlib.h>'],
+  ['HAVE_MALLINFO', 'mallinfo', '#include<malloc.h>'],
   ['HAVE_ROUND', 'round', '#include<math.h>'],
   ['HAVE_RINT', 'rint', '#include<math.h>'],
   ['HAVE_LOG2', 'log2', '#include<math.h>'],
   ['HAVE_EXP2', 'exp2', '#include<math.h>'],
   ['HAVE_SINCOS', 'sincos', '#include<math.h>'],
-  ['HAVE_XGENERICEVENTS', 'XGetEventData', '#include<X11/Xlib.h>'],
   ['HAVE_XKB', 'XkbQueryExtension', '#include<X11/XKBlib.h>'],
-  ['HAVE_XSYNC', 'XSyncQueryExtension', 
'#include<X11/Xlib.h>\n#include</usr/include/X11/extensions/sync.h>'],
 # check token HAVE_SOCKADDR_UN_SUN_LEN
 # check token HAVE_SOLARIS_XINERAMA
 # check token HAVE_XFREE_XINERAMA
@@ -143,6 +137,12 @@ check_functions = [
 # check token HAVE__NL_TIME_FIRST_WEEKDAY
 # check token HAVE__NSGETENVIRON
 ]
+if x11_enabled
+check_functions += [
+  ['HAVE_XGENERICEVENTS', 'XGetEventData', '#include<X11/Xlib.h>'],
+  ['HAVE_XSYNC', 'XSyncQueryExtension', '#include<X11/Xlib.h>\n#include</usr/include/X11/extensions/sync.h>']
+]
+endif
 
 foreach f : check_functions
   if cc.has_function(f.get(1), prefix : f.get(2))
@@ -150,20 +150,21 @@ foreach f : check_functions
   endif
 endforeach
 
-cdata.set('GETTEXT_PACKAGE', '"gtk-3.0"')
+#
+# Disable deprecation checks for all libraries we depend on on stable branches.
+# This is so newer versions of those libraries don't cause more warnings with
+# a stable GTK version.
+# We don't ever want to turn off deprecation warnings for master however, because
+# that's where we get rid of deprecated API we use.
+if gtk_minor_version % 2 == 0
+  cdata.set('GLIB_DISABLE_DEPRECATION_WARNINGS', 1)
+endif
+
 
 confinc = include_directories('.')
 gdkinc = include_directories('gdk')
 gtkinc = include_directories('gtk')
 
-x11_dep        = dependency('x11')
-xrender_dep    = dependency('xrender')
-xi_dep         = dependency('xi')
-xext_dep       = dependency('xext')
-xcursor_dep    = dependency('xcursor', required: false)
-xdamage_dep    = dependency('xdamage', required: false)
-xfixes_dep     = dependency('xfixes', required: false)
-xcomposite_dep = dependency('xcomposite', required: false)
 glib_dep       = dependency('glib-2.0', version: '>= 2.49.4')
 giounix_dep    = dependency('gio-unix-2.0', required : false)
 pango_dep      = dependency('pango', version: '>=1.37.3')
@@ -176,61 +177,80 @@ epoxy_dep      = dependency('epoxy', version: '>= 1.0')
 atk_dep        = dependency('atk', version: '>= 2.15.1')
 atkbridge_dep  = dependency('atk-bridge-2.0')
 gmodule_dep    = dependency('gmodule-2.0')
-
+colord_dep     = dependency('colord', version: '>= 0.1.9', required: false)
 fontconfig_dep = dependency('fontconfig')
-xkbdep         = dependency('xkbcommon', version: '>= 0.2.0')
-wlclientdep    = dependency('wayland-client', version:  '>= 1.9.91')
-wlprotocolsdep = dependency('wayland-protocols', version: '>= 1.7')
-wlcursordep    = dependency('wayland-cursor', version: '>= 1.9.91')
-wlegldep       = dependency('wayland-egl')
-xrandr_dep     = dependency('xrandr', version: '>= 1.2.99')
-xrandr15_dep   = dependency('xrandr', version: '>= 1.5', required: false)
 harfbuzz_dep   = dependency('harfbuzz', version: '>= 0.9', required: false)
-mlib           = cc.find_library('m', required: false)
-shmlib         = cc.find_library('rt')
-
-build_font_demo = harfbuzz_dep.found() and pangoft_dep.found()
+xkbdep         = dependency('xkbcommon', version: '>= 0.2.0')
 
-if giounix_dep.found()
-  cdata.set('HAVE_GIO_UNIX', 1)
+if wayland_enabled
+  wlclientdep    = dependency('wayland-client', version:  '>= 1.9.91')
+  wlprotocolsdep = dependency('wayland-protocols', version: '>= 1.7')
+  wlcursordep    = dependency('wayland-cursor', version: '>= 1.9.91')
+  wlegldep       = dependency('wayland-egl')
 endif
 
-if xdamage_dep.found()
-  cdata.set('HAVE_XDAMAGE', 1)
-endif
+if x11_enabled
+  xrandr_dep     = dependency('xrandr', version: '>= 1.2.99')
+  xrandr15_dep   = dependency('xrandr', version: '>= 1.5', required: false)
+  x11_dep        = dependency('x11')
+  xrender_dep    = dependency('xrender')
+  xi_dep         = dependency('xi')
+  xext_dep       = dependency('xext')
+  xcursor_dep    = dependency('xcursor', required: false)
+  xdamage_dep    = dependency('xdamage', required: false)
+  xfixes_dep     = dependency('xfixes', required: false)
+  xcomposite_dep = dependency('xcomposite', required: false)
+
+
+  if xdamage_dep.found()
+    cdata.set('HAVE_XDAMAGE', 1)
+  endif
 
-if xcursor_dep.found()
-  cdata.set('HAVE_XCURSOR', 1)
-endif
+  if xcursor_dep.found()
+    cdata.set('HAVE_XCURSOR', 1)
+  endif
 
-if mlib.found()
-  cdata.set('HAVE_LIBM', 1)
-endif
+  if xcomposite_dep.found()
+    cdata.set('HAVE_XCOMPOSITE', 1)
+  endif
+
+  if xfixes_dep.found()
+    cdata.set('HAVE_XFIXES', 1)
+  endif
 
-if xcomposite_dep.found()
-  cdata.set('HAVE_XCOMPOSITE', 1)
-endif
 
-if xfixes_dep.found()
-  cdata.set('HAVE_XFIXES', 1)
-endif
 
-if xi_dep.found() and cc.has_header('X11/extensions/XInput2.h')
-  cdata.set('XINPUT_2', 1)
-  prefix = '#include<X11/Xlib.h>\n#include<X11/extensions/XInput2.h>'
-  if cc.has_function('XIAllowTouchEvents', prefix: prefix) and cc.has_member('XIScrollClassInfo', 'number', 
prefix: prefix)
-    cdata.set('XINPUT_2_2', 1)
+  if xi_dep.found() and cc.has_header('X11/extensions/XInput2.h')
+    cdata.set('XINPUT_2', 1)
+    prefix = '#include<X11/Xlib.h>\n#include<X11/extensions/XInput2.h>'
+    if cc.has_function('XIAllowTouchEvents', prefix: prefix) and cc.has_member('XIScrollClassInfo', 
'number', prefix: prefix)
+      cdata.set('XINPUT_2_2', 1)
+    endif
   endif
-endif
 
-if xrandr_dep.found()
-  cdata.set('HAVE_RANDR', 1)
+  if xrandr_dep.found()
+    cdata.set('HAVE_RANDR', 1)
 
-  if xrandr15_dep.found()
-    cdata.set('HAVE_RANDR15', 1)
+    if xrandr15_dep.found()
+      cdata.set('HAVE_RANDR15', 1)
+    endif
   endif
 endif
 
+mlib   = cc.find_library('m', required: false)
+shmlib = cc.find_library('rt')
+
+if giounix_dep.found()
+  cdata.set('HAVE_GIO_UNIX', 1)
+endif
+
+if colord_dep.found()
+  cdata.set('HAVE_COLORD', 1)
+endif
+
+if mlib.found()
+  cdata.set('HAVE_LIBM', 1)
+endif
 
 configure_file(
   input : 'config.h.meson',


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]