| # 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_dep = dependency('cups', version : '>=1.7', required: print_strict_deps) |
| if cups_dep.found() |
| cups_extra_deps = [] |
| |
| 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) |
| cups_extra_deps += [colord_dep] |
| endif |
| |
| print_backends += ['cups'] |
| else |
| message('\'cups\' backend disabled: missing dependencies') |
| endif |
| endif |
| |
| cdata.set_quoted('GTK_PRINT_BACKENDS', ','.join(print_backends)) |
| |
| disabled_print_backends = [] |
| foreach backend : all_print_backends |
| if not print_backends.contains(backend) |
| disabled_print_backends += [backend] |
| endif |
| endforeach |
| |
| # 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, |
| name_suffix: module_suffix, |
| 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, |
| name_suffix: module_suffix, |
| 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, |
| name_suffix: module_suffix, |
| 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, |
| name_suffix: module_suffix, |
| 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, cups_dep] + cups_extra_deps, |
| install_dir: printbackends_install_dir, |
| name_suffix: module_suffix, |
| install : true) |
| endif |