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 ################################################################
|
||||
AC_INIT([libnotify],
|
||||
[0.7.7],
|
||||
[https://bugzilla.gnome.org/enter_bug.cgi?product=libnotify],
|
||||
[https://gitlab.gnome.org/GNOME/libnotify/issues],
|
||||
[libnotify])
|
||||
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