Rest of the conversion to meson/ninja missed in the first push. Thanks again Claud for the assist.
This commit is contained in:
120
meson.build
Normal file
120
meson.build
Normal file
@@ -0,0 +1,120 @@
|
||||
project('cthulhu',
|
||||
version: '2025.08.11',
|
||||
meson_version: '>= 1.0.0',
|
||||
)
|
||||
|
||||
python = import('python')
|
||||
gnome = import('gnome')
|
||||
i18n = import('i18n')
|
||||
|
||||
python_minimum_version = '3.3'
|
||||
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.48.0')
|
||||
dependency('atk-bridge-2.0', version: '>= 2.26.0')
|
||||
dependency('pygobject-3.0', version: '>= 3.18')
|
||||
|
||||
# Hard Python module dependencies
|
||||
gi_result = python.find_installation('python3', modules:['gi'], required: false)
|
||||
if not gi_result.found()
|
||||
error('gi (PyGObject) is required')
|
||||
endif
|
||||
|
||||
json_result = python.find_installation('python3', modules:['json'], required: false)
|
||||
if not json_result.found()
|
||||
error('json module is required')
|
||||
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 = '0'
|
||||
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@;',
|
||||
'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',
|
||||
'speechd': 'speech output',
|
||||
'pluggy': 'plugin system',
|
||||
'dasbus': 'D-Bus remote controller',
|
||||
'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
|
||||
|
||||
if speech_output.length() > 0
|
||||
summary += {'speech output': 'yes (found @0@)'.format(', '.join(speech_output))}
|
||||
else
|
||||
summary += {'speech output': 'no (missing speechd)'}
|
||||
endif
|
||||
|
||||
# Check for GStreamer
|
||||
gstreamer_dep = dependency('gstreamer-1.0', required: false)
|
||||
if gstreamer_dep.found()
|
||||
summary += {'sound support': 'yes (found gstreamer)'}
|
||||
else
|
||||
summary += {'sound support': 'no (missing gstreamer)'}
|
||||
endif
|
||||
|
||||
# Check for libpeas
|
||||
libpeas_dep = dependency('libpeas-1.0', required: false)
|
||||
if libpeas_dep.found()
|
||||
summary += {'plugin loading': 'yes (found libpeas)'}
|
||||
else
|
||||
summary += {'plugin loading': 'no (missing libpeas)'}
|
||||
endif
|
||||
|
||||
# Integration with session startup
|
||||
i18n.merge_file(
|
||||
input: 'cthulhu-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')
|
||||
|
||||
summary(summary)
|
Reference in New Issue
Block a user