summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Techet <techet@gmail.com>2019-02-06 10:52:12 +0100
committerJiří Techet <techet@gmail.com>2019-02-06 10:52:12 +0100
commit27dbe6e1c8c0b095c313c7593e60b88350849419 (patch)
tree03b9aeb5ac5b2687f83efbb31ebe22b43abc5f02
parentfbae3ea18d3c7624c98d820e574c83fc2927dca7 (diff)
parent0da7ae335a1e479ae3c03e5d52376d199c4eeea6 (diff)
downloadlibchamplain-27dbe6e1c8c0b095c313c7593e60b88350849419.tar.gz
Merge branch 'tchaik/libchamplain-wip/tchaik/meson'
-rw-r--r--.gitlab-ci.yml71
-rw-r--r--champlain-gtk/meson.build148
-rw-r--r--champlain/meson.build273
-rw-r--r--demos/icons/meson.build14
-rw-r--r--demos/meson.build70
-rw-r--r--docs/meson.build6
-rw-r--r--docs/reference-gtk/meson.build51
-rw-r--r--docs/reference/meson.build72
-rw-r--r--meson.build156
-rw-r--r--meson_options.txt22
10 files changed, 883 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..d7474e7
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,71 @@
+image: fedora:29
+
+stages:
+ - build
+ - deploy
+
+before_script:
+ - dnf install -y gcc ccache gettext gtk-doc meson ninja-build redhat-rpm-config
+ - dnf install -y glib2-devel clutter-devel gtk3-devel clutter-gtk-devel cairo-devel sqlite-devel libsoup-devel gobject-introspection-devel
+
+.ccache-setup: &ccache-setup
+ variables:
+ CCACHE_BASEDIR: "${PWD}"
+ CCACHE_DIR: "${CCACHE_BASEDIR}/_ccache"
+
+build-champlain:
+ stage: build
+ script:
+ - mkdir -p _ccache
+ - ccache --zero-stats
+ - ccache --show-stats
+ - meson -Dwidgetry=false -Dgtk_doc=true _build .
+ - ninja -C _build
+ - ninja -C _build test
+ - ninja -C _build champlain-doc
+ - ccache --show-stats
+ artifacts:
+ name: "champlain-gtk"
+ paths:
+ - _build/docs/reference/html
+ cache:
+ key: "$CI_JOB_NAME"
+ paths:
+ - _ccache/
+ <<: *ccache-setup
+
+build-champlain-gtk:
+ stage: build
+ script:
+ - mkdir -p _ccache
+ - ccache --zero-stats
+ - ccache --show-stats
+ - meson -Dwidgetry=true -Dgtk_doc=true _build .
+ - ninja -C _build
+ - ninja -C _build test
+ - ninja -C _build champlain-gtk-doc
+ - ccache --show-stats
+ artifacts:
+ name: "champlain-gtk-doc"
+ paths:
+ - _build/docs/reference-gtk/html
+ cache:
+ key: "$CI_JOB_NAME"
+ paths:
+ - _ccache/
+ <<: *ccache-setup
+
+pages:
+ stage: deploy
+ dependencies:
+ - build-champlain
+ - build-champlain-gtk
+ script:
+ - mkdir -p public/
+ - mv _build/docs/reference/html/ public/champlain/
+ - mv _build/docs/reference-gtk/html/ public/champlain-gtk/
+ artifacts:
+ paths:
+ - public
+ only:
+ - master
diff --git a/champlain-gtk/meson.build b/champlain-gtk/meson.build
new file mode 100644
index 0000000..e777594
--- /dev/null
+++ b/champlain-gtk/meson.build
@@ -0,0 +1,148 @@
+libchamplain_gtk_public_h = [
+ 'champlain-gtk.h',
+ 'gtk-champlain-embed.h',
+]
+
+libchamplain_gtk_sources = [
+ 'gtk-champlain-embed.c',
+]
+
+libchamplain_gtk_deps = [
+ glib_dep,
+ gobject_dep,
+ gtk_dep,
+ clutter_gtk_dep,
+ libchamplain_dep,
+]
+
+libchamplain_gtk_srcdir = include_directories('.')
+
+libchamplain_gtk_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DCHAMPLAIN_GTK_COMPILATION',
+ '-DG_LOG_DOMAIN="@0@"'.format(package_gtk_name),
+]
+
+libchamplain_gtk_link_args = [
+]
+
+libchamplain_gtk_marshals = gnome.genmarshal(
+ 'champlain-gtk-marshal',
+ sources: 'champlain-gtk-marshal.list',
+ prefix: '_champlain_gtk_marshal',
+ install_header: true,
+ install_dir: join_paths(
+ pkgincludedir,
+ 'champlain-gtk',
+ )
+)
+
+libchamplain_gtk_enums = gnome.mkenums(
+ 'champlain-gtk-enum-types',
+ sources: libchamplain_gtk_public_h,
+ h_template: 'champlain-gtk-enum-types.h.in',
+ c_template: 'champlain-gtk-enum-types.c.in',
+ install_header: true,
+ install_dir: join_paths(
+ pkgincludedir,
+ 'champlain-gtk',
+ )
+)
+
+libchamplain_gtk_marshals_h = libchamplain_gtk_marshals.get(1)
+libchamplain_gtk_enums_h = libchamplain_gtk_enums.get(1)
+
+libchamplain_gtk_sources += [
+ libchamplain_gtk_marshals,
+ libchamplain_gtk_enums,
+]
+
+install_headers(
+ libchamplain_gtk_public_h,
+ install_dir: join_paths(
+ pkgincludedir,
+ 'champlain-gtk',
+ )
+)
+
+libchamplain_gtk_sha = library(
+ package_gtk_string,
+ libchamplain_gtk_sources,
+ version: lib_version,
+ include_directories: rootdir,
+ dependencies: libchamplain_gtk_deps,
+ c_args: libchamplain_gtk_c_args,
+ link_args: libchamplain_gtk_link_args,
+ install: true,
+ install_dir: libdir,
+)
+
+libchamplain_gtk_dep_sources = [
+ libchamplain_gtk_enums_h,
+ libchamplain_gtk_marshals_h,
+]
+
+if generate_gir == true
+ libchamplain_gtk_gir_includes = [
+ 'GObject-2.0',
+ 'Clutter-1.0',
+ 'Gtk-3.0',
+ libchamplain_gir.get(0),
+ ]
+
+ libchamplain_gtk_gir = gnome.generate_gir(
+ libchamplain_gtk_sha,
+ sources: libchamplain_gtk_sources + libchamplain_gtk_public_h,
+ nsversion: api_version,
+ namespace: 'GtkChamplain',
+ symbol_prefix: 'gtk_champlain',
+ identifier_prefix: 'GtkChamplain',
+ header: 'champlain-gtk/champlain-gtk.h',
+ export_packages: [package_gtk_string],
+ includes: ['Clutter-1.0', 'Gtk-3.0', libchamplain_gir.get(0)],
+ link_with: libchamplain_gtk_sha,
+ install: true,
+ install_dir_gir: girdir,
+ install_dir_typelib: typelibdir,
+ extra_args: [
+ '-DCHAMPLAIN_GTK_COMPILATION',
+ ]
+ )
+
+ libchamplain_gtk_dep_sources += [
+ libchamplain_gtk_gir,
+ ]
+
+ if generate_vapi == true
+ libchamplain_gtk_vapi_packages = [
+ 'clutter-gtk-1.0',
+ 'cogl-pango-1.0',
+ 'gtk+-3.0',
+ 'atk',
+ 'pangocairo',
+ libchamplain_vapi,
+ ]
+
+ libchamplain_gtk_vapi = gnome.generate_vapi(
+ package_gtk_string,
+ sources: libchamplain_gtk_gir.get(0),
+ packages: libchamplain_gtk_vapi_packages,
+ install: true,
+ install_dir: vapidir,
+ )
+ endif
+endif
+
+libchamplain_gtk_dep = declare_dependency(
+ link_with: libchamplain_gtk_sha,
+ include_directories: rootdir,
+ dependencies: libchamplain_gtk_deps,
+ sources: libchamplain_gtk_dep_sources,
+)
+
+libchamplain_gtk_pc = pkg.generate(
+ libchamplain_gtk_sha,
+ description: 'Gtk+ Widget wrapper for libchamplain',
+ subdirs: package_string,
+ install_dir: pkgconfigdir,
+)
diff --git a/champlain/meson.build b/champlain/meson.build
new file mode 100644
index 0000000..815908b
--- /dev/null
+++ b/champlain/meson.build
@@ -0,0 +1,273 @@
+libchamplain_public_h = [
+ 'champlain-adjustment.h',
+ 'champlain-bounding-box.h',
+ 'champlain-coordinate.h',
+ 'champlain-custom-marker.h',
+ 'champlain-defines.h',
+ 'champlain-error-tile-renderer.h',
+ 'champlain-exportable.h',
+ 'champlain-file-cache.h',
+ 'champlain-file-tile-source.h',
+ 'champlain-image-renderer.h',
+ 'champlain-kinetic-scroll-view.h',
+ 'champlain-label.h',
+ 'champlain-layer.h',
+ 'champlain-license.h',
+ 'champlain-location.h',
+ 'champlain-map-source-chain.h',
+ 'champlain-map-source-desc.h',
+ 'champlain-map-source-factory.h',
+ 'champlain-map-source.h',
+ 'champlain-marker-layer.h',
+ 'champlain-marker.h',
+ 'champlain-memory-cache.h',
+ 'champlain-network-bbox-tile-source.h',
+ 'champlain-network-tile-source.h',
+ 'champlain-null-tile-source.h',
+ 'champlain-path-layer.h',
+ 'champlain-point.h',
+ 'champlain-renderer.h',
+ 'champlain-scale.h',
+ 'champlain-tile-cache.h',
+ 'champlain-tile-source.h',
+ 'champlain-tile.h',
+ 'champlain-view.h',
+ 'champlain-viewport.h',
+ 'champlain.h',
+]
+
+if build_with_memphis == true
+ libchamplain_public_h += [
+ 'champlain-memphis-renderer.h',
+ ]
+endif
+
+libchamplain_sources = [
+ 'champlain-adjustment.c',
+ 'champlain-bounding-box.c',
+ 'champlain-coordinate.c',
+ 'champlain-custom-marker.c',
+ 'champlain-debug.c',
+ 'champlain-error-tile-renderer.c',
+ 'champlain-exportable.c',
+ 'champlain-file-cache.c',
+ 'champlain-file-tile-source.c',
+ 'champlain-image-renderer.c',
+ 'champlain-kinetic-scroll-view.c',
+ 'champlain-label.c',
+ 'champlain-layer.c',
+ 'champlain-license.c',
+ 'champlain-location.c',
+ 'champlain-map-source-chain.c',
+ 'champlain-map-source-desc.c',
+ 'champlain-map-source-factory.c',
+ 'champlain-map-source.c',
+ 'champlain-marker-layer.c',
+ 'champlain-marker.c',
+ 'champlain-memory-cache.c',
+ 'champlain-network-bbox-tile-source.c',
+ 'champlain-network-tile-source.c',
+ 'champlain-null-tile-source.c',
+ 'champlain-path-layer.c',
+ 'champlain-point.c',
+ 'champlain-renderer.c',
+ 'champlain-scale.c',
+ 'champlain-tile-cache.c',
+ 'champlain-tile-source.c',
+ 'champlain-tile.c',
+ 'champlain-view.c',
+ 'champlain-viewport.c',
+]
+
+if build_with_memphis == true
+ libchamplain_sources += [
+ 'champlain-memphis-renderer.c',
+ ]
+endif
+
+libchamplain_deps = [
+ libm_dep,
+ glib_dep,
+ gobject_dep,
+ gio_dep,
+ clutter_dep,
+ cairo_dep,
+ sqlite_dep,
+ libsoup_dep,
+]
+
+if build_with_memphis == true
+ libchamplain_deps += memphis_dep
+endif
+
+libchamplain_srcdir = include_directories('.')
+
+libchamplain_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DCHAMPLAIN_COMPILATION',
+ '-DG_LOG_DOMAIN="@0@"'.format(package_name),
+]
+
+libchamplain_link_args = [
+]
+
+features_h = configuration_data()
+if build_with_memphis == true
+ features_h.set('CHAMPLAIN_HAS_MEMPHIS', '1')
+endif
+
+libchamplain_features_h = configure_file(
+ output: 'champlain-features.h',
+ configuration: features_h,
+ install: true,
+ install_dir: join_paths(
+ pkgincludedir,
+ 'champlain',
+ )
+)
+
+version_h = configuration_data()
+version_h.set('CHAMPLAIN_MAJOR_VERSION', version_major)
+version_h.set('CHAMPLAIN_MINOR_VERSION', version_minor)
+version_h.set('CHAMPLAIN_MICRO_VERSION', version_micro)
+version_h.set('CHAMPLAIN_VERSION', version)
+
+libchamplain_version_h = configure_file(
+ input: 'champlain-version.h.in',
+ output: 'champlain-version.h',
+ configuration: version_h,
+ install: true,
+ install_dir: join_paths(
+ pkgincludedir,
+ 'champlain',
+ )
+)
+
+libchamplain_public_h += [
+ libchamplain_features_h,
+ libchamplain_version_h,
+]
+
+libchamplain_marshals = gnome.genmarshal(
+ 'champlain-marshal',
+ sources: 'champlain-marshal.list',
+ prefix: '_champlain_marshal',
+ install_header: true,
+ install_dir: join_paths(
+ pkgincludedir,
+ 'champlain',
+ )
+)
+
+libchamplain_enums = gnome.mkenums(
+ 'champlain-enum-types',
+ sources: libchamplain_public_h,
+ h_template: 'champlain-enum-types.h.in',
+ c_template: 'champlain-enum-types.c.in',
+ install_header: true,
+ install_dir: join_paths(
+ pkgincludedir,
+ 'champlain',
+ )
+)
+
+libchamplain_marshals_h = libchamplain_marshals.get(1)
+libchamplain_enums_h = libchamplain_enums.get(1)
+
+libchamplain_sources += [
+ libchamplain_marshals,
+ libchamplain_enums,
+]
+
+install_headers(
+ libchamplain_public_h,
+ install_dir: join_paths(
+ pkgincludedir,
+ 'champlain',
+ )
+)
+
+libchamplain_sha = library(
+ package_string,
+ libchamplain_sources,
+ version: lib_version,
+ include_directories: rootdir,
+ dependencies: libchamplain_deps,
+ c_args: libchamplain_c_args,
+ link_args: libchamplain_link_args,
+ install: true,
+ install_dir: libdir,
+)
+
+libchamplain_dep_sources = [
+ libchamplain_enums_h,
+ libchamplain_features_h,
+ libchamplain_marshals_h,
+ libchamplain_version_h,
+]
+
+if generate_gir == true
+ libchamplain_gir_includes = [
+ 'GObject-2.0',
+ 'Clutter-1.0',
+ ]
+
+ if build_with_memphis == true
+ libchamplain_gir_includes += 'Memphis-0.2'
+ endif
+
+ libchamplain_gir = gnome.generate_gir(
+ libchamplain_sha,
+ sources: libchamplain_sources + libchamplain_public_h,
+ nsversion: api_version,
+ namespace: 'Champlain',
+ symbol_prefix: 'champlain',
+ identifier_prefix: 'Champlain',
+ header: 'champlain/champlain.h',
+ export_packages: [package_string],
+ includes: libchamplain_gir_includes,
+ link_with: libchamplain_sha,
+ install: true,
+ install_dir_gir: girdir,
+ install_dir_typelib: typelibdir,
+ extra_args: [
+ '-DCHAMPLAIN_COMPILATION',
+ ]
+ )
+
+ libchamplain_dep_sources += [
+ libchamplain_gir,
+ ]
+
+ if generate_vapi == true
+ libchamplain_vapi_packages = [
+ 'clutter-1.0',
+ 'cogl-pango-1.0',
+ 'atk',
+ 'pangocairo',
+ ]
+
+ libchamplain_vapi = gnome.generate_vapi(
+ package_string,
+ sources: libchamplain_gir.get(0),
+ packages: libchamplain_vapi_packages,
+ install: true,
+ install_dir: vapidir,
+ )
+ endif
+endif
+
+libchamplain_dep = declare_dependency(
+ link_with: libchamplain_sha,
+ include_directories: rootdir,
+ dependencies: libchamplain_deps,
+ sources: libchamplain_dep_sources,
+)
+
+libchamplain_pc = pkg.generate(
+ libchamplain_sha,
+ name: package_string,
+ description: 'Map View for Clutter',
+ subdirs: package_string,
+ install_dir: pkgconfigdir,
+)
diff --git a/demos/icons/meson.build b/demos/icons/meson.build
new file mode 100644
index 0000000..a59921b
--- /dev/null
+++ b/demos/icons/meson.build
@@ -0,0 +1,14 @@
+libchamplain_demo_data = [
+ 'emblem-favorite.png',
+ 'emblem-generic.png',
+ 'emblem-important.png',
+ 'emblem-new.png',
+]
+
+custom_target(
+ 'libchamplain-demo-data',
+ input: libchamplain_demo_data,
+ output: libchamplain_demo_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+) \ No newline at end of file
diff --git a/demos/meson.build b/demos/meson.build
new file mode 100644
index 0000000..e8bcff1
--- /dev/null
+++ b/demos/meson.build
@@ -0,0 +1,70 @@
+libchamplain_demos = [
+ ['minimal', 'minimal.c'],
+ ['launcher', ['launcher.c', 'markers.c']],
+ ['animated-marker', 'animated-marker.c'],
+ ['polygons', 'polygons.c'],
+ ['url-marker', 'url-marker.c'],
+ ['create_destroy_test', 'create-destroy-test.c'],
+]
+
+foreach demo: libchamplain_demos
+ demo_name = demo.get(0)
+ demo_sources = demo.get(1)
+
+ executable(
+ demo_name,
+ demo_sources,
+ install: false,
+ dependencies: [
+ libchamplain_dep,
+ ]
+ )
+endforeach
+
+subdir('icons')
+
+if build_gtk_widgetry == true
+ libchamplain_gtk_demos = [
+ ['minimal-gtk', 'minimal-gtk.c'],
+ ['launcher-gtk', ['launcher-gtk.c', 'markers.c']],
+ ]
+
+ foreach demo: libchamplain_gtk_demos
+ demo_name = demo.get(0)
+ demo_sources = demo.get(1)
+
+ executable(
+ demo_name,
+ demo_sources,
+ install: false,
+ dependencies: [
+ libchamplain_dep,
+ libchamplain_gtk_dep,
+ ]
+ )
+ endforeach
+endif
+
+if generate_vapi == true
+ libchamplain_vala_demos = [
+ ['launcher-vala', ['launcher-vala.vala', 'markers-vala.vala']],
+ ]
+
+ add_languages('vala')
+
+ foreach demo: libchamplain_vala_demos
+ demo_name = demo.get(0)
+ demo_sources = demo.get(1)
+
+ executable(
+ demo_name,
+ demo_sources,
+ install: false,
+ dependencies: [
+ libchamplain_dep,
+ libchamplain_gtk_dep,
+ libchamplain_vapi,
+ ]
+ )
+ endforeach
+endif \ No newline at end of file
diff --git a/docs/meson.build b/docs/meson.build
new file mode 100644
index 0000000..d7ecf41
--- /dev/null
+++ b/docs/meson.build
@@ -0,0 +1,6 @@
+if build_gtk_doc == true
+ subdir('reference')
+ if build_gtk_widgetry == true
+ subdir('reference-gtk')
+ endif
+endif \ No newline at end of file
diff --git a/docs/reference-gtk/meson.build b/docs/reference-gtk/meson.build
new file mode 100644
index 0000000..ca5578f
--- /dev/null
+++ b/docs/reference-gtk/meson.build
@@ -0,0 +1,51 @@
+gtk_prefix = gtk_dep.get_pkgconfig_variable('prefix')
+gtk_docpath = join_paths(gtk_prefix, 'share', 'gtk-doc', 'html', 'gtk3')
+
+libchamplain_gtk_reference_ignored_h = [
+ 'champlain-gtk-marshal.h',
+ 'champlain-gtk.h',
+]
+
+version_xml = configuration_data()
+version_xml.set('PACKAGE_VERSION', version)
+
+configure_file(
+ input: 'version.xml.in',
+ output: 'version.xml',
+ configuration: version_xml,
+ install: false,
+)
+
+libchamplain_gtk_reference_scan_args = [
+ '--rebuild-types',
+ '--deprecated-guards=GTK_DISABLE_DEPRECATED',
+ '--ignore-headers=' + ' '.join(libchamplain_gtk_reference_ignored_h),
+]
+
+libchamplain_gtk_reference_mkdb_args = [
+ '--output-format=xml',
+ '--name-space=gtk_champlain',
+]
+
+libchamplain_gtk_reference_fixxref_args = [
+ '--html-dir=@0@'.format(join_paths(gtkdocdir, 'html', package_gtk_string)),
+ '--extra-dir=@0@'.format(gtk_docpath),
+ '--extra-dir=@0@'.format(join_paths(gtkdocdir, 'html', package_string)),
+]
+
+gnome.gtkdoc(
+ package_gtk_name,
+ main_sgml: 'libchamplain-gtk-docs.sgml',
+ gobject_typesfile: files('libchamplain-gtk.types'),
+ src_dir: libchamplain_gtk_srcdir,
+ dependencies: libchamplain_gtk_dep,
+ scan_args: libchamplain_gtk_reference_scan_args,
+ mkdb_args: libchamplain_gtk_reference_mkdb_args,
+ fixxref_args: libchamplain_gtk_reference_fixxref_args,
+ install: true,
+ install_dir: join_paths(
+ gtkdocdir,
+ 'html',
+ package_gtk_string,
+ )
+)
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
new file mode 100644
index 0000000..fb957eb
--- /dev/null
+++ b/docs/reference/meson.build
@@ -0,0 +1,72 @@
+glib_prefix = glib_dep.get_pkgconfig_variable('prefix')
+glib_docpath = join_paths(glib_prefix, 'share', 'gtk-doc', 'html', 'glib')
+
+gobject_prefix = gobject_dep.get_pkgconfig_variable('prefix')
+gobject_docpath = join_paths(gobject_prefix, 'share', 'gtk-doc', 'html', 'gobject')
+
+clutter_prefix = clutter_dep.get_pkgconfig_variable('prefix')
+clutter_docpath = join_paths(clutter_prefix, 'share', 'gtk-doc', 'html', 'clutter')
+
+libchamplain_reference_ignored_h = [
+ 'champlain-adjustment.h',
+ 'champlain-debug.h',
+ 'champlain-defines.h',
+ 'champlain-enum-types.h',
+ 'champlain-features.h',
+ 'champlain-kinetic-scroll-view.h',
+ 'champlain-marshal.h',
+ 'champlain-private.h',
+ 'champlain-viewport.h',
+ 'champlain.h',
+]
+
+if build_with_memphis == false
+ libchamplain_reference_ignored_h += [
+ 'champlain-memphis-renderer.h',
+ ]
+endif
+
+version_xml = configuration_data()
+version_xml.set('PACKAGE_VERSION', version)
+
+configure_file(
+ input: 'version.xml.in',
+ output: 'version.xml',
+ configuration: version_xml,
+ install: false,
+)
+
+libchamplain_reference_scan_args = [
+ '--rebuild-types',
+ '--deprecated-guards=GTK_DISABLE_DEPRECATED',
+ '--ignore-headers=' + ' '.join(libchamplain_reference_ignored_h),
+]
+
+libchamplain_reference_mkdb_args = [
+ '--output-format=xml',
+ '--name-space=champlain',
+]
+
+libchamplain_reference_fixxref_args = [
+ '--html-dir=@0@'.format(join_paths(gtkdocdir, 'html', package_string)),
+ '--extra-dir=@0@'.format(glib_docpath),
+ '--extra-dir=@0@'.format(gobject_docpath),
+ '--extra-dir=@0@'.format(clutter_docpath),
+]
+
+gnome.gtkdoc(
+ package_name,
+ main_sgml: 'libchamplain-docs.sgml',
+ gobject_typesfile: files('libchamplain.types'),
+ src_dir: libchamplain_srcdir,
+ dependencies: libchamplain_dep,
+ scan_args: libchamplain_reference_scan_args,
+ mkdb_args: libchamplain_reference_mkdb_args,
+ fixxref_args: libchamplain_reference_fixxref_args,
+ install: true,
+ install_dir: join_paths(
+ gtkdocdir,
+ 'html',
+ package_string,
+ )
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..730e8d2
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,156 @@
+project(
+ 'libchamplain', 'c',
+ version: '0.12.17',
+ license: 'LGPLv2.1+',
+ meson_version: '>= 0.49.0',
+ default_options: [
+ 'buildtype=debugoptimized',
+ ]
+)
+
+gnome = import('gnome')
+pkg = import('pkgconfig')
+
+# Versioning
+version = meson.project_version()
+version_arr = version.split('.')
+version_major = version_arr[0]
+version_minor = version_arr[1]
+version_micro = version_arr[2]
+
+if version_minor.to_int().is_odd()
+ api_version = '.'.join([version_major, version_minor + 1])
+else
+ api_version = '.'.join([version_major, version_minor])
+endif
+
+lib_version = '0.10.0'
+
+package_name = meson.project_name().strip('lib')
+package_string = '@0@-@1@'.format(package_name, api_version)
+package_gtk_name = '@0@-gtk'.format(package_name)
+package_gtk_string = '@0@-@1@'.format(package_gtk_name, api_version)
+
+# Paths
+rootdir = include_directories('.')
+
+srcdir = meson.current_source_dir()
+builddir = meson.current_build_dir()
+
+prefix = get_option('prefix')
+
+includedir = join_paths(prefix, get_option('includedir'))
+libdir = join_paths(prefix, get_option('libdir'))
+datadir = join_paths(prefix, get_option('datadir'))
+pkgincludedir = join_paths(includedir, package_string)
+typelibdir = join_paths(libdir, 'girepository-1.0')
+pkgconfigdir = join_paths(libdir, 'pkgconfig')
+
+girdir = join_paths(datadir, 'gir-1.0')
+gtkdocdir = join_paths(datadir, 'gtk-doc')
+vapidir = join_paths(datadir, 'vala', 'vapi')
+
+# Dependencies
+cc = meson.get_compiler('c')
+
+libm_dep = cc.find_library('m', required: true)
+
+glib_req = '>= 2.16.0'
+gtk_req = '>= 2.90.0'
+clutter_req = '>= 1.24'
+clutter_gtk_req = '>= 0.90'
+cairo_req = '>= 1.4'
+sqlite_req = '>= 3.0'
+libsoup_req = '>= 2.42'
+memphis_req = '>=0.2.1'
+introspection_req = '>= 0.6.3'
+vala_req = '>= 0.11.0'
+gtk_doc_req = '>= 1.9'
+
+glib_dep = dependency('glib-2.0', version: glib_req)
+gobject_dep = dependency('gobject-2.0', version: glib_req)
+gio_dep = dependency('gio-2.0', version: glib_req)
+clutter_dep = dependency('clutter-1.0', version: clutter_req)
+cairo_dep = dependency('cairo', version: cairo_req)
+sqlite_dep = dependency('sqlite3', version: sqlite_req)
+libsoup_dep = dependency('libsoup-2.4', version: libsoup_req)
+
+gtk_dep = dependency('gtk+-3.0', version: gtk_req, required: false)
+clutter_gtk_dep = dependency('clutter-gtk-1.0', version: clutter_gtk_req, required: false)
+memphis_dep = dependency('memphis-0.2', version: memphis_req, required: false)
+
+introspection_dep = dependency('gobject-introspection-1.0', version: introspection_req, required: false)
+vapigen_dep = dependency('vapigen', version: vala_req, required: false)
+gtk_doc_dep = dependency('gtk-doc', version: gtk_doc_req, required: false)
+
+# Configurations
+config_h = configuration_data()
+config_h.set_quoted('VERSION', version)
+
+configure_file(
+ output: 'config.h',
+ configuration: config_h
+)
+
+# Options
+build_demos = get_option('demos')
+
+build_gtk_doc = get_option('gtk_doc')
+if build_gtk_doc and not gtk_doc_dep.found()
+ build_gtk_doc = false
+endif
+
+build_gtk_widgetry = get_option('widgetry')
+if build_gtk_widgetry and not gtk_doc_dep.found()
+ build_gtk_widgetry = false
+elif build_gtk_widgetry and not clutter_gtk_dep.found()
+ build_gtk_widgetry = false
+endif
+
+generate_gir = get_option('introspection')
+if generate_gir and not introspection_dep.found()
+ generate_gir = false
+endif
+
+build_with_memphis = get_option('memphis')
+if build_with_memphis and not memphis_dep.found()
+ build_with_memphis = false
+endif
+
+generate_vapi = generate_gir and get_option('vapi')
+if generate_vapi and not vapigen_dep.found()
+ generate_vapi = false
+endif
+
+subdir('champlain')
+if build_gtk_widgetry == true
+ subdir('champlain-gtk')
+endif
+
+subdir('docs')
+
+if build_demos == true
+ subdir('demos')
+endif
+
+summary = [
+ '',
+ '------',
+ 'libchamplain @0@ (@1@)'.format(version, api_version),
+ '',
+ ' Demos: @0@'.format(build_demos),
+ ' Documentation: @0@'.format(build_gtk_doc),
+ ' GTK+ widgetry: @0@'.format(build_gtk_widgetry),
+ ' Introspection: @0@'.format(generate_gir),
+ ' Memphis renderer: @0@'.format(build_with_memphis),
+ ' Vala API: @0@'.format(generate_vapi),
+ '',
+ 'Directories:',
+ ' prefix: @0@'.format(prefix),
+ ' includedir: @0@'.format(includedir),
+ ' libdir: @0@'.format(libdir),
+ ' datadir: @0@'.format(datadir),
+ '------',
+]
+
+message('\n'.join(summary))
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..8713d62
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,22 @@
+option('memphis',
+ type: 'boolean', value: false,
+ description: 'Enable Memphis support (requires libmemphis)')
+
+option('introspection',
+ type: 'boolean', value: true,
+ description: 'Generate introspection data (requires gobject-introspection)')
+option('vapi',
+ type: 'boolean', value: true,
+ description: 'Generate vapi data (requires vapigen)')
+
+option('widgetry',
+ type: 'boolean', value: true,
+ description: 'Build GTK+ widgetry')
+
+option('gtk_doc',
+ type: 'boolean', value: false,
+ description: 'Build reference manual (requires gtk-doc)')
+
+option('demos',
+ type: 'boolean', value: false,
+ description: 'Build demonstration programs')