summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2017-03-22 16:48:56 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2017-05-03 15:10:55 +0100
commita35e5f3135206850fe40213f890724c37c571411 (patch)
treec996c7f728cb53b63b821f0e86fcacde30abeeaa /modules
parent3a496afa0be8b3a8d5183ef549f7239d3381739a (diff)
downloadgtk+-a35e5f3135206850fe40213f890724c37c571411.tar.gz
meson: modules: add printbackends
The cups checks might not work properly everywhere yet, since they don't use cups-config and parse the output yet.
Diffstat (limited to 'modules')
-rw-r--r--modules/meson.build5
-rw-r--r--modules/printbackends/cloudprint/meson.build7
-rw-r--r--modules/printbackends/cups/meson.build8
-rw-r--r--modules/printbackends/file/meson.build5
-rw-r--r--modules/printbackends/lpr/meson.build5
-rw-r--r--modules/printbackends/meson.build116
-rw-r--r--modules/printbackends/papi/meson.build6
7 files changed, 152 insertions, 0 deletions
diff --git a/modules/meson.build b/modules/meson.build
new file mode 100644
index 0000000000..b855765ab7
--- /dev/null
+++ b/modules/meson.build
@@ -0,0 +1,5 @@
+#subdir('input')
+
+if os_unix
+ subdir('printbackends')
+endif
diff --git a/modules/printbackends/cloudprint/meson.build b/modules/printbackends/cloudprint/meson.build
new file mode 100644
index 0000000000..0a575f0407
--- /dev/null
+++ b/modules/printbackends/cloudprint/meson.build
@@ -0,0 +1,7 @@
+shared_module('printbackend-cloudprint',
+ 'gtkprintbackendcloudprint.c',
+ 'gtkprintercloudprint.c',
+ 'gtkcloudprintaccount.c',
+ c_args : ['-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED'],
+ dependencies : [libgtk_dep, rest_dep, json_glib_dep],
+ install_dir : printbackends_install_dir)
diff --git a/modules/printbackends/cups/meson.build b/modules/printbackends/cups/meson.build
new file mode 100644
index 0000000000..a709a9f5c2
--- /dev/null
+++ b/modules/printbackends/cups/meson.build
@@ -0,0 +1,8 @@
+shared_module('printbackend-cups',
+ 'gtkprintbackendcups.c',
+ 'gtkprintercups.c',
+ 'gtkcupsutils.c',
+ 'gtkcupssecretsutils.c',
+ c_args : ['-DGTK_COMPILATION', '-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED'],
+ dependencies : [libgtk_dep, libcups, colord_dep],
+ install_dir : printbackends_install_dir)
diff --git a/modules/printbackends/file/meson.build b/modules/printbackends/file/meson.build
new file mode 100644
index 0000000000..df29254042
--- /dev/null
+++ b/modules/printbackends/file/meson.build
@@ -0,0 +1,5 @@
+shared_module('printbackend-file',
+ 'gtkprintbackendfile.c',
+ c_args : ['-DGTK_COMPILATION', '-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED'],
+ dependencies : libgtk_dep,
+ install_dir : printbackends_install_dir)
diff --git a/modules/printbackends/lpr/meson.build b/modules/printbackends/lpr/meson.build
new file mode 100644
index 0000000000..3401997073
--- /dev/null
+++ b/modules/printbackends/lpr/meson.build
@@ -0,0 +1,5 @@
+shared_module('printbackend-lpr',
+ 'gtkprintbackendlpr.c',
+ c_args : ['-DGTK_COMPILATION', '-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED'],
+ dependencies : libgtk_dep,
+ install_dir : printbackends_install_dir)
diff --git a/modules/printbackends/meson.build b/modules/printbackends/meson.build
new file mode 100644
index 0000000000..80c94698c5
--- /dev/null
+++ b/modules/printbackends/meson.build
@@ -0,0 +1,116 @@
+print_backends = ['file']
+
+# Checks to see if we should compile with CUPS backend for GTK+
+enable_cups = get_option('enable-cups-print-backend')
+if enable_cups != 'no'
+ want_cups = enable_cups == 'yes'
+ #cups_config = find_program('cups-config', required : want_cups)
+ #if cups_config.found()
+ # FIXME: eek, see configure.ac (we're just not going to support non-standar prefix for now)
+ #endif
+ if cc.has_header('cups/cups.h')
+ # No cc.compute_int() yet: https://github.com/mesonbuild/meson/issues/435
+ cups_major_version = 0
+ cups_minor_version = -1
+ foreach check_ver : [1,2,3]
+ if cups_major_version == 0
+ if cc.compiles('''#include <cups/cups.h>
+ #if CUPS_VERSION_MAJOR != @0@
+ #error "Not this version"
+ #endif'''.format(check_ver),
+ name : 'Check CUPS major version @0@'.format(check_ver))
+ cups_major_version = check_ver
+ endif
+ endif
+ endforeach
+ foreach check_ver : [0,1,2,3,4,5,6,7,8,9]
+ if cups_major_version > 0 and cups_minor_version == -1
+ if cc.compiles('''#include <cups/cups.h>
+ #if CUPS_VERSION_MINOR != @0@
+ #error "Not this version"
+ #endif'''.format(check_ver),
+ name : 'Check CUPS minor version @0@'.format(check_ver))
+ cups_minor_version = check_ver
+ endif
+ endif
+ endforeach
+ if cups_major_version > 0 and cups_minor_version >= 0
+ message('Found CUPS version: @0@.@1@'.format(cups_major_version, cups_minor_version))
+ if cups_major_version > 1 or cups_minor_version >= 2
+ if cups_major_version > 1 or cups_minor_version >= 6
+ cdata.set('HAVE_CUPS_API_1_6', 1)
+ endif
+
+ if cc.compiles('#include <cups/http.h> \n http_t http; char *s = http.authstring;')
+ cdata.set('HAVE_HTTP_AUTHSTRING', 1,
+ description :'Define if cups http_t authstring field is accessible')
+ endif
+ libcups = cc.find_library('cups', required : want_cups)
+ if libcups.found() and cc.has_function('httpGetAuthString', dependencies : libcups)
+ cdata.set('HAVE_HTTPGETAUTHSTRING', 1)
+ endif
+
+ print_backends += ['cups']
+ elif want_cups
+ error('Need CUPS version >= 1.2')
+ endif
+ else
+ error('Could not determine CUPS version from header files.')
+ endif
+ elif want_cups
+ error('Cannot find CUPS headers in default prefix.')
+ endif
+endif
+
+# Checks to see if we should compile with PAPI backend for GTK+
+enable_papi = get_option('enable-papi-print-backend')
+if enable_papi != 'no'
+ want_papi = enable_papi == 'yes'
+ libpapi = cc.find_library('libpapi', required : false)
+ if libpapi.found() and cc.has_function('papiServiceCreate', args : '-lpapi')
+ print_backends += ['papi']
+ elif want_papi
+ error('Cannot find libpapi.')
+ endif
+endif
+
+# Checks to see if we should compile with cloudprint backend for GTK+
+enable_cloudprint = get_option('enable-cloudprint-print-backend')
+if enable_cloudprint != 'no'
+ want_cloudprint = enable_cloudprint == 'yes'
+ rest_dep = dependency('rest-0.7', required : want_cloudprint)
+ json_glib_dep = dependency('json-glib-1.0', required : want_cloudprint)
+ if rest_dep.found() and json_glib_dep.found()
+ print_backends += ['cloudprint']
+ endif
+endif
+
+if not cc.has_header('cairo-pdf.h', dependencies : cairo_dep)
+ error('Cannot find cairo-pdf.h. You must build Cairo with the pdf backend enabled.')
+endif
+
+if os_unix
+ if not cc.has_header('cairo-ps.h', dependencies : cairo_dep)
+ error('Cannot find cairo-ps.h. You must build Cairo with the postscript backend enabled.')
+ endif
+ if not cc.has_header('cairo-svg.h', dependencies : cairo_dep)
+ error('Cannot find cairo-svg.h. You must build Cairo with the svg backend enabled.')
+ endif
+endif
+
+if get_option('enable-test-print-backend') == 'yes'
+ print_backends += ['test']
+endif
+
+if not print_backends.contains('papi') and not print_backends.contains('cups')
+ print_backends += ['lpr']
+endif
+
+printbackends_subdir = 'gtk-4.0/@0@/printbackends'.format(gtk_binary_version)
+printbackends_install_dir = join_paths(get_option('libdir'), printbackends_subdir)
+
+message('Print backends: ' + ' '.join(print_backends))
+
+foreach print_backend : print_backends
+ subdir(print_backend)
+endforeach
diff --git a/modules/printbackends/papi/meson.build b/modules/printbackends/papi/meson.build
new file mode 100644
index 0000000000..d64dc66fdb
--- /dev/null
+++ b/modules/printbackends/papi/meson.build
@@ -0,0 +1,6 @@
+shared_module('printbackend-papi',
+ 'gtkprinterpapi.c',
+ 'gtkprintbackendpapi.c',
+ c_args : ['-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED'],
+ dependencies : [libgtk_dep, libpapi],
+ install_dir : printbackends_install_dir)