[gnome-screenshot] Add Meson build



commit 98eb1b9d5363862c0961c2eea8a67488b7ca52f3
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Mon May 29 13:18:46 2017 +0100

    Add Meson build
    
    Meson is a meta-build system that has several advantages over the
    existing Autotools build:
    
      - it's faster
      - it's easier to understand
      - it's well maintained
      - it's well integrated with the GNOME tooling
    
    Various projects in the GNOME ecosystem are moving away from Autootols
    and using Meson as a replacement.

 build-aux/make_release.sh |   23 ++++++++++++++++
 build-aux/postinstall.py  |   27 +++++++++++++++++++
 meson.build               |   51 ++++++++++++++++++++++++++++++++++++
 po/meson.build            |    1 +
 src/meson.build           |   63 +++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 165 insertions(+), 0 deletions(-)
---
diff --git a/build-aux/make_release.sh b/build-aux/make_release.sh
new file mode 100755
index 0000000..4fd88ad
--- /dev/null
+++ b/build-aux/make_release.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+set -x
+
+test -n "$srcdir" || srcdir=$1
+test -n "$srcdir" || srcdir=.
+
+cd "$srcdir"
+
+PROJECT=gnome-screenshot
+VERSION=$(git describe --abbrev=0)
+NAME="${PROJECT}-${VERSION}"
+
+rm -f "${NAME}.tar"
+
+echo "Creating git tree archiveā€¦"
+git archive --prefix="${NAME}/" --format=tar HEAD > ${NAME}.tar
+
+rm -f "${NAME}.tar.xz"
+
+echo "Compressing archiveā€¦"
+xz -f "${NAME}.tar"
+
+set +x
diff --git a/build-aux/postinstall.py b/build-aux/postinstall.py
new file mode 100755
index 0000000..81afb18
--- /dev/null
+++ b/build-aux/postinstall.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+
+import os
+import subprocess
+
+prefix = os.environ.get('MESON_INSTALL_PREFIX', '/usr/local')
+datadir = os.path.join(prefix, 'share')
+
+# Packaging tools define DESTDIR and this isn't needed for them
+if 'DESTDIR' not in os.environ:
+    print('Updating icon cache...')
+    icon_cache_dir = os.path.join(datadir, 'icons', 'hicolor')
+    if not os.path.exists(icon_cache_dir):
+        os.makedirs(icon_cache_dir)
+    subprocess.call(['gtk-update-icon-cache', '-qtf', icon_cache_dir])
+
+    print('Updating desktop database...')
+    desktop_database_dir = os.path.join(datadir, 'applications')
+    if not os.path.exists(desktop_database_dir):
+        os.makedirs(desktop_database_dir)
+    subprocess.call(['update-desktop-database', '-q', desktop_database_dir])
+
+    print('Compiling GSettings schemas...')
+    schemas_dir = os.path.join(datadir, 'glib-2.0', 'schemas')
+    if not os.path.exists(schemas_dir):
+        os.makedirs(schemas_dir)
+    subprocess.call(['glib-compile-schemas', schemas_dir])
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..2b91866
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,51 @@
+project('gnome-screenshot', 'c',
+        version: '3.23.0',
+        license: 'GPLv2+',
+        meson_version: '>= 0.40.1',
+        default_options: [
+          'buildtype=debugoptimized',
+          'warning_level=1',
+          'c_std=c99',
+        ])
+
+add_project_arguments([ '-D_POSIX_C_SOURCE', '-D_DEFAULT_SOURCE' ], language: 'c')
+
+cc = meson.get_compiler('c')
+
+gnome_screenshot_prefix = get_option('prefix')
+gnome_screenshot_bindir = join_paths(gnome_screenshot_prefix, get_option('bindir'))
+gnome_screenshot_datadir = join_paths(gnome_screenshot_prefix, get_option('datadir'))
+gnome_screenshot_libexecdir = join_paths(gnome_screenshot_prefix, get_option('libexecdir'))
+gnome_screenshot_localedir = join_paths(gnome_screenshot_datadir, 'locale')
+gnome_screenshot_appsdir = join_paths(gnome_screenshot_datadir, 'applications')
+gnome_screenshot_appdatadir = join_paths(gnome_screenshot_datadir, 'metainfo')
+gnome_screenshot_servicesdir = join_paths(gnome_screenshot_datadir, 'dbus-1', 'services')
+gnome_screenshot_schemadir = join_paths(gnome_screenshot_datadir, 'glib-2.0', 'schemas')
+
+glib_req_version = '>= 2.35.1'
+gtk_req_version = '>= 3.0.0'
+
+mathlib_dep = cc.find_library('m', required: false)
+x11_dep = [ dependency('x11'), dependency('xext') ]
+glib_dep = dependency('glib-2.0', version: glib_req_version)
+gtk_dep = dependency('gtk+-3.0', version: gtk_req_version)
+canberra_dep = dependency('libcanberra-gtk3')
+
+config_h = configuration_data()
+config_h.set_quoted('VERSION', meson.project_version())
+config_h.set_quoted('GETTEXT_PACKAGE', meson.project_name())
+
+if cc.has_header('X11/extensions/shape.h')
+  config_h.set('HAVE_X11_EXTENSIONS_SHAPE_H', 1)
+endif
+
+configure_file(output: 'config.h', configuration: config_h)
+
+root_inc = include_directories('.')
+
+i18n = import('i18n')
+
+subdir('src')
+subdir('po')
+
+meson.add_install_script('build-aux/postinstall.py')
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..e9b77d7
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1 @@
+i18n.gettext(meson.project_name(), preset: 'glib')
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..8fe9855
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,63 @@
+gnome = import('gnome')
+
+sources = [
+  'gnome-screenshot.c',
+
+  'cheese-flash.c',
+
+  'screenshot-application.c',
+  'screenshot-area-selection.c',
+  'screenshot-config.c',
+  'screenshot-dialog.c',
+  'screenshot-filename-builder.c',
+  'screenshot-interactive-dialog.c',
+  'screenshot-shadow.c',
+  'screenshot-utils.c',
+]
+
+resources = gnome.compile_resources('screenshot-resources',
+                                    'gnome-screenshot.gresource.xml',
+                                    source_dir: '.',
+                                    c_name: 'screenshot')
+
+executable('gnome-screenshot', sources + resources,
+           include_directories: [ root_inc, include_directories('.') ],
+           dependencies: [ mathlib_dep, x11_dep, glib_dep, gtk_dep, canberra_dep ],
+           c_args: [
+             '-DLOCALEDIR="@0@"'.format(gnome_screenshot_localedir),
+             '-DGLIB_DISABLE_DEPRECATION_WARNINGS',
+             '-DGDK_DISABLE_DEPRECATION_WARNINGS',
+           ],
+           install: true)
+
+i18n.merge_file('desktop',
+                type: 'desktop',
+                input: 'org.gnome.Screenshot.desktop.in',
+                output: 'org.gnome.Screenshot.desktop',
+                po_dir: join_paths(meson.current_source_dir(), '../po'),
+                install: true,
+                install_dir: gnome_screenshot_appsdir)
+
+i18n.merge_file('desktop',
+                input: 'org.gnome.Screenshot.metainfo.xml.in',
+                output: 'org.gnome.Screenshot.metainfo.xml',
+                po_dir: join_paths(meson.current_source_dir(), '../po'),
+                install: true,
+                install_dir: gnome_screenshot_appdatadir)
+
+service_conf = configuration_data ()
+service_conf.set('bindir', gnome_screenshot_bindir)
+configure_file(input: 'org.gnome.Screenshot.service.in',
+               output: 'org.gnome.Screenshot.service',
+               configuration: service_conf,
+               install: true,
+               install_dir: gnome_screenshot_servicesdir)
+
+install_data('org.gnome.gnome-screenshot.gschema.xml',
+             install_dir: gnome_screenshot_schemadir)
+
+install_data('gnome-screenshot.1',
+             install_dir: join_paths(gnome_screenshot_datadir, 'man', 'man1'))
+
+install_data('gnome-screenshot.convert',
+             install_dir: join_paths(gnome_screenshot_datadir, 'GConf', 'gsettings'))


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]