[gnome-calculator] Port build system to Meson (bug 783062)
- From: Robert Roth <robertroth src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calculator] Port build system to Meson (bug 783062)
- Date: Fri, 26 Jan 2018 18:52:30 +0000 (UTC)
commit 187ad6e033b64b47288562e9c35cad95b829c954
Author: Niels De Graef <nielsdegraef gmail com>
Date: Wed Jun 21 09:52:42 2017 +0200
Port build system to Meson (bug 783062)
* Moved mpc.vapi and mpfr.vapi to the vapi directory
* Tried to keep lists sorted when possible.
Signed-off-by: Niels De Graef <nielsdegraef gmail com>
Makefile.am | 6 +++
data/meson.build | 30 ++++++++++++++
help/meson.build | 70 +++++++++++++++++++++++++++++++++
lib/Makefile.am | 2 -
lib/config.vapi | 1 -
lib/meson.build | 44 +++++++++++++++++++++
meson.build | 72 ++++++++++++++++++++++++++++++++++
meson_post_install.py | 15 +++++++
po/meson.build | 3 +
search-provider/meson.build | 49 +++++++++++++++++++++++
src/meson.build | 90 +++++++++++++++++++++++++++++++++++++++++++
tests/meson.build | 47 ++++++++++++++++++++++
{src => vapi}/config.vapi | 0
{lib => vapi}/mpc.vapi | 0
{lib => vapi}/mpfr.vapi | 0
15 files changed, 426 insertions(+), 3 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 2e9150f..1e0be61 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,6 +2,12 @@ SUBDIRS = data lib src search-provider tests help po
AM_DISTCHECK_CONFIGURE_FLAGS = --enable-installed-tests
+EXTRA_DIST = \
+ **/meson.build \
+ meson_options.txt \
+ meson_post_install.py \
+ $(NULL)
+
MAINTAINERCLEANFILES = \
$(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL) \
$(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN) \
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..8f806b9
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,30 @@
+# Desktop file
+i18n.merge_file(
+ input: 'org.gnome.Calculator.desktop.in',
+ output: 'org.gnome.Calculator.desktop',
+ type: 'desktop',
+ po_dir: po_dir,
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'applications'),
+)
+
+# Appdata
+i18n.merge_file(
+ input: 'org.gnome.Calculator.appdata.xml.in',
+ output: 'org.gnome.Calculator.appdata.xml',
+ type: 'xml',
+ po_dir: po_dir,
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'metainfo')
+)
+
+# Gschema
+install_data('org.gnome.calculator.gschema.xml',
+ install_dir: join_paths(get_option('datadir'), 'appdata'),
+)
+
+# Manpage
+install_man(
+ 'gnome-calculator.1',
+ 'gcalccmd.1'
+)
diff --git a/help/meson.build b/help/meson.build
new file mode 100644
index 0000000..ec951af
--- /dev/null
+++ b/help/meson.build
@@ -0,0 +1,70 @@
+gnome_calculator_help_pages = [
+ 'absolute.page',
+ 'base.page',
+ 'boolean.page',
+ 'complex.page',
+ 'conv-base.page',
+ 'conv-character.page',
+ 'conv-currency.page',
+ 'conv-length.page',
+ 'conv-time.page',
+ 'conv-weight.page',
+ 'equation.page',
+ 'factorial.page',
+ 'factorize.page',
+ 'financial.page',
+ 'functions.page',
+ 'history.page',
+ 'index.page',
+ 'keyboard.page',
+ 'legal.xml',
+ 'logarithm.page',
+ 'modulus.page',
+ 'mouse.page',
+ 'number-display.page',
+ 'percentage.page',
+ 'power.page',
+ 'scientific.page',
+ 'superscript.page',
+ 'trigonometry.page',
+ 'variables.page',
+]
+
+gnome_calculator_help_media = [
+ 'figures/logo32.png',
+]
+
+gnome_calculator_help_languages = [
+ 'bg',
+ 'ca',
+ 'cs',
+ 'de',
+ 'el',
+ 'es',
+ 'eu',
+ 'fi',
+ 'fr',
+ 'gl',
+ 'hu',
+ 'it',
+ 'ja',
+ 'ko',
+ 'lv',
+ 'oc',
+ 'pt',
+ 'pt_BR',
+ 'ro',
+ 'ru',
+ 'sl',
+ 'sv',
+ 'te',
+ 'zh_CN',
+ 'zh_HK',
+ 'zh_TW',
+]
+
+gnome.yelp(meson.project_name(),
+ sources: gnome_calculator_help_pages,
+ media: gnome_calculator_help_media,
+ languages: gnome_calculator_help_languages
+)
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 6191dd6..03ba47e 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -6,9 +6,7 @@ AM_CPPFLAGS = \
$(LIBCALCULATOR_CFLAGS)
libcalculator_la_SOURCES = \
- mpfr.vapi \
mpfr-glue.vala \
- mpc.vapi \
currency.vala \
equation.vala \
equation-lexer.vala \
diff --git a/lib/meson.build b/lib/meson.build
new file mode 100644
index 0000000..150bb42
--- /dev/null
+++ b/lib/meson.build
@@ -0,0 +1,44 @@
+libcalculator_sources = [
+ 'mpfr-glue.vala',
+ 'currency.vala',
+ 'equation.vala',
+ 'equation-lexer.vala',
+ 'equation-parser.vala',
+ 'financial.vala',
+ 'function-manager.vala',
+ 'math-equation.vala',
+ 'math-function.vala',
+ 'math-variables.vala',
+ 'number.vala',
+ 'serializer.vala',
+ 'unit.vala',
+]
+
+libcalculator_vala_flags = [
+ '--target-glib', glib_min_version,
+]
+
+libcalculator_c_flags = [
+ '-include', 'config.h',
+]
+
+libcalculator_deps = [
+ gio,
+ glib,
+ gobject,
+ gtk,
+ gtksourceview,
+ libsoup,
+ libxml,
+ mpc,
+ mpfr,
+ posix,
+]
+
+libcalculator = static_library('libcalculator', libcalculator_sources,
+ dependencies: libcalculator_deps,
+ c_args: libcalculator_c_flags,
+ vala_args: libcalculator_vala_flags,
+ include_directories: config_h_dir,
+ install: true,
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..a374ee4
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,72 @@
+project('gnome-calculator', ['c', 'vala'],
+ version: '3.25.91',
+ meson_version: '>= 0.37',
+ license: 'GPLv3+',
+)
+
+gnome = import('gnome')
+i18n = import('i18n')
+
+# Some variables
+libexec_dir = join_paths(get_option('prefix'), get_option('libexecdir'))
+locale_dir = join_paths(get_option('prefix'), get_option('localedir'))
+po_dir = join_paths(meson.source_root(), 'po')
+vapi_dir = join_paths(meson.source_root(), 'vapi')
+
+# Add our custom VAPI dir
+add_project_arguments(['--vapidir', vapi_dir],
+ language: 'vala'
+)
+
+# Dependencies
+glib_min_version = '2.40.0'
+
+gio = dependency('gio-2.0', version: '>= ' + glib_min_version)
+glib = dependency('glib-2.0', version: '>= ' + glib_min_version)
+gmodule_export = dependency('gmodule-export-2.0')
+gobject = dependency('gobject-2.0', version: '>= ' + glib_min_version)
+gtk = dependency('gtk+-3.0', version: '>= 3.19.3')
+gtksourceview = dependency('gtksourceview-3.0', version: '>= 3.15.1')
+libsoup = dependency('libsoup-2.4', version: '>= 2.42')
+libxml = dependency('libxml-2.0')
+
+# Libraries
+cc = meson.get_compiler('c')
+valac = meson.get_compiler('vala')
+
+libmath = cc.find_library('m')
+mpc = declare_dependency(
+ dependencies: [
+ cc.find_library('mpc'),
+ valac.find_library('mpc', dirs: vapi_dir)
+ ]
+)
+mpfr = declare_dependency(
+ dependencies: [
+ cc.find_library('mpfr'),
+ valac.find_library('mpfr', dirs: vapi_dir)
+ ]
+)
+posix = valac.find_library('posix')
+
+# Configuration
+conf = configuration_data()
+
+conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
+conf.set_quoted('LOCALE_DIR', locale_dir)
+conf.set_quoted('VERSION', meson.project_version())
+
+configure_file(output: 'config.h', configuration: conf)
+config_h_dir = include_directories('.')
+
+# Extra scripts
+meson.add_install_script('meson_post_install.py')
+
+# Subdirs
+subdir('data')
+subdir('lib')
+subdir('src')
+subdir('search-provider')
+subdir('tests')
+subdir('help')
+subdir('po')
diff --git a/meson_post_install.py b/meson_post_install.py
new file mode 100755
index 0000000..bf320a9
--- /dev/null
+++ b/meson_post_install.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+
+import os
+import subprocess
+
+install_prefix = os.environ['MESON_INSTALL_PREFIX']
+icondir = os.path.join(install_prefix, 'share', 'icons', 'hicolor')
+schemadir = os.path.join(install_prefix, 'share', 'glib-2.0', 'schemas')
+
+if not os.environ.get('DESTDIR'):
+ print('Update icon cache...')
+ subprocess.call(['gtk-update-icon-cache', '-f', '-t', icondir])
+
+ print('Compiling gsettings schemas...')
+ subprocess.call(['glib-compile-schemas', schemadir])
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..f904cde
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,3 @@
+i18n.gettext(meson.project_name(),
+ preset: 'glib'
+)
diff --git a/search-provider/meson.build b/search-provider/meson.build
new file mode 100644
index 0000000..834271d
--- /dev/null
+++ b/search-provider/meson.build
@@ -0,0 +1,49 @@
+search_provider_sources = [
+ 'search-provider.vala',
+]
+
+search_provider_deps = [
+ gio,
+ glib,
+ gobject,
+ gtk,
+ gtksourceview,
+ mpc,
+ mpfr,
+ posix,
+]
+
+search_provider_vala_flags = [
+ '--vapidir=' + meson.current_source_dir(),
+ '--pkg', 'config',
+]
+
+search_provider_includes = [
+ config_h_dir,
+ include_directories('../lib'),
+]
+
+# The executable
+executable('gnome-calculator-search-provider', search_provider_sources,
+ dependencies: search_provider_deps,
+ link_with: libcalculator,
+ include_directories: search_provider_includes,
+ vala_args: search_provider_vala_flags,
+ install: true,
+)
+
+# The search-provider file for GNOME shell
+install_data('org.gnome.Calculator-search-provider.ini',
+ install_dir: join_paths(get_option('datadir'), 'gnome-shell', 'search-providers'),
+)
+
+# The DBUS service file
+dbusconf = configuration_data()
+dbusconf.set('libexecdir', libexec_dir)
+configure_file(
+ input: 'org.gnome.Calculator.SearchProvider.service.in',
+ output: 'org.gnome.Calculator.SearchProvider.service',
+ configuration: dbusconf,
+ install: true,
+ install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services'),
+)
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..5f374d8
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,90 @@
+# gnome-calculator executable
+gnome_calculator_vala_sources = [
+ 'gnome-calculator.vala',
+ 'math-buttons.vala',
+ 'math-converter.vala',
+ 'math-display.vala',
+ 'math-preferences.vala',
+ 'math-function-popover.vala',
+ 'math-variable-popover.vala',
+ 'math-window.vala',
+ 'math-history.vala',
+]
+
+gnome_calculator_resource_files = files('gnome-calculator.gresource.xml')
+gnome_calculator_resources = gnome.compile_resources('org.gnome.Calculator', gnome_calculator_resource_files)
+
+gnome_calculator_sources = [
+ gnome_calculator_vala_sources,
+ gnome_calculator_resources,
+]
+
+gnome_calculator_deps = [
+ glib,
+ gobject,
+ gtk,
+ gtksourceview,
+ mpc,
+ mpfr,
+ posix,
+]
+
+gnome_calculator_vala_flags = [
+ '--target-glib', glib_min_version,
+ '--vapidir=' + meson.current_source_dir(),
+ '--pkg', 'config',
+ '--gresources', gnome_calculator_resource_files,
+]
+
+gnome_calculator_c_flags = [
+ '-include', 'config.h',
+]
+
+gnome_calculator_includes = [
+ config_h_dir,
+ include_directories('../lib'),
+]
+
+executable('gnome-calculator', gnome_calculator_sources,
+ dependencies: gnome_calculator_deps,
+ link_with: libcalculator,
+ include_directories: gnome_calculator_includes,
+ vala_args: gnome_calculator_vala_flags,
+ c_args: gnome_calculator_c_flags,
+ install: true,
+)
+
+
+# gcalccmd executable
+gcalccmd_sources = [
+ 'gcalccmd.vala',
+]
+
+gcalccmd_deps = [
+ gio,
+ glib,
+ gobject,
+ gtk,
+ gtksourceview,
+ mpc,
+ mpfr,
+ posix,
+]
+
+gcalccmd_vala_flags = [
+ '--vapidir=' + meson.current_source_dir(),
+ '--pkg', 'config',
+]
+
+gcalccmd_includes = [
+ config_h_dir,
+ include_directories('../lib'),
+]
+
+executable('gcalccmd', gcalccmd_sources,
+ dependencies: gcalccmd_deps,
+ link_with: libcalculator,
+ include_directories: gcalccmd_includes,
+ vala_args: gcalccmd_vala_flags,
+ install: true,
+)
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..808c85e
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,47 @@
+# Common
+gnome_calculator_tests_deps = [
+ gio,
+ glib,
+ gobject,
+ gtk,
+ gtksourceview,
+ libmath,
+ mpc,
+ mpfr,
+ posix,
+]
+
+gnome_calculator_tests_includes = [
+ include_directories('../lib'),
+]
+
+# Tests
+test_equation_sources = [
+ 'test-equation.vala',
+]
+test_equation = executable('test-equation', test_equation_sources,
+ dependencies: gnome_calculator_tests_deps,
+ link_with: libcalculator,
+ include_directories: gnome_calculator_tests_includes,
+)
+test('Equation test', test_equation)
+
+test_number_sources = [
+ 'test-number.vala',
+]
+test_number = executable('test-number', test_number_sources,
+ dependencies: gnome_calculator_tests_deps,
+ link_with: libcalculator,
+ include_directories: gnome_calculator_tests_includes,
+)
+test('Number test', test_number)
+
+test_serializer_sources = [
+ 'test-serializer.vala',
+]
+test_serializer = executable('test-serializer', test_serializer_sources,
+ dependencies: gnome_calculator_tests_deps,
+ link_with: libcalculator,
+ include_directories: gnome_calculator_tests_includes,
+)
+test('Serializer test', test_serializer)
diff --git a/src/config.vapi b/vapi/config.vapi
similarity index 100%
rename from src/config.vapi
rename to vapi/config.vapi
diff --git a/lib/mpc.vapi b/vapi/mpc.vapi
similarity index 100%
rename from lib/mpc.vapi
rename to vapi/mpc.vapi
diff --git a/lib/mpfr.vapi b/vapi/mpfr.vapi
similarity index 100%
rename from lib/mpfr.vapi
rename to vapi/mpfr.vapi
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]