gtk2/modules/printbackends/meson.build
Christoph Reiter d402cd4e2e build: only require cups >=1.7
In 9236ee0564 the cups code was updated to use newer API with cups >= 2
and a later commit (a7e207abe) dropped the old code paths and added version
checks in meson/autotools.

The newly used functions were httpConnect2 and httpReconnect2 which are
available since 1.7 and don't require cups 2.0.

Change the versions checks to 1.7 instead so gtk can still be build with
older cups (macOS 10.9 for example, see #1950)
2019-06-15 10:08:46 +02:00

168 lines
4.9 KiB
Meson

# Print backend config: 'auto' means all backends we have dependencies for,
# the specific backend names mean we should fail if dependencies are missing
all_print_backends = [
'cloudprint',
'cups',
'file',
'lpr',
'papi',
'test',
]
auto_print_backends = []
foreach backend: all_print_backends
if backend != 'test' and os_unix
auto_print_backends += backend
endif
endforeach
print_strict_deps = true
if get_option('print_backends') == 'auto'
enabled_print_backends = auto_print_backends
print_strict_deps = false
else
wanted_print_backends = get_option('print_backends').split(',')
enabled_print_backends = []
foreach backend: wanted_print_backends
if backend != ''
if not all_print_backends.contains(backend)
error('print backend \'@0@\' unknown'.format(backend))
endif
enabled_print_backends += backend
endif
endforeach
endif
print_backends = []
if not enabled_print_backends.contains('file')
if os_unix
error('\'file\' print backed needs to be enabled')
endif
else
print_backends += ['file']
endif
if enabled_print_backends.contains('lpr')
print_backends += ['lpr']
endif
if enabled_print_backends.contains('test')
print_backends += ['test']
endif
if enabled_print_backends.contains('papi')
# TODO
if print_strict_deps
error('\'papi\' backend not supported with meson yet')
endif
endif
if enabled_print_backends.contains('cloudprint')
rest_dep = dependency('rest-0.7', required : print_strict_deps)
json_glib_dep = dependency('json-glib-1.0', required : print_strict_deps)
if rest_dep.found() and json_glib_dep.found()
print_backends += ['cloudprint']
else
message('\'cloudprint\' backend disabled: missing dependencies')
endif
endif
if enabled_print_backends.contains('cups')
cups_error = ''
if cc.has_header('cups/cups.h')
cups_major_version = cc.compute_int('CUPS_VERSION_MAJOR', prefix : '#include <cups/cups.h>')
cups_minor_version = cc.compute_int('CUPS_VERSION_MINOR', prefix : '#include <cups/cups.h>')
cups_version = '@0@.@1@'.format(cups_major_version, cups_minor_version)
message('Found CUPS version: @0@'.format(cups_version))
if cups_version.version_compare('<1.7')
cups_error = 'Need CUPS version >= 1.7'
else
libcups = cc.find_library('cups', required : true)
endif
else
cups_error = 'Cannot find CUPS headers in default prefix.'
endif
enable_colord = get_option('colord')
if enable_colord != 'no'
want_colord = enable_colord == 'yes'
colord_dep = dependency('colord', version: '>= 0.1.9', required: want_colord)
cdata.set('HAVE_COLORD', colord_dep.found() ? 1 : false)
else
cups_colord_dep = []
endif
if cups_error != ''
if print_strict_deps
error(cups_error)
else
message(cups_error)
endif
else
print_backends += ['cups']
endif
endif
cdata.set_quoted('GTK_PRINT_BACKENDS', ','.join(print_backends))
# Building
printbackends_args = [
'-DGTK_COMPILATION',
'-DGTK_DISABLE_DEPRECATION_WARNINGS',
'-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED',
]
printbackends_subdir = 'gtk-3.0/@0@/printbackends'.format(gtk_binary_version)
printbackends_install_dir = join_paths(get_option('libdir'), printbackends_subdir)
if print_backends.contains('file')
shared_module('printbackend-file',
'file/gtkprintbackendfile.c',
c_args: printbackends_args,
dependencies: libgtk_dep,
install_dir: printbackends_install_dir,
install : true)
endif
if print_backends.contains('lpr')
shared_module('printbackend-lpr',
'lpr/gtkprintbackendlpr.c',
c_args: printbackends_args,
dependencies: libgtk_dep,
install_dir: printbackends_install_dir,
install : true)
endif
if print_backends.contains('test')
shared_module('printbackend-test',
'test/gtkprintbackendtest.c',
c_args: printbackends_args,
dependencies: libgtk_dep,
install_dir: printbackends_install_dir,
install : true)
endif
if print_backends.contains('cloudprint')
shared_module('printbackend-cloudprint',
'cloudprint/gtkprintbackendcloudprint.c',
'cloudprint/gtkprintercloudprint.c',
'cloudprint/gtkcloudprintaccount.c',
c_args: printbackends_args,
dependencies: [ libgtk_dep, rest_dep, json_glib_dep ],
install_dir: printbackends_install_dir,
install : true)
endif
if print_backends.contains('cups')
shared_module('printbackend-cups',
'cups/gtkprintbackendcups.c',
'cups/gtkprintercups.c',
'cups/gtkcupsutils.c',
'cups/gtkcupssecretsutils.c',
c_args: printbackends_args,
dependencies: [libgtk_dep, libcups, colord_dep],
install_dir: printbackends_install_dir,
install : true)
endif