[gnome-clocks/wip/meson] build: add meson build system
- From: Paolo Borelli <pborelli src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-clocks/wip/meson] build: add meson build system
- Date: Tue, 27 Dec 2016 18:09:40 +0000 (UTC)
commit dd027e6438c2682d1769118908f2196f0f7ef082
Author: Paolo Borelli <pborelli gnome org>
Date: Tue Dec 27 10:34:02 2016 +0100
build: add meson build system
WIP. Current TODO list:
- check translator stuff works
- check docs (yelp etc) stuff works
- fix detection of first weekday support
- learn more about meson to check if there are cleaner ways
- distcheck etc?
data/meson.build | 56 +++++++++++++++++++++++++++++++++
help/meson.build | 42 +++++++++++++++++++++++++
meson.build | 43 +++++++++++++++++++++++++
meson_post_install.py | 19 +++++++++++
po/meson.build | 82 +++++++++++++++++++++++++++++++++++++++++++++++++
src/meson.build | 62 +++++++++++++++++++++++++++++++++++++
6 files changed, 304 insertions(+), 0 deletions(-)
---
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..d6793bf
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,56 @@
+iconsdir = join_paths(get_option('datadir'), 'icons/hicolor')
+foreach size: ['16x16', '22x22', '32x32', '48x48', '256x256', 'scalable']
+ install_subdir('icons/' + size, install_dir: iconsdir)
+endforeach
+
+install_subdir('images/', install_dir: join_paths(get_option('datadir'), meson.project_name()))
+
+resource_files = files('gnome-clocks.gresource.xml')
+resources = gnome.compile_resources('org.gnome.clocks', resource_files,
+ c_name: 'resources'
+)
+
+custom_target('desktop-file',
+ input: 'org.gnome.clocks.desktop.in',
+ output: 'org.gnome.clocks.desktop',
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'applications'),
+ command: [msgfmt, '--desktop',
+ '--template', '@INPUT@', '-d', podir, '-o', '@OUTPUT@',
+ '--keyword=X-GNOME-FullName', '--keyword=X-Geoclue-Reason',
+ '--keyword=Name', '--keyword=GenericName', '--keyword=Comment', '--keyword=Keywords'
+ ]
+)
+
+dbusconf = configuration_data()
+dbusconf.set('bindir', join_paths(get_option('prefix'), get_option('bindir')))
+configure_file(
+ input: 'org.gnome.clocks.service.in',
+ output: 'org.gnome.clocks.service',
+ configuration: dbusconf,
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services'),
+)
+
+custom_target('appdata-file',
+ input: 'org.gnome.clocks.appdata.xml.in',
+ output: 'org.gnome.clocks.appdata.xml',
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'appdata'),
+ command: [msgfmt, '--xml',
+ '--template', '@INPUT@', '-d', podir, '-o', '@OUTPUT@'],
+)
+
+install_data('org.gnome.clocks.search-provider.ini',
+ install_dir: join_paths(get_option('datadir'), 'gnome-shell', 'search-providers'),
+)
+
+gsettingsconf = configuration_data()
+gsettingsconf.set('GETTEXT_PACKAGE', meson.project_name())
+configure_file(
+ input: 'org.gnome.clocks.gschema.xml.in',
+ output: 'org.gnome.clocks.gschema.xml',
+ configuration: gsettingsconf,
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas'),
+)
diff --git a/help/meson.build b/help/meson.build
new file mode 100644
index 0000000..dd5bd83
--- /dev/null
+++ b/help/meson.build
@@ -0,0 +1,42 @@
+help_files = [
+ 'alarm-add.page',
+ 'alarm-edit.page',
+ 'alarm-remove.page',
+ 'alarm-snooze-stop.page',
+ 'stopwatch.page',
+ 'timer.page',
+ 'world-add.page',
+ 'world-check.page',
+ 'world-remove.page',
+ 'index.page',
+ 'legal.xml'
+]
+
+help_media = [
+ 'figures/gnome-clocks.png'
+]
+
+help_linguas = [
+ 'ca',
+ 'cs',
+ 'da',
+ 'de',
+ 'el',
+ 'es',
+ 'fi',
+ 'fr',
+ 'gl',
+ 'hu',
+ 'id',
+ 'ko',
+ 'nl',
+ 'pt_BR',
+ 'ru',
+ 'sv'
+]
+
+gnome.yelp(meson.project_version(),
+ sources: help_files,
+ media: help_media,
+ languages: help_linguas,
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..61f6f70
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,43 @@
+project('gnome-clocks', ['vala', 'c'],
+ version: '3.23.0',
+ license: 'GPL2+',
+ meson_version: '>= 0.36',
+)
+
+gnome = import('gnome')
+i18n = import('i18n')
+
+glib = dependency('glib-2.0', version: '>=2.44')
+gio = dependency('gio-2.0', version: '>=2.44')
+gobject = dependency('gobject-2.0', version: '>=2.44')
+gtk = dependency('gtk+-3.0', version: '>=3.20')
+gsound = dependency('gsound', version: '>=0.98')
+gweather = dependency('gweather-3.0', version: '>=3.14')
+gnomedesktop = dependency('gnome-desktop-3.0', version: '>=3.8')
+geocodeglib = dependency('geocode-glib-1.0', version: '>=1.0')
+libgeoclue = dependency('libgeoclue-2.0', version: '>=2.4')
+
+cc = meson.get_compiler('c')
+math = cc.find_library('m', required: false)
+
+msgfmt = find_program('msgfmt')
+podir = join_paths(meson.source_root(), 'po')
+
+conf = configuration_data()
+conf.set_quoted('G_LOG_DOMAIN', 'org.gnome.Clocks')
+conf.set_quoted('PACKAGE_NAME', meson.project_name())
+conf.set_quoted('PACKAGE_VERSION', meson.project_version())
+conf.set_quoted('VERSION', meson.project_version())
+conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
+conf.set_quoted('DATADIR', join_paths(get_option('prefix'), get_option('datadir')))
+conf.set_quoted('GNOMELOCALEDIR', join_paths(get_option('prefix'), get_option('datadir'), '/locale'))
+conf.set('HAVE__NL_TIME_FIRST_WEEKDAY', '1') # FIXME detect
+configure_file(output : 'config.h', configuration : conf)
+config_h_dir = include_directories('.')
+
+meson.add_install_script('meson_post_install.py')
+
+subdir('data')
+subdir('help')
+subdir('po')
+subdir('src')
diff --git a/meson_post_install.py b/meson_post_install.py
new file mode 100755
index 0000000..0074f0c
--- /dev/null
+++ b/meson_post_install.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python3
+
+import os
+import pathlib
+import subprocess
+
+prefix = pathlib.Path(os.environ.get('MESON_INSTALL_PREFIX', '/usr/local'))
+datadir = prefix / 'share'
+destdir = os.environ.get('DESTDIR', '')
+
+if not destdir:
+ print('Compiling gsettings schemas...')
+ subprocess.call(['glib-compile-schemas', str(datadir / 'glib-2.0' / 'schemas')])
+
+ print('Updating icon cache...')
+ subprocess.call(['gtk-update-icon-cache', '-qtf', str(datadir / 'icons' / 'hicolor')])
+
+ print('Updating desktop database...')
+ subprocess.call(['update-desktop-database', '-q', str(datadir / 'applications')])
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..10c2e80
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,82 @@
+# Once we can depend on meson 0.37
+# i18n.gettext(meson.project_name(), preset: 'glib')
+
+langs = [
+ 'af',
+ 'an',
+ 'ar',
+ 'as',
+ 'be',
+ 'bg',
+ 'bn_IN',
+ 'bs',
+ 'ca',
+ 'ca@valencia',
+ 'cs',
+ 'da',
+ 'de',
+ 'el',
+ 'en_GB',
+ 'eo',
+ 'es',
+ 'et',
+ 'eu',
+ 'fa',
+ 'fi',
+ 'fr',
+ 'fur',
+ 'ga',
+ 'gd',
+ 'gl',
+ 'gu',
+ 'he',
+ 'hi',
+ 'hu',
+ 'id',
+ 'is',
+ 'it',
+ 'ja',
+ 'kk',
+ 'kn',
+ 'ko',
+ 'lt',
+ 'lv',
+ 'ml',
+ 'mr',
+ 'nb',
+ 'ne',
+ 'nl',
+ 'oc',
+ 'or',
+ 'pa',
+ 'pl',
+ 'pt_BR',
+ 'pt',
+ 'ro',
+ 'ru',
+ 'sk',
+ 'sl',
+ 'sr@latin',
+ 'sr',
+ 'sv',
+ 'ta',
+ 'te',
+ 'tg',
+ 'th',
+ 'tr',
+ 'ug',
+ 'uk',
+ 'vi',
+ 'zh_CN',
+ 'zh_HK',
+ 'zh_TW'
+]
+
+i18n.gettext(meson.project_name(),
+ languages: langs,
+ args: [
+ '--from-code=UTF-8',
+ '--keyword=g_dngettext:2,3',
+ '--add-comments'
+ ]
+)
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..6d1525e
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,62 @@
+vala_sources = [
+ 'alarm.vala',
+ 'application.vala',
+ 'clock.vala',
+ 'geocoding.vala',
+ 'main.vala',
+ 'search-provider.vala',
+ 'stopwatch.vala',
+ 'timer.vala',
+ 'utils.vala',
+ 'widgets.vala',
+ 'window.vala',
+ 'world.vala'
+]
+
+vapi_sources = [
+ 'config.vapi',
+]
+
+c_sources = [
+ 'cutils.c'
+]
+
+sources = [
+ vala_sources,
+ vapi_sources,
+ c_sources,
+ resources
+]
+
+vala_args = [
+ '--target-glib', '2.44',
+ '--vapidir', meson.current_source_dir(),
+ '--gresources', resource_files,
+]
+
+c_args = [
+ '-include', 'config.h',
+ '-DGWEATHER_I_KNOW_THIS_IS_UNSTABLE',
+ '-DGNOME_DESKTOP_USE_UNSTABLE_API'
+]
+
+dependencies = [
+ glib,
+ gio,
+ gobject,
+ gtk,
+ gsound,
+ gweather,
+ gnomedesktop,
+ geocodeglib,
+ libgeoclue,
+ math
+]
+
+executable('gnome-clocks', sources,
+ include_directories: config_h_dir,
+ vala_args: vala_args,
+ c_args: c_args,
+ install: true,
+ dependencies: dependencies
+)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]