Commit 43341cd3 basically means we require vala 0.38, which excludes
Debian 9 (stretch), Ubuntu 16.04 (artful) and Fedora 26. Hence bump
minimum versions (and tidy up the list of deps) to reflect this.
145 lines
5.2 KiB
Meson
145 lines
5.2 KiB
Meson
project('geary', [ 'vala', 'c' ],
|
|
version: '0.13-dev',
|
|
license: 'LGPL2.1+',
|
|
meson_version: '>= 0.41',
|
|
)
|
|
|
|
gnome = import('gnome')
|
|
i18n = import('i18n')
|
|
|
|
# Option
|
|
install_contractor_file = get_option('contractor')
|
|
iso_639_xml = get_option('iso_639_xml')
|
|
iso_3166_xml = get_option('iso_3166_xml')
|
|
reference_tracking = get_option('ref_tracking')
|
|
poodle = get_option('poodle')
|
|
enable_valadoc = get_option('valadoc')
|
|
|
|
# Some variables
|
|
cc = meson.get_compiler('c')
|
|
valac = meson.get_compiler('vala')
|
|
config_h_dir = include_directories('.')
|
|
geary_prefix = get_option('prefix')
|
|
datadir = join_paths(geary_prefix, get_option('datadir'))
|
|
libdir = join_paths(geary_prefix, get_option('libdir'))
|
|
locale_dir = join_paths(geary_prefix, get_option('localedir'))
|
|
po_dir = join_paths(meson.source_root(), 'po')
|
|
vapi_dir = join_paths(meson.source_root(), 'bindings', 'vapi')
|
|
metadata_dir = join_paths(meson.source_root(), 'bindings', 'metadata')
|
|
|
|
# Make sure Meson can find our custom VAPI's
|
|
add_project_arguments([
|
|
'--vapidir', vapi_dir,
|
|
'--metadatadir', metadata_dir,
|
|
],
|
|
language: 'vala'
|
|
)
|
|
|
|
#
|
|
# Required libraries and other dependencies
|
|
#
|
|
|
|
target_glib = '2.54' # Also passed to valac, so don't include a point rev
|
|
target_gtk = '3.22.26'
|
|
target_webkit = '2.20'
|
|
|
|
# Primary deps
|
|
glib = dependency('glib-2.0', version: '>=' + target_glib)
|
|
gtk = dependency('gtk+-3.0', version: '>=' + target_gtk)
|
|
webkit2gtk = dependency('webkit2gtk-4.0', version: '>=' + target_webkit)
|
|
sqlite = dependency('sqlite3', version: '>= 3.7.4')
|
|
gmime = dependency('gmime-2.6', version: '>= 2.6.17')
|
|
|
|
# Secondary deps - keep sorted alphabetically
|
|
enchant = dependency('enchant', version: '>= 1.6')
|
|
gcr = dependency('gcr-3', version: '>= 3.10.1')
|
|
gdk = dependency('gdk-3.0', version: '>=' + target_gtk)
|
|
gee = dependency('gee-0.8', version: '>= 0.8.5')
|
|
gio = dependency('gio-2.0', version: '>=' + target_glib)
|
|
gobject_introspection = dependency('gobject-introspection-1.0')
|
|
gthread = dependency('gthread-2.0', version: '>=' + target_glib)
|
|
javascriptcoregtk = dependency('javascriptcoregtk-4.0', version: '>=' + target_webkit)
|
|
libcanberra = dependency('libcanberra', version: '>= 0.28')
|
|
libmath = cc.find_library('m')
|
|
libnotify = dependency('libnotify', version: '>= 0.7.5')
|
|
libsecret = dependency('libsecret-1', version: '>= 0.11')
|
|
libsoup = dependency('libsoup-2.4', version: '>= 2.48')
|
|
libunwind_dep = dependency('libunwind', version: '>= 1.1')
|
|
libunwind_generic_dep = dependency('libunwind-generic', version: '>= 1.1')
|
|
libxml = dependency('libxml-2.0', version: '>= 2.7.8')
|
|
posix = valac.find_library('posix')
|
|
sqlite = dependency('sqlite3', version: '>= 3.12')
|
|
webkit2gtk_web_extension = dependency('webkit2gtk-web-extension-4.0', version: '>=' + target_webkit)
|
|
|
|
# Libunwind system dependencies above ensures appropriate versions,
|
|
# but this declared depencency is what we actually build against so we
|
|
# can include the custom VAPI correctly.
|
|
libunwind = declare_dependency(
|
|
dependencies: [
|
|
valac.find_library('libunwind', dirs: vapi_dir),
|
|
cc.find_library('unwind'),
|
|
cc.find_library('unwind-generic')
|
|
],
|
|
)
|
|
|
|
# Optional libraries
|
|
libunity = dependency('unity', version: '>= 5.12.0', required: false)
|
|
libmessagingmenu = meson.get_compiler('c').find_library('libmessaging-menu', required: false)
|
|
|
|
# Ensure SQLite was built correctly
|
|
if not cc.has_header_symbol('sqlite3.h', 'SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER')
|
|
error('SQLite3 is missing FTS3 tokenizer support. Please compile it with -DSQLITE_ENABLE_FTS3.\n'
|
|
+ 'See https://bugzilla.gnome.org/show_bug.cgi?id=763203 for details.')
|
|
endif
|
|
|
|
#
|
|
# Build glue
|
|
#
|
|
|
|
if enable_valadoc
|
|
valadoc = find_program('valadoc')
|
|
endif
|
|
|
|
# Language detection
|
|
iso_codes_dir = join_paths('/', 'usr', 'share', 'xml', 'iso-codes')
|
|
if iso_639_xml == ''
|
|
iso_639_xml = join_paths(iso_codes_dir, 'iso_639.xml')
|
|
endif
|
|
if iso_3166_xml == ''
|
|
iso_3166_xml = join_paths(iso_codes_dir, 'iso_3166.xml')
|
|
endif
|
|
files(iso_639_xml, iso_3166_xml) # Check to make sure these exist
|
|
|
|
# Configuration
|
|
conf = configuration_data()
|
|
conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
|
|
conf.set_quoted('G_LOG_DOMAIN', meson.project_name())
|
|
conf.set_quoted('PACKAGE_NAME', meson.project_name())
|
|
conf.set_quoted('PACKAGE_STRING', '@0@-@1@'.format(meson.project_name(), meson.project_version()))
|
|
conf.set_quoted('PACKAGE_VERSION', meson.project_version())
|
|
conf.set_quoted('_BUILD_ROOT_DIR', meson.build_root())
|
|
conf.set_quoted('_SOURCE_ROOT_DIR', meson.source_root())
|
|
conf.set_quoted('_GSETTINGS_DIR', join_paths(meson.build_root(), 'desktop'))
|
|
conf.set_quoted('_INSTALL_PREFIX', geary_prefix)
|
|
conf.set_quoted('LANGUAGE_SUPPORT_DIRECTORY', locale_dir)
|
|
conf.set_quoted('ISO_CODE_639_XML', iso_639_xml)
|
|
conf.set_quoted('ISO_CODE_3166_XML', iso_3166_xml)
|
|
conf.set('HAVE_LIBMESSAGINGMENU', libmessagingmenu.found())
|
|
conf.set('HAVE_LIBUNITY', libunity.found())
|
|
conf.set('HAVE_FTS3_TOKENIZE', true)
|
|
conf.set('VERSION', meson.project_version())
|
|
conf.set('GCR_API_SUBJECT_TO_CHANGE', true)
|
|
configure_file(output: 'config.h', configuration: conf)
|
|
|
|
# Post-install scripts
|
|
meson.add_install_script(join_paths('build-aux', 'post_install.py'))
|
|
|
|
# Subfolders
|
|
subdir('desktop')
|
|
subdir('help')
|
|
subdir('icons')
|
|
subdir('po')
|
|
subdir('sql')
|
|
subdir('ui')
|
|
subdir('src')
|
|
subdir('test')
|