File: meson.build

package info (click to toggle)
orca 49.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 53,532 kB
  • sloc: python: 98,331; javascript: 281; sh: 64; xml: 27; makefile: 5
file content (128 lines) | stat: -rw-r--r-- 3,971 bytes parent folder | download | duplicates (2)
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
project('orca',
  version: '49.5',
  meson_version: '>= 1.0.0',
)

python = import('python')
gnome = import('gnome')
i18n = import('i18n')

python_minimum_version = '3.10'
python3 = python.find_installation('python3', required: true)
if not python3.language_version().version_compare(f'>= @python_minimum_version@')
  error(f'Python @python_minimum_version@ or newer is required.')
endif

# Hard dependencies (checked via pkg-config)
dependency('atspi-2', version: '>= 2.52.0')
dependency('atk-bridge-2.0', version: '>= 2.50.0')
dependency('pygobject-3.0', version: '>= 3.18')

# Hard Python module dependencies
dasbus_result = python.find_installation('python3', modules:['dasbus'], required: false)
if not dasbus_result.found()
  error('dasbus is required for D-Bus remote controller interface')
endif

# End users might not have the Gtk development libraries installed, making pkg-config fail.
# Therefore, check this dependency via python.
gtk_major_version = '3'
gtk_minor_version = '24'
gtk_command = ' '.join([
  'import gi; gi.require_version("Gtk", "3.0"); from gi.repository import Gtk;',
  'print(f"{Gtk.get_major_version()}.{Gtk.get_minor_version()}.{Gtk.get_micro_version()}");',
  f'failed = Gtk.get_major_version() != @gtk_major_version@ or Gtk.get_minor_version() < @gtk_minor_version@;',
  'exit(failed)'
])
gtk_test = run_command(python3, '-c', gtk_command, check: false)
description = f'GTK @gtk_major_version@.@gtk_minor_version@'
version = gtk_test.stdout().strip()
if gtk_test.returncode() != 0
  error(f'@description@ failed (found @version@)')
endif

# Optional python modules with their descriptions
optional_modules = {
  'brlapi': 'braille output',
  'louis': 'contracted braille',
  'psutil': 'system information commands',
  'gi.repository.Wnck': 'mouse review',
}

summary = {}
foreach module, description : optional_modules
  result = python.find_installation('python3', modules:[module], required: false)
  if result.found()
    summary += {description: f'yes (found @module@)'}
  else
    summary += {description: f'no (missing @module@)'}
  endif
endforeach

# Optional synthesizer services
speech_output = []
if python.find_installation('python3', modules:['speechd'], required: false).found()
  speech_output += ['speechd']
endif

# Experimental (checked via pkg-config)
if get_option('spiel')
  dependency('spiel-1.0',
            version: '>= 1.0.1',
           fallback: ['spiel', 'spiel_lib_dep'],
    default_options: [
      'docs=false',
      'tests=false',
      'werror=false',
    ],
  )
  speech_output += ['spiel']
endif

if speech_output.length() > 0
  summary += {'speech output': 'yes (found @0@)'.format(', '.join(speech_output))}
else
  summary += {'speech output': 'no (missing speechd, spiel)'}
endif

# Integration with session startup
systemd = dependency('systemd', required: false)
systemd_user_unit_dir = systemd.get_variable(
    'systemd_user_unit_dir',
    pkgconfig_define: ['prefix', get_option('prefix')],
    default_value: get_option('prefix') / 'lib' / 'systemd' / 'user'
)
install_data(
    'orca.service',
    install_dir: systemd_user_unit_dir
)
i18n.merge_file(
  input: 'orca-autostart.desktop.in',
  output: '@BASENAME@',
  type: 'desktop',
  po_dir: meson.project_source_root() / 'po',
  install: true,
  install_dir: get_option('sysconfdir') / 'xdg' / 'autostart',
)

gnome.post_install(
  gtk_update_icon_cache: true,
)

summary += {'Install dir': python.find_installation('python3').get_install_dir()}

subdir('docs')
subdir('help')
subdir('icons')
subdir('po')
subdir('src')
subdir('tests')

summary(summary)

# This may be removed once Spiel is widely available
if get_option('force_fallback_for').contains('spiel')
  warning('Spiel is being built as a subproject that may need to be updated.\n\n' +
          '    See the README.md in this directory or in the Orca repository at:\n' +
          '    https://gitlab.gnome.org/GNOME/orca/blob/main/README.md#experimental-features\n')
endif