Build with meson and add CI
This commit is contained in:
parent
a1bedfa65e
commit
593f260722
|
@ -0,0 +1,42 @@
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
|
||||||
|
.base_build_template: &base_build
|
||||||
|
stage: build
|
||||||
|
image: ubuntu:devel
|
||||||
|
|
||||||
|
.ubuntu_deps_install_template: &ubuntu_deps_install
|
||||||
|
apt-get update &&
|
||||||
|
apt-get install -q -y --no-install-recommends
|
||||||
|
gobject-introspection
|
||||||
|
gtk-doc-tools
|
||||||
|
libgdk-pixbuf2.0-dev
|
||||||
|
libgirepository1.0-dev
|
||||||
|
libglib2.0-dev
|
||||||
|
libgtk-3-dev
|
||||||
|
libpopt-dev
|
||||||
|
xmlto
|
||||||
|
|
||||||
|
build:ubuntu:autogen:
|
||||||
|
<<: *base_build
|
||||||
|
before_script:
|
||||||
|
- *ubuntu_deps_install
|
||||||
|
- apt-get install -q -y --no-install-recommends
|
||||||
|
gnome-common
|
||||||
|
script:
|
||||||
|
- ./autogen.sh --enable-gtk-doc=yes
|
||||||
|
- make
|
||||||
|
- make distcheck
|
||||||
|
|
||||||
|
build:ubuntu:meson:
|
||||||
|
<<: *base_build
|
||||||
|
before_script:
|
||||||
|
- *ubuntu_deps_install
|
||||||
|
- apt-get install -q -y --no-install-recommends
|
||||||
|
ninja-build
|
||||||
|
python3-pip
|
||||||
|
python3-setuptools
|
||||||
|
- pip3 install meson
|
||||||
|
script:
|
||||||
|
- meson _build -Dgtk_doc=true -Ddocbook_docs=enabled -Dtests=true
|
||||||
|
- ninja -C _build
|
|
@ -0,0 +1,4 @@
|
||||||
|
/* config.h.meson */
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#mesondefine VERSION
|
|
@ -5,7 +5,7 @@ dnl # Initialize autoconf
|
||||||
dnl ################################################################
|
dnl ################################################################
|
||||||
AC_INIT([libnotify],
|
AC_INIT([libnotify],
|
||||||
[0.7.7],
|
[0.7.7],
|
||||||
[https://bugzilla.gnome.org/enter_bug.cgi?product=libnotify],
|
[https://gitlab.gnome.org/GNOME/libnotify/issues],
|
||||||
[libnotify])
|
[libnotify])
|
||||||
AC_PREREQ([2.63])
|
AC_PREREQ([2.63])
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
docbook_docs = get_option('docbook_docs')
|
||||||
|
if not docbook_docs.disabled()
|
||||||
|
xmlto = find_program('xmlto', required: docbook_docs.enabled())
|
||||||
|
|
||||||
|
if xmlto.found()
|
||||||
|
spec_files = ['notification-spec']
|
||||||
|
|
||||||
|
foreach spec: spec_files
|
||||||
|
custom_target(spec + '.html',
|
||||||
|
output: spec + '.html',
|
||||||
|
input: spec + '.xml',
|
||||||
|
depend_files: 'config.xsl',
|
||||||
|
command: [xmlto,
|
||||||
|
'xhtml-nochunks',
|
||||||
|
'-m', join_paths(meson.current_source_dir(), 'config.xsl'),
|
||||||
|
'-o', '@OUTDIR@',
|
||||||
|
'@INPUT@'
|
||||||
|
],
|
||||||
|
install: true,
|
||||||
|
install_dir: join_paths(docdir, 'spec'))
|
||||||
|
endforeach
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('gtk_doc')
|
||||||
|
subdir('reference')
|
||||||
|
endif
|
|
@ -0,0 +1,10 @@
|
||||||
|
gnome.gtkdoc(meson.project_name(),
|
||||||
|
mode: 'sgml',
|
||||||
|
main_sgml: meson.project_name() + '-docs.sgml',
|
||||||
|
src_dir: join_paths(meson.source_root(), meson.project_name()),
|
||||||
|
dependencies: libnotify_dep,
|
||||||
|
gobject_typesfile: meson.project_name() + '.types',
|
||||||
|
ignore_headers: ['notify-enum-types.h', 'notify-marshal.h', 'internal.h'],
|
||||||
|
scan_args: [ '--deprecated-guards=LIBNOTIFY_DISABLE_DEPRECATED' ],
|
||||||
|
install: true,
|
||||||
|
)
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
global:
|
||||||
|
notify_*;
|
||||||
|
local:
|
||||||
|
*;
|
||||||
|
};
|
|
@ -0,0 +1,84 @@
|
||||||
|
libnotify_includedir = join_paths(includedir, meson.project_name())
|
||||||
|
|
||||||
|
headers = [
|
||||||
|
'notify.h',
|
||||||
|
'notification.h',
|
||||||
|
]
|
||||||
|
|
||||||
|
sources = [
|
||||||
|
'notify.c',
|
||||||
|
'notification.c',
|
||||||
|
]
|
||||||
|
|
||||||
|
features_data = configuration_data()
|
||||||
|
features_data.set('LIBNOTIFY_MAJOR_VERSION', VERSION_ARRAY[0])
|
||||||
|
features_data.set('LIBNOTIFY_MINOR_VERSION', VERSION_ARRAY[1])
|
||||||
|
features_data.set('LIBNOTIFY_MICRO_VERSION', VERSION_ARRAY[2])
|
||||||
|
|
||||||
|
headers += configure_file(
|
||||||
|
input: 'notify-features.h.in',
|
||||||
|
output: 'notify-features.h',
|
||||||
|
configuration: features_data)
|
||||||
|
|
||||||
|
enum_types = gnome.mkenums_simple('@0@-enum-types'.format(LIBNAME),
|
||||||
|
sources : headers,
|
||||||
|
install_header: true,
|
||||||
|
install_dir: libnotify_includedir
|
||||||
|
)
|
||||||
|
|
||||||
|
marshal = gnome.genmarshal('@0@-marshal'.format(LIBNAME),
|
||||||
|
prefix: '@0@_marshal'.format(LIBNAME),
|
||||||
|
sources: '@0@-marshal.list'.format(LIBNAME),
|
||||||
|
)
|
||||||
|
|
||||||
|
libnotify_cflags = [
|
||||||
|
'-DG_LOG_DOMAIN="libnotify"',
|
||||||
|
]
|
||||||
|
|
||||||
|
mapfile = meson.project_name() + '.map'
|
||||||
|
libnotify_ldflags = [
|
||||||
|
'-Wl,--version-script,'+join_paths(meson.current_source_dir(), mapfile),
|
||||||
|
]
|
||||||
|
|
||||||
|
notify_dep = declare_dependency(
|
||||||
|
include_directories: default_includes,
|
||||||
|
dependencies: libnotify_deps,
|
||||||
|
compile_args: libnotify_cflags,
|
||||||
|
sources: headers + [enum_types[1]] + [marshal[1]],
|
||||||
|
link_args: libnotify_ldflags,
|
||||||
|
)
|
||||||
|
|
||||||
|
libnotify_lib = shared_library(LIBNAME,
|
||||||
|
dependencies: notify_dep,
|
||||||
|
sources: sources + enum_types + marshal,
|
||||||
|
version: '@0@.@1@.@2@'.format(LT_CURRENT, LT_REVISION, LT_AGE),
|
||||||
|
soversion: LT_CURRENT,
|
||||||
|
install: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
libnotify_dep = declare_dependency(
|
||||||
|
dependencies: notify_dep,
|
||||||
|
link_with: libnotify_lib
|
||||||
|
)
|
||||||
|
|
||||||
|
pkgconfig.generate(libnotify_lib,
|
||||||
|
name: meson.project_name(),
|
||||||
|
libraries: libnotify_deps,
|
||||||
|
description: 'Notifications Library',
|
||||||
|
)
|
||||||
|
|
||||||
|
introspection = get_option('introspection')
|
||||||
|
if not introspection.disabled()
|
||||||
|
find_program('g-ir-scanner', required: introspection.enabled())
|
||||||
|
gnome.generate_gir(libnotify_lib,
|
||||||
|
sources: headers + sources + enum_types,
|
||||||
|
namespace: 'Notify',
|
||||||
|
nsversion: MODULE_VERSION,
|
||||||
|
export_packages: meson.project_name(),
|
||||||
|
includes: ['GLib-2.0', 'GdkPixbuf-2.0'],
|
||||||
|
extra_args: '--c-include=@0@/@1@.h'.format(meson.project_name(), LIBNAME),
|
||||||
|
install: true
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
install_headers(headers, subdir: libnotify_includedir)
|
|
@ -0,0 +1,56 @@
|
||||||
|
project('libnotify',
|
||||||
|
'c',
|
||||||
|
version: '0.7.7',
|
||||||
|
meson_version: '>= 0.47.0')
|
||||||
|
|
||||||
|
gnome = import('gnome')
|
||||||
|
pkgconfig = import('pkgconfig')
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# libtool versioning
|
||||||
|
################################################################
|
||||||
|
#
|
||||||
|
# +1 : 0 : +1 == new interface that does not break old one.
|
||||||
|
# +1 : 0 : 0 == removed an interface. Breaks old apps.
|
||||||
|
# ? : +1 : ? == internal changes that doesn't break anything.
|
||||||
|
#
|
||||||
|
# CURRENT : REVISION : AGE
|
||||||
|
#
|
||||||
|
LT_CURRENT=4
|
||||||
|
LT_REVISION=0
|
||||||
|
LT_AGE=0
|
||||||
|
|
||||||
|
VERSION_ARRAY = meson.project_version().split('.')
|
||||||
|
MODULE_VERSION = '@0@.@1@'.format(VERSION_ARRAY[0], VERSION_ARRAY[1])
|
||||||
|
LIBNAME = meson.project_name().split('lib')[1]
|
||||||
|
|
||||||
|
default_includes = include_directories('.')
|
||||||
|
|
||||||
|
prefix = get_option('prefix')
|
||||||
|
includedir = join_paths(prefix, get_option('includedir'))
|
||||||
|
docdir = join_paths(prefix, get_option('datadir'), 'doc', meson.project_name())
|
||||||
|
|
||||||
|
libnotify_deps = []
|
||||||
|
extra_deps = []
|
||||||
|
|
||||||
|
gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0')
|
||||||
|
glib_dep = dependency('glib-2.0', version: '>= 2.26.0')
|
||||||
|
gio_dep = dependency('gio-2.0', version: glib_dep.version())
|
||||||
|
gtk_dep = dependency('gtk+-3.0', version: '>= 2.90', required: get_option('tests'))
|
||||||
|
|
||||||
|
libnotify_deps = [gdk_pixbuf_dep, gio_dep, glib_dep]
|
||||||
|
tests_deps = [gtk_dep]
|
||||||
|
|
||||||
|
conf = configuration_data()
|
||||||
|
conf.set_quoted('VERSION', meson.project_version())
|
||||||
|
configure_file(input: 'config.h.meson',
|
||||||
|
output : 'config.h',
|
||||||
|
configuration : conf)
|
||||||
|
|
||||||
|
subdir('libnotify')
|
||||||
|
subdir('tools')
|
||||||
|
subdir('docs')
|
||||||
|
|
||||||
|
if get_option('tests')
|
||||||
|
subdir('tests')
|
||||||
|
endif
|
|
@ -0,0 +1,16 @@
|
||||||
|
option('tests',
|
||||||
|
type: 'boolean',
|
||||||
|
value: true,
|
||||||
|
description: 'Build tests')
|
||||||
|
option('introspection',
|
||||||
|
type: 'feature',
|
||||||
|
value: 'enabled',
|
||||||
|
description: 'Enable GObject introspection')
|
||||||
|
option('gtk_doc',
|
||||||
|
type: 'boolean',
|
||||||
|
value: true,
|
||||||
|
description: 'Enable generating the API reference (depends on GTK-Doc)')
|
||||||
|
option('docbook_docs',
|
||||||
|
type: 'feature',
|
||||||
|
value: 'auto',
|
||||||
|
description: 'Build DocBook documentation (requires xmlto)')
|
|
@ -0,0 +1,28 @@
|
||||||
|
test_progs = [
|
||||||
|
'replace',
|
||||||
|
'replace-widget',
|
||||||
|
'server-info',
|
||||||
|
'default-action',
|
||||||
|
'multi-actions',
|
||||||
|
'action-icons',
|
||||||
|
'image',
|
||||||
|
'basic',
|
||||||
|
'error',
|
||||||
|
'markup',
|
||||||
|
'persistence',
|
||||||
|
'removal',
|
||||||
|
'resident',
|
||||||
|
'rtl',
|
||||||
|
'size-changes',
|
||||||
|
'transient',
|
||||||
|
'urgency',
|
||||||
|
'xy',
|
||||||
|
'xy-actions',
|
||||||
|
'xy-stress',
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach tprog: test_progs
|
||||||
|
executable('test-' + tprog, ['test-' + tprog + '.c'],
|
||||||
|
dependencies: [libnotify_dep, tests_deps],
|
||||||
|
)
|
||||||
|
endforeach
|
|
@ -0,0 +1,7 @@
|
||||||
|
progs = ['notify-send']
|
||||||
|
|
||||||
|
foreach prog: progs
|
||||||
|
executable(prog, [prog + '.c'],
|
||||||
|
dependencies: libnotify_dep,
|
||||||
|
install: true)
|
||||||
|
endforeach
|
Loading…
Reference in New Issue