summaryrefslogtreecommitdiff
path: root/modules/printbackends/meson.build
blob: 0e26d829f95abd8f15671f4aca2c80b6469cdd2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
all_print_backends = [
  'cups',
  'cloudprint',
]

enabled_print_backends = get_option('print-backends').split(',')

if enabled_print_backends.contains('none')
  enabled_print_backends = []
elif enabled_print_backends.contains('all')
  enabled_print_backends = all_print_backends
endif

# The 'file' print backend cannot be disabled
print_backends = ['file']

# Checks to see if we should compile with CUPS backend for GTK
enable_cups = enabled_print_backends.contains('cups')
if enable_cups
  #cups_config = find_program('cups-config', required : true)
  #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')
    # TODO: include_directories from cups-config
    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

      print_backends += ['cups']
    else
      error('Need CUPS version >= 1.2')
    endif
  else
    error('Cannot find CUPS headers in default prefix.')
  endif
endif

# Checks to see if we should compile with cloudprint backend for GTK
enable_cloudprint = enabled_print_backends.contains('cloudprint')
if enable_cloudprint
  rest_dep = dependency('rest-0.7', required : true)
  json_glib_dep = dependency('json-glib-1.0', required : true)
  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

# Automatic fall-back to the lpr backend
if 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)

cdata.set_quoted('GTK_PRINT_BACKENDS', ','.join(print_backends))


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
  colord_dep = []
endif

printbackends_args = [
  '-DGTK_COMPILATION',
  '-DGTK_DISABLE_DEPRECATION_WARNINGS',
  '-DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED',
]

if print_backends.contains('cups')
  shared_module('printbackend-cups',
                'gtkprintbackendcups.c',
                'gtkprintercups.c',
                'gtkcupsutils.c',
                'gtkcupssecretsutils.c',
                c_args: printbackends_args,
                dependencies: [libgtk_dep, libcups, colord_dep],
                install_dir: printbackends_install_dir,
                install : true)
endif

if print_backends.contains('cloudprint')
  shared_module('printbackend-cloudprint',
                'gtkprintbackendcloudprint.c',
                'gtkprintercloudprint.c',
                '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('file')
  shared_module('printbackend-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',
                'gtkprintbackendlpr.c',
                c_args: printbackends_args,
                dependencies: libgtk_dep,
                install_dir: printbackends_install_dir,
                install : true)
endif