[cheese/inigomartinez/cheese-meson] build: Port to meson build system
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cheese/inigomartinez/cheese-meson] build: Port to meson build system
- Date: Mon, 29 Jul 2019 19:33:06 +0000 (UTC)
commit 306f19603a817c95292eaad0fe053f9e3f217c2d
Author: Iñigo Martínez <inigomartinez gmail com>
Date: Thu Dec 13 18:09:28 2018 +0100
build: Port to meson build system
meson is a build system focused on speed an ease of use, which
helps speeding up the software development. This patch adds meson
support along autotools.
data/meson.build | 72 +++++++++++++
docs/reference/meson.build | 65 ++++++++++++
help/LINGUAS | 19 ++++
help/meson.build | 29 ++++++
libcheese/cheese-enums.c.template | 42 ++++++++
libcheese/cheese-enums.h.template | 25 +++++
libcheese/cheese-gtk.map | 32 ++++++
libcheese/meson.build | 164 ++++++++++++++++++++++++++++++
meson.build | 208 ++++++++++++++++++++++++++++++++++++++
meson_options.txt | 5 +
meson_post_install.py | 15 +++
po/meson.build | 1 +
src/meson.build | 38 +++++++
tests/meson.build | 48 +++++++++
14 files changed, 763 insertions(+)
---
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 00000000..051341f2
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,72 @@
+resource_data = files(
+ 'cheese-viewport.json',
+ 'cheese-main-window.ui',
+ 'cheese-prefs.ui',
+ 'headerbar.ui',
+ 'menus.ui',
+ 'pixmaps/cheese-1.svg',
+ 'pixmaps/cheese-2.svg',
+ 'pixmaps/cheese-3.svg',
+ 'pixmaps/thumbnail-frame.png',
+)
+
+resource_sources = gnome.compile_resources(
+ 'cheese-resource',
+ cheese_namespace + '.gresource.xml',
+ c_name: cheese_name,
+ dependencies: resource_data,
+ export: true,
+ install_header: true,
+ install_dir: cheese_includedir / cheese_name,
+)
+
+desktop = cheese_namespace + '.desktop'
+
+desktop_in = configure_file(
+ input: desktop + '.in.in',
+ output: '@BASENAME@',
+ configuration: {'PACKAGE_VERSION': cheese_version},
+)
+
+custom_target(
+ desktop,
+ input: desktop_in,
+ output: '@BASENAME@',
+ command: intltool_desktop_cmd,
+ install: true,
+ install_dir: cheese_datadir / 'applications',
+)
+
+appdata = cheese_namespace + '.appdata.xml'
+
+custom_target(
+ appdata,
+ input: appdata + '.in',
+ output: '@BASENAME@',
+ command: intltool_xml_cmd,
+ install: true,
+ install_dir: cheese_datadir / 'metainfo',
+)
+
+configure_file(
+ input: cheese_namespace + '.service.in',
+ output: '@BASENAME@',
+ configuration: {'bindir': cheese_prefix / cheese_bindir},
+ install: true,
+ install_dir: dbus_session_bus_services_dir,
+)
+
+install_data(
+ cheese_namespace + '.gschema.xml',
+ install_dir: gio_schemasdir,
+)
+
+install_data(
+ 'icons/scalable/' + cheese_namespace + '.svg',
+ install_dir: cheese_datadir / 'icons/hicolor/scalable/apps',
+)
+
+install_data(
+ 'icons/symbolic/' + cheese_namespace + '-symbolic.svg',
+ install_dir: cheese_datadir / 'icons/hicolor/symbolic/apps',
+)
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
new file mode 100644
index 00000000..5df94fec
--- /dev/null
+++ b/docs/reference/meson.build
@@ -0,0 +1,65 @@
+cheese_xml = files('cheese.xml')
+
+if enable_gtk_doc
+ private_headers = [
+ 'cheese-enums.h',
+ 'cheese-widget-private.h',
+ 'totem-aspect-frame.h',
+ 'um-crop-area.h',
+ ]
+
+ glib_prefix = glib_dep.get_pkgconfig_variable('prefix')
+ gtk_prefix = gtk_dep.get_pkgconfig_variable('prefix')
+
+ fixxref_args = [
+ '--html-dir=' + (cheese_prefix / gnome.gtkdoc_html_dir(cheese_name)),
+ '--extra-dir=' + (glib_prefix / gnome.gtkdoc_html_dir('glib')),
+ '--extra-dir=' + (glib_prefix / gnome.gtkdoc_html_dir('gio')),
+ '--extra-dir=' + (gtk_prefix / gnome.gtkdoc_html_dir('gdk')),
+ '--extra-dir=' + (gtk_prefix / gnome.gtkdoc_html_dir('gdk-pixbuf')),
+ '--extra-dir=' + (gtk_prefix / gnome.gtkdoc_html_dir('gtk')),
+ ]
+
+ version_xml = configure_file(
+ input: 'version.xml.in',
+ output: '@BASENAME@',
+ configuration: {'PACKAGE_VERSION': cheese_version},
+ )
+
+ gnome.gtkdoc(
+ cheese_name,
+ main_xml: cheese_name + '-docs.xml',
+ src_dir: libcheese_inc,
+ ignore_headers: private_headers,
+ include_directories: top_inc,
+ dependencies: libcheese_gtk_dep,
+ namespace: cheese_name,
+ scan_args: '--rebuild-types',
+ fixxref_args: fixxref_args,
+ html_assets: 'images/cheese_architecture.png',
+ content_files: cheese_xml + [version_xml],
+ install: true,
+ )
+endif
+
+if enable_man
+ xsltproc_cmd = [
+ find_program('xsltproc'),
+ '--output', '@OUTPUT@',
+ '--nonet',
+ '--path', meson.current_build_dir(),
+ 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
+ '@INPUT@',
+ ]
+
+ output = cheese_name + '.1'
+
+ custom_target(
+ output,
+ input: cheese_xml,
+ output: output,
+ command: xsltproc_cmd,
+ install: true,
+ install_dir: cheese_mandir / 'man1',
+ )
+endif
diff --git a/help/LINGUAS b/help/LINGUAS
new file mode 100644
index 00000000..96057e68
--- /dev/null
+++ b/help/LINGUAS
@@ -0,0 +1,19 @@
+# please keep this list sorted alphabetically
+ca
+cs
+de
+el
+es
+fi
+fr
+gl
+hu
+id
+ko
+nl
+pl
+pt_BR
+ru
+sl
+sv
+zh_CN
diff --git a/help/meson.build b/help/meson.build
new file mode 100644
index 00000000..d9909733
--- /dev/null
+++ b/help/meson.build
@@ -0,0 +1,29 @@
+sources = [
+ 'burst-mode.page',
+ 'effects-apply.page',
+ 'index.page',
+ 'introduction.page',
+ 'legal.xml',
+ 'photo-delete.page',
+ 'photo-save.page',
+ 'photo-take.page',
+ 'photo-view.page',
+ 'pref-countdown.page',
+ 'pref-flash.page',
+ 'pref-fullscreen.page',
+ 'pref-image-properties.page',
+ 'pref-resolution.page',
+ 'video-record.page',
+]
+
+media = [
+ 'figures/cheese.png',
+ 'figures/effects.png',
+ 'figures/image-properties.png',
+]
+
+gnome.yelp(
+ cheese_name,
+ sources: sources,
+ media: media,
+)
diff --git a/libcheese/cheese-enums.c.template b/libcheese/cheese-enums.c.template
new file mode 100644
index 00000000..011816f1
--- /dev/null
+++ b/libcheese/cheese-enums.c.template
@@ -0,0 +1,42 @@
+/*** BEGIN file-header ***/
+#include "cheese-enums.h"
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@filename@" */
+#include "@filename@"
+/*** END file-production ***/
+
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type (void)
+{
+ static GType type = 0;
+
+ if (!type)
+ {
+ static const G@Type@Value _@enum_name@_values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+ { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+ { 0, NULL, NULL }
+ };
+
+ type = g_@type@_register_static ("@EnumName@", _@enum_name@_values);
+ }
+
+ return type;
+}
+
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+
+/*** END file-tail ***/
diff --git a/libcheese/cheese-enums.h.template b/libcheese/cheese-enums.h.template
new file mode 100644
index 00000000..bcac735a
--- /dev/null
+++ b/libcheese/cheese-enums.h.template
@@ -0,0 +1,25 @@
+/*** BEGIN file-header ***/
+
+#ifndef CHEESE_ENUMS_H_
+#define CHEESE_ENUMS_H_
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+#define CHEESE_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+
+#endif /* CHEESE_ENUMS_H_ */
+/*** END file-tail ***/
diff --git a/libcheese/cheese-gtk.map b/libcheese/cheese-gtk.map
new file mode 100644
index 00000000..6ac18051
--- /dev/null
+++ b/libcheese/cheese-gtk.map
@@ -0,0 +1,32 @@
+{
+global:
+ cheese_avatar_chooser_get_picture;
+ cheese_avatar_chooser_get_type;
+ cheese_avatar_chooser_new;
+ cheese_avatar_widget_get_picture;
+ cheese_avatar_widget_get_type;
+ cheese_avatar_widget_new;
+ cheese_camera_cat;
+ cheese_camera_device_cat;
+ cheese_camera_device_get_type;
+ cheese_camera_device_monitor_coldplug;
+ cheese_camera_device_monitor_get_type;
+ cheese_camera_device_monitor_new;
+ cheese_camera_device_monitor_new_async;
+ cheese_camera_device_monitor_new_finish;
+ cheese_camera_get_type;
+ cheese_flash_fire;
+ cheese_flash_get_type;
+ cheese_flash_new;
+ cheese_gtk_init;
+ cheese_video_format_get_type;
+ cheese_widget_get_camera;
+ cheese_widget_get_error;
+ cheese_widget_get_type;
+ cheese_widget_get_video_area;
+ cheese_widget_new;
+ cheese_widget_state_get_type;
+ um_crop_area_get_type;
+local:
+ *;
+};
diff --git a/libcheese/meson.build b/libcheese/meson.build
new file mode 100644
index 00000000..a326329a
--- /dev/null
+++ b/libcheese/meson.build
@@ -0,0 +1,164 @@
+libcheese_inc = include_directories('.')
+
+enum_headers = files('cheese-widget.h')
+
+gir_headers = files(
+ 'cheese-camera-device.h',
+ 'cheese-camera-device-monitor.h',
+ 'cheese-camera.h',
+ 'cheese-effect.h',
+)
+
+private_gir_headers = files('cheese-fileutil.h')
+
+headers = enum_headers + gir_headers + files(
+ 'cheese-avatar-chooser.h',
+ 'cheese-avatar-widget.h',
+ 'cheese-gtk.h',
+ 'cheese.h',
+)
+
+install_headers(
+ headers,
+ subdir: cheese_name,
+)
+
+sources = files(
+ 'cheese.c',
+ 'cheese-camera.c',
+ 'cheese-camera-device.c',
+ 'cheese-camera-device-monitor.c',
+ 'cheese-effect.c',
+ 'cheese-fileutil.c',
+)
+
+deps = [
+ clutter_dep,
+ gdk_pixbuf_dep,
+ gio_dep,
+ glib_dep,
+ gstreamer_dep,
+]
+
+private_deps = [
+ clutter_gst_dep,
+ gstreamer_pbutils_dep,
+ gstreamer_plugins_bad_dep,
+ x11_dep,
+]
+
+libcheese = shared_library(
+ cheese_name,
+ version: libcheese_version,
+ sources: sources,
+ include_directories: top_inc,
+ dependencies: deps + private_deps,
+ c_args: '-DG_LOG_DOMAIN="@0@"'.format(cheese_name),
+ install: true,
+)
+
+libcheese_dep = declare_dependency(
+ include_directories: libcheese_inc,
+ dependencies: deps,
+ link_with: libcheese,
+)
+
+pkg.generate(
+ libcheese,
+ version: cheese_version,
+ name: cheese_name,
+ description: 'Cheese webcam utilities',
+ filebase: cheese_name,
+ subdirs: cheese_name,
+ requires: deps,
+ requires_private: private_deps,
+ variables: 'exec_prefix=${prefix}',
+)
+
+# GObject Introspection
+if enable_gir
+ incs = [
+ 'Clutter-1.0',
+ 'GdkPixbuf-2.0',
+ 'Gst-1.0',
+ ]
+
+ libcheese_gir = gnome.generate_gir(
+ libcheese,
+ # FIXME: why include private headers if they are not installed?
+ # FIXME: WidgetState enums are missing. However, they actually belong to libcheese_gtk.
+ sources: sources + gir_headers + private_gir_headers,
+ includes: incs,
+ namespace: meson.project_name(),
+ nsversion: cheese_api_version,
+ export_packages: cheese_name,
+ install: true,
+ )
+endif
+
+um_crop_area_source = files('um-crop-area.c')
+
+sources = um_crop_area_source + files(
+ 'cheese-avatar-chooser.c',
+ 'cheese-avatar-widget.c',
+ 'cheese-flash.c',
+ 'cheese-gtk.c',
+ 'cheese-widget.c',
+ 'totem-aspect-frame.c',
+)
+
+enum_types = 'cheese-enums'
+
+enum_sources = gnome.mkenums(
+ enum_types,
+ sources: enum_headers,
+ c_template: enum_types + '.c.template',
+ h_template: enum_types + '.h.template',
+)
+
+deps = [
+ clutter_gtk_dep,
+ gtk_dep,
+]
+
+private_deps = [
+ clutter_gst_dep,
+ libcanberra_gtk3_dep,
+ m_dep,
+ x11_dep,
+]
+
+symbol_map = meson.current_source_dir() / 'cheese-gtk.map'
+ldflags = cc.get_supported_link_arguments('-Wl,--version-script,@0@'.format(symbol_map))
+
+libcheese_gtk_name = cheese_name + '-gtk'
+
+libcheese_gtk = shared_library(
+ libcheese_gtk_name,
+ version: libcheese_gtk_version,
+ sources: sources + enum_sources,
+ include_directories: top_inc,
+ dependencies: deps + private_deps + [libcheese_dep],
+ c_args: '-DG_LOG_DOMAIN="@0@"'.format(libcheese_gtk_name),
+ link_args: ldflags,
+ link_depends: symbol_map,
+ install: true,
+)
+
+libcheese_gtk_dep = declare_dependency(
+ sources: enum_sources[1],
+ dependencies: deps + [libcheese_dep],
+ link_with: libcheese_gtk,
+)
+
+pkg.generate(
+ libcheese_gtk,
+ version: cheese_version,
+ name: libcheese_gtk_name,
+ description: 'Cheese webcam widgets',
+ filebase: libcheese_gtk_name,
+ subdirs: cheese_name,
+ requires: deps,
+ #requires_private: private_deps,
+ variables: 'exec_prefix=${prefix}',
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 00000000..0265a019
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,208 @@
+project(
+ 'Cheese', ['c', 'vala'],
+ version: '3.32.0',
+ license: 'GPL2',
+ default_options: 'buildtype=debugoptimized',
+ meson_version: '>= 0.50.0',
+)
+
+cheese_name = meson.project_name().to_lower()
+
+cheese_version = meson.project_version()
+version_array = cheese_version.split('.')
+cheese_major_version = version_array[0].to_int()
+cheese_minor_version = version_array[1].to_int()
+
+cheese_api_version = cheese_major_version.to_string() + '.0'
+
+cheese_prefix = get_option('prefix')
+cheese_bindir = get_option('bindir')
+cheese_datadir = get_option('datadir')
+cheese_includedir = get_option('includedir')
+cheese_localedir = get_option('localedir')
+cheese_mandir = get_option('mandir')
+
+cheese_namespace = 'org.gnome.' + meson.project_name()
+
+#*******************************************************************************
+# Libraries
+#*******************************************************************************
+# Before making a release, the CHEESE_LT_VERSION string should be modified.
+# The string is of the form C:R:A.
+# - If interfaces have been changed or added, but binary compatibility has
+# been preserved, change to C+1:0:A+1
+# - If binary compatibility has been broken (eg removed or changed interfaces)
+# change to C+1:0:0
+# - If the interface is the same as the previous version, change to C:R+1:A
+current = 8
+revision = 12
+age = 0
+libcheese_version = '@0@.@1@.@2@'.format(current - age, age, revision)
+
+current = 26
+revision = 2
+age = 1
+libcheese_gtk_version = '@0@.@1@.@2@'.format(current - age, age, revision)
+
+gnome = import('gnome')
+i18n = import('i18n')
+pkg = import('pkgconfig')
+
+source_root = meson.current_source_dir()
+
+po_dir = source_root / 'po'
+vapi_dir = source_root / 'src/vapi'
+
+intltool_merge = find_program('intltool-merge')
+intltool_cache = po_dir / '.intltool-merge-cache'
+intltool_desktop_cmd = [intltool_merge, '-d', '-u', '-c', intltool_cache, po_dir, '@INPUT@', '@OUTPUT@']
+intltool_xml_cmd = [intltool_merge, '-x', '-u', '-c', intltool_cache, po_dir, '@INPUT@', '@OUTPUT@']
+
+top_inc = include_directories('.')
+
+cc = meson.get_compiler('c')
+valac = meson.get_compiler('vala')
+
+config_h = configuration_data()
+
+# defines
+set_defines = [
+ # package
+ ['PACKAGE_LOCALEDIR', cheese_prefix / cheese_localedir],
+ ['PACKAGE_NAME', meson.project_name()],
+ ['PACKAGE_STRING', '@0@ @1@'.format(meson.project_name(), cheese_version)],
+ ['PACKAGE_TARNAME', meson.project_name()],
+ ['PACKAGE_URL', 'https://wiki.gnome.org/Apps/Cheese'],
+ ['PACKAGE_VERSION', cheese_version],
+ # i18n
+ ['GETTEXT_PACKAGE', cheese_name],
+]
+
+foreach define: set_defines
+ config_h.set_quoted(define[0], define[1])
+endforeach
+
+# compiler flags
+common_flags = ['-DHAVE_CONFIG_H']
+
+if get_option('buildtype').contains('debug')
+ common_flags += cc.get_supported_arguments([
+ '-Wnested-externs',
+ '-Wstrict-prototypes',
+ '-Werror=format=2',
+ '-Werror=implicit-function-declaration',
+ '-Werror=init-self',
+ '-Werror=missing-include-dirs',
+ '-Werror=missing-prototypes',
+ '-Werror=pointer-arith',
+ '-Werror=return-type',
+ ])
+endif
+
+add_project_arguments(common_flags, language: 'c')
+
+#*******************************************************************************
+# Check required libraries
+#*******************************************************************************
+clutter_dep = dependency('clutter-1.0', version: '>= 1.13.2')
+clutter_gst_dep = dependency('clutter-gst-3.0', version: '>= 3.0.0')
+clutter_gtk_dep = dependency('clutter-gtk-1.0')
+gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0')
+gio_dep = dependency('gio-2.0')
+glib_dep = dependency('glib-2.0', version: '>= 2.38.0')
+gnome_desktop_dep = dependency('gnome-desktop-3.0')
+gstreamer_dep = dependency('gstreamer-1.0')
+gstreamer_pbutils_dep = dependency('gstreamer-pbutils-1.0')
+gstreamer_plugins_bad_dep = dependency('gstreamer-plugins-bad-1.0', version: '>= 1.4')
+gtk_dep = dependency('gtk+-3.0', version: '>= 3.13.4')
+libcanberra_dep = dependency('libcanberra')
+libcanberra_gtk_dep = dependency('libcanberra-gtk')
+libcanberra_gtk3_dep = dependency('libcanberra-gtk3', version: '>= 0.26')
+
+m_dep = cc.find_library('m')
+
+cheese_common_dep = valac.find_library('cheese-common', dirs: vapi_dir)
+cheese_thumbview_dep = valac.find_library('cheese-thumbview', dirs: vapi_dir)
+config_dep = valac.find_library('config', dirs: vapi_dir)
+eogthumbnav_dep = valac.find_library('eogthumbnav', dirs: vapi_dir)
+posix_dep = valac.find_library('posix')
+
+x11_dep = dependency('x11')
+have_xtest = false
+if cc.has_header('X11/extensions/XTest.h', dependencies: x11_dep)
+ xtst_dep = dependency('xtst', required: false)
+ have_xtest = xtst_dep.found() and cc.has_function('XTestFakeKeyEvent', dependencies: xtst_dep)
+endif
+
+dbus_session_bus_services_dir = dependency('dbus-1').get_pkgconfig_variable(
+ 'session_bus_services_dir',
+ define_variable: ['datadir', cheese_prefix / cheese_datadir],
+)
+
+gio_schemasdir = gio_dep.get_pkgconfig_variable(
+ 'schemasdir',
+ define_variable: ['datadir', cheese_prefix / cheese_datadir],
+ default: cheese_prefix / cheese_datadir / 'glib-2.0/schemas',
+)
+
+gnome_video_effects_dep = dependency(
+ 'gnome-video-effects',
+ required: false,
+ not_found_message: 'The gnome-video-effects package is required at runtime for effects',
+)
+
+# Recommend some runtime GStreamer plugins.
+gst_inspect = find_program('gst-inspect-1.0', required: false)
+if gst_inspect.found()
+ foreach plugin: ['camerabin', 'vp8enc', 'webmmux']
+ if run_command(gst_inspect, plugin).returncode() != 0
+ warning(plugin + ' was not found. It needs to be installed before Cheese is run')
+ endif
+ endforeach
+else
+ warning('unable to check for runtime GStreamer plugin dependencies')
+endif
+
+# Check for GLib testing utilities.
+# FIXME: meson has its own test framework
+'''
+gtester = find_program('gtester', required: false)
+enable_cheese_tests = gtester.found()
+if not enable_cheese_tests
+ warning('testing disabled as the required utilities were not found')
+endif
+'''
+
+# introspection support
+enable_gir = get_option('introspection')
+if enable_gir
+ dependency('gobject-introspection-1.0', version: '>= 0.6.7')
+endif
+
+subdir('data')
+subdir('libcheese')
+subdir('src')
+
+if get_option('tests')
+ subdir('tests')
+endif
+
+subdir('po')
+subdir('help')
+
+enable_gtk_doc = get_option('gtk_doc')
+enable_man = get_option('man')
+if enable_gtk_doc or enable_man
+ subdir('docs/reference')
+endif
+
+configure_file(
+ output: 'config.h',
+ configuration: config_h,
+)
+
+meson.add_install_script(
+ 'meson_post_install.py',
+ cheese_datadir,
+ gio_schemasdir,
+)
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 00000000..ddfd1876
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,5 @@
+option('tests', type: 'boolean', value: false, description: 'Build tests')
+option('introspection', type: 'boolean', value: true, description: 'Enable introspection for this build')
+
+option('gtk_doc', type: 'boolean', value: true, description: 'use gtk-doc to build documentation')
+option('man', type: 'boolean', value: true, description: 'build manual pages')
diff --git a/meson_post_install.py b/meson_post_install.py
new file mode 100644
index 00000000..24242df0
--- /dev/null
+++ b/meson_post_install.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+
+import os
+import subprocess
+import sys
+
+if not os.environ.get('DESTDIR'):
+ prefix = os.environ['MESON_INSTALL_PREFIX']
+
+ icondir = os.path.join(prefix, sys.argv[1], 'icons', 'hicolor')
+ print('Updating icon cache...')
+ subprocess.call(['gtk-update-icon-cache', '-f', '-t', icondir])
+
+ print('Compiling gsettings schemas...')
+ subprocess.call(['glib-compile-schemas', sys.argv[2]])
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 00000000..522040ef
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1 @@
+i18n.gettext(cheese_name, preset: 'glib')
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 00000000..b1800127
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,38 @@
+sources = files(
+ 'cheese-application.vala',
+ 'cheese-countdown.vala',
+ 'cheese-effects-manager.vala',
+ 'cheese-main.vala',
+ 'cheese-preferences.vala',
+ 'cheese-window.vala',
+ 'thumbview/cheese-thumbnail.c',
+ 'thumbview/cheese-thumb-view.c',
+ 'thumbview/eog-thumb-nav.c',
+)
+
+deps = [
+ cheese_common_dep,
+ cheese_thumbview_dep,
+ config_dep,
+ gnome_desktop_dep,
+ eogthumbnav_dep,
+ libcanberra_dep,
+ libcanberra_gtk_dep,
+ libcheese_gtk_dep,
+ posix_dep,
+]
+
+cflags = [
+ '-DPACKAGE_LOCALEDIR="@0@"'.format(cheese_prefix / cheese_localedir),
+ '-DGNOME_DESKTOP_USE_UNSTABLE_API=1',
+ '-DGETTEXT_PACKAGE="@0@"'.format(cheese_name),
+]
+
+executable(
+ cheese_name,
+ sources: sources + resource_sources,
+ include_directories: top_inc,
+ dependencies: deps,
+ c_args: cflags,
+ install: true,
+)
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 00000000..d7167471
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,48 @@
+cheese_tests = [
+ 'cheese-test-camera',
+ 'cheese-test-chooser',
+ 'cheese-test-flash',
+ 'cheese-test-monitor',
+ 'cheese-test-widget',
+]
+
+foreach cheese_test: cheese_tests
+ executable(
+ cheese_test,
+ sources: cheese_test + '.c',
+ include_directories: top_inc,
+ dependencies: libcheese_gtk_dep,
+ )
+endforeach
+
+random_number = cheese_minor_version + meson.version().split('.').get(1).to_int()
+
+test_env = environment()
+test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
+test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
+test_env.set('G_DEBUG', 'gc-friendly')
+test_env.set('MALLOC_CHECK_', '2')
+test_env.set('MALLOC_PERTURB_', '@0@'.format(random_number % 256))
+
+unit_tests = [
+ ['test-libcheese', {'sources': 'test-libcheese.c', 'dependencies': libcheese_dep}],
+ ['test-libcheese-gtk', {'sources': ['test-libcheese-gtk.c'] + um_crop_area_source, 'dependencies':
libcheese_gtk_dep}],
+]
+
+if have_xtest
+ unit_tests += [['test-webcam-button', {'sources': 'test-webcam-button.c', 'dependencies': [x11_dep,
xtst_dep]}]]
+endif
+
+foreach unit_test: unit_tests
+ exe = executable(
+ unit_test[0],
+ include_directories: top_inc,
+ kwargs: unit_test[1],
+ )
+
+ test(
+ unit_test[0],
+ exe,
+ env: test_env,
+ )
+endforeach
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]