meson: build print backends
This changes the configure option into two states: auto: build all that can be build (default) A list of backend names: build them and fail if we can't "papi" is missing because it's not in Debian and I can't test it.
This commit is contained in:
parent
d52dad2042
commit
7391a078b3
@ -49,6 +49,7 @@ RUN dnf -y install \
|
|||||||
python3-pip \
|
python3-pip \
|
||||||
python3-wheel \
|
python3-wheel \
|
||||||
redhat-rpm-config \
|
redhat-rpm-config \
|
||||||
|
rest-devel \
|
||||||
vulkan-devel \
|
vulkan-devel \
|
||||||
wayland-devel \
|
wayland-devel \
|
||||||
wayland-protocols-devel \
|
wayland-protocols-devel \
|
||||||
|
@ -15,6 +15,7 @@ meson \
|
|||||||
-Dman-pages=true \
|
-Dman-pages=true \
|
||||||
-Dbroadway-backend=true \
|
-Dbroadway-backend=true \
|
||||||
-Dxinerama=yes \
|
-Dxinerama=yes \
|
||||||
|
-Dprint-backends="file,lpr,test,cloudprint,cups" \
|
||||||
_build
|
_build
|
||||||
|
|
||||||
cd _build
|
cd _build
|
||||||
|
@ -327,3 +327,5 @@
|
|||||||
#mesondefine HAVE_DEV_EVDEV_INPUT_H
|
#mesondefine HAVE_DEV_EVDEV_INPUT_H
|
||||||
|
|
||||||
#mesondefine HAVE_TRUNC
|
#mesondefine HAVE_TRUNC
|
||||||
|
|
||||||
|
#mesondefine GTK_PRINT_BACKENDS
|
||||||
|
@ -5,8 +5,6 @@ subdir('inspector')
|
|||||||
gtk_cargs = [
|
gtk_cargs = [
|
||||||
'-DGTK_COMPILATION',
|
'-DGTK_COMPILATION',
|
||||||
'-DG_LOG_DOMAIN="Gtk"',
|
'-DG_LOG_DOMAIN="Gtk"',
|
||||||
# FIXME, support other backends
|
|
||||||
'-DGTK_PRINT_BACKENDS="file"',
|
|
||||||
'-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED',
|
'-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED',
|
||||||
'-DGTK_BINARY_VERSION="@0@"'.format(gtk_binary_version),
|
'-DGTK_BINARY_VERSION="@0@"'.format(gtk_binary_version),
|
||||||
'-DGTK_HOST="@0@"'.format(host_machine.system()),
|
'-DGTK_HOST="@0@"'.format(host_machine.system()),
|
||||||
|
@ -17,8 +17,8 @@ option('cloudproviders', type: 'boolean', value: false,
|
|||||||
description : 'Enable the cloudproviders support')
|
description : 'Enable the cloudproviders support')
|
||||||
|
|
||||||
# Print backends
|
# Print backends
|
||||||
option('print-backends', type : 'string', value : 'cups,file',
|
option('print-backends', type : 'string', value : 'auto',
|
||||||
description : 'Build the specified print backends (comma-separated list, "all", or "none")')
|
description : 'Build the specified print backends (comma-separated list, any of "cloudprint,cups,file,lpr,papi,test" or "auto")')
|
||||||
option('colord', type: 'combo', choices : ['yes', 'no', 'auto'], value : 'auto',
|
option('colord', type: 'combo', choices : ['yes', 'no', 'auto'], value : 'auto',
|
||||||
description : 'Build colord support for the CUPS printing backend')
|
description : 'Build colord support for the CUPS printing backend')
|
||||||
|
|
||||||
|
@ -1,8 +1,2 @@
|
|||||||
# TODO
|
|
||||||
#if os_unix
|
|
||||||
# subdir('printbackends')
|
|
||||||
#else
|
|
||||||
print_backends = []
|
|
||||||
#endif
|
|
||||||
|
|
||||||
subdir('input')
|
subdir('input')
|
||||||
|
subdir('printbackends')
|
||||||
|
@ -20,4 +20,7 @@ endif
|
|||||||
|
|
||||||
DIST_SUBDIRS = cloudprint cups file lpr test papi
|
DIST_SUBDIRS = cloudprint cups file lpr test papi
|
||||||
|
|
||||||
|
EXTRA_DIST += \
|
||||||
|
meson.build
|
||||||
|
|
||||||
-include $(top_srcdir)/git.mk
|
-include $(top_srcdir)/git.mk
|
||||||
|
177
modules/printbackends/meson.build
Normal file
177
modules/printbackends/meson.build
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
# 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>')
|
||||||
|
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 : true)
|
||||||
|
if libcups.found() and cc.has_function('httpGetAuthString', dependencies : libcups)
|
||||||
|
cdata.set('HAVE_HTTPGETAUTHSTRING', 1)
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
cups_error = 'Need CUPS version >= 1.2'
|
||||||
|
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())
|
||||||
|
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
|
Loading…
Reference in New Issue
Block a user