summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/glade/meson.build28
-rw-r--r--data/icons/meson.build27
-rw-r--r--data/meson.build5
-rw-r--r--docs/meson.build3
-rw-r--r--docs/reference/meson.build99
-rw-r--r--libpeas-gtk/meson.build101
-rw-r--r--libpeas/meson.build132
-rw-r--r--loaders/lua5.1/meson.build41
-rw-r--r--loaders/lua5.1/resources/meson.build5
-rw-r--r--loaders/meson.build11
-rw-r--r--loaders/python/meson.build45
-rw-r--r--loaders/python3/meson.build45
-rw-r--r--meson.build218
-rw-r--r--meson_options.txt32
-rw-r--r--peas-demo/meson.build23
-rw-r--r--peas-demo/plugins/helloworld/meson.build31
-rw-r--r--peas-demo/plugins/luahello/meson.build14
-rw-r--r--peas-demo/plugins/meson.build11
-rw-r--r--peas-demo/plugins/pythonhello/meson.build14
-rw-r--r--peas-demo/plugins/secondtime/meson.build30
-rw-r--r--po/meson.build4
-rw-r--r--tests/libpeas-gtk/meson.build33
-rw-r--r--tests/libpeas-gtk/plugins/builtin-configurable/meson.build37
-rw-r--r--tests/libpeas-gtk/plugins/configurable/meson.build37
-rw-r--r--tests/libpeas-gtk/plugins/meson.build18
-rw-r--r--tests/libpeas-gtk/plugins/valid-custom-icon/meson.build14
-rw-r--r--tests/libpeas-gtk/testing/meson.build44
-rw-r--r--tests/libpeas/introspection/meson.build71
-rw-r--r--tests/libpeas/meson.build57
-rw-r--r--tests/libpeas/plugins/embedded/meson.build52
-rw-r--r--tests/libpeas/plugins/extension-c/meson.build64
-rw-r--r--tests/libpeas/plugins/extension-lua/meson.build15
-rw-r--r--tests/libpeas/plugins/extension-python/meson.build49
-rw-r--r--tests/libpeas/plugins/meson.build33
-rw-r--r--tests/libpeas/testing/meson.build46
-rw-r--r--tests/meson.build8
-rw-r--r--tests/plugins/builtin/meson.build34
-rw-r--r--tests/plugins/has-dep/meson.build35
-rw-r--r--tests/plugins/loadable/meson.build34
-rw-r--r--tests/plugins/meson.build20
-rw-r--r--tests/plugins/self-dep/meson.build34
-rw-r--r--tests/testing-util/meson.build42
42 files changed, 1696 insertions, 0 deletions
diff --git a/data/glade/meson.build b/data/glade/meson.build
new file mode 100644
index 0000000..301c2ab
--- /dev/null
+++ b/data/glade/meson.build
@@ -0,0 +1,28 @@
+glade_catalog_xml = configuration_data()
+glade_catalog_xml.set('GETTEXT_PACKAGE', package_string)
+
+peas_glade_catalog = configure_file(
+ input: 'libpeas-gtk.xml.in',
+ output: 'libpeas-gtk.xml',
+ configuration: glade_catalog_xml,
+ install: true,
+ install_dir: catalogdir,
+)
+
+if xmllint_prg.found()
+ glade_catalog_dtd_path = join_paths(
+ gladeui_dep.get_pkgconfig_variable('catalogdir'),
+ 'glade-catalog.dtd'
+ )
+
+ test(
+ 'Validate Glade catalogue',
+ xmllint_prg,
+ args: [
+ '--dtdvalid',
+ glade_catalog_dtd_path,
+ peas_glade_catalog,
+ '--noout',
+ ]
+ )
+endif
diff --git a/data/icons/meson.build b/data/icons/meson.build
new file mode 100644
index 0000000..726dae8
--- /dev/null
+++ b/data/icons/meson.build
@@ -0,0 +1,27 @@
+icon_sizes = [
+ '16x16',
+ '22x22',
+ '32x32',
+]
+
+foreach size: icon_sizes
+ install_data(
+ join_paths(size, 'libpeas-plugin.png'),
+ install_dir: join_paths(
+ iconsdir,
+ 'hicolor',
+ size,
+ 'actions'
+ )
+ )
+endforeach
+
+install_data(
+ join_paths('scalable', 'libpeas-plugin.svg'),
+ install_dir: join_paths(
+ iconsdir,
+ 'hicolor',
+ 'scalable',
+ 'actions'
+ )
+)
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..59295ae
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,5 @@
+if install_glade_catalog == true
+ subdir('glade')
+endif
+
+subdir('icons')
diff --git a/docs/meson.build b/docs/meson.build
new file mode 100644
index 0000000..c662ff0
--- /dev/null
+++ b/docs/meson.build
@@ -0,0 +1,3 @@
+if build_gtk_doc == true
+ subdir('reference')
+endif
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
new file mode 100644
index 0000000..1e114d4
--- /dev/null
+++ b/docs/reference/meson.build
@@ -0,0 +1,99 @@
+glib_prefix = glib_dep.get_pkgconfig_variable('prefix')
+glib_docpath = join_paths(glib_prefix, 'share', 'gtk-doc', 'html')
+
+gtk_prefix = gtk_dep.get_pkgconfig_variable('prefix')
+gtk_docpath = join_paths(gtk_prefix, 'share', 'gtk-doc', 'html')
+
+libpeas_reference_ignored_h = [
+ 'peas-debug.h',
+ 'peas-dirs.h',
+ 'peas-engine-priv.h',
+ 'peas-i18n.h',
+ 'peas-introspection.h',
+ 'peas-marshal.h',
+ 'peas-plugin-info-priv.h',
+ 'peas-plugin-loader.h',
+ 'peas-plugin-loader-c.h',
+ 'peas-utils.h',
+]
+
+libpeas_reference_html_images = [
+]
+
+libpeas_reference_srcdirs = [
+ libpeas_srcdir,
+]
+
+if build_gtk_widgetry == true
+ libpeas_reference_ignored_h += [
+ 'peas-gtk-disable-plugins-dialog.h',
+ 'peas-gtk-plugin-manager-store.h',
+ ]
+
+ libpeas_reference_html_images += [
+ join_paths('images', 'peas-gtk-plugin-manager.png'),
+ ]
+
+ libpeas_reference_srcdirs += [
+ libpeas_gtk_srcdir,
+ ]
+endif
+
+version_xml = configuration_data()
+version_xml.set('PEAS_VERSION', version)
+
+configure_file(
+ input: 'version.xml.in',
+ output: 'version.xml',
+ configuration: version_xml,
+)
+
+libpeas_reference_deps = [
+ libpeas_dep,
+]
+
+libpeas_reference_scan_args = [
+ '--rebuild-types',
+ '--deprecated-guards="PEAS_DISABLE_DEPRECATED"',
+ '--ignore-headers=' + ' '.join(libpeas_reference_ignored_h),
+]
+
+libpeas_reference_fixxref_args = [
+ '--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')),
+ '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')),
+ '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gmodule')),
+ '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gio')),
+]
+
+libpeas_reference_mkdb_args = [
+ '--sgml-mode',
+ '--output-format=xml',
+]
+
+if build_gtk_widgetry == true
+ libpeas_reference_deps += [
+ libpeas_gtk_dep,
+ ]
+
+ libpeas_reference_fixxref_args += [
+ '--extra-dir=@0@'.format(join_paths(gtk_docpath, 'gtk')),
+ ]
+endif
+
+gnome.gtkdoc(
+ package_name,
+ main_sgml: 'libpeas-docs.sgml',
+ gobject_typesfile: 'libpeas.types',
+ src_dir: libpeas_reference_srcdirs,
+ html_assets: libpeas_reference_html_images,
+ dependencies: libpeas_reference_deps,
+ scan_args: libpeas_reference_scan_args,
+ fixxref_args: libpeas_reference_fixxref_args,
+ mkdb_args: libpeas_reference_mkdb_args,
+ install: true,
+ install_dir: join_paths(
+ gtkdocdir,
+ 'html',
+ package_name,
+ )
+)
diff --git a/libpeas-gtk/meson.build b/libpeas-gtk/meson.build
new file mode 100644
index 0000000..3becc7e
--- /dev/null
+++ b/libpeas-gtk/meson.build
@@ -0,0 +1,101 @@
+libpeas_gtk_srcdir = include_directories('.')
+
+libpeas_gtk_public_h = files(
+ 'peas-gtk-autocleanups.h',
+ 'peas-gtk-configurable.h',
+ 'peas-gtk-plugin-manager.h',
+ 'peas-gtk-plugin-manager-view.h',
+ 'peas-gtk.h',
+)
+
+libpeas_gtk_c = files(
+ 'peas-gtk-configurable.c',
+ 'peas-gtk-disable-plugins-dialog.c',
+ 'peas-gtk-plugin-manager.c',
+ 'peas-gtk-plugin-manager-store.c',
+ 'peas-gtk-plugin-manager-view.c',
+)
+
+libpeas_gtk_deps = [
+ glib_dep,
+ gobject_dep,
+ introspection_dep,
+ gtk_dep,
+ libpeas_dep,
+]
+
+libpeas_gtk_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DG_LOG_DOMAIN="libpeas-gtk"',
+]
+
+libpeas_gtk_link_args = [
+]
+
+install_headers(
+ libpeas_gtk_public_h,
+ install_dir: join_paths(
+ pkgincludedir,
+ package_gtk_name,
+ )
+)
+
+libpeas_gtk_sha = library(
+ package_gtk_string.strip('lib'),
+ libpeas_gtk_c,
+ version: lib_version,
+ include_directories: rootdir,
+ dependencies: libpeas_gtk_deps,
+ c_args: libpeas_gtk_c_args,
+ link_args: libpeas_gtk_link_args,
+ install: true,
+ install_dir: libdir,
+)
+
+libpeas_gtk_dep_sources = []
+
+if generate_gir == true
+ libpeas_gtk_gir_includes = [
+ 'GObject-2.0',
+ 'Gtk-3.0',
+ libpeas_gir.get(0)
+ ]
+
+ libpeas_gtk_gir = gnome.generate_gir(
+ libpeas_gtk_sha,
+ sources: libpeas_gtk_c + libpeas_gtk_public_h,
+ nsversion: api_version,
+ namespace: 'PeasGtk',
+ symbol_prefix: 'peas_gtk',
+ identifier_prefix: 'PeasGtk',
+ header: 'libpeas-gtk/peas-gtk.h',
+ export_packages: [package_gtk_string],
+ includes: libpeas_gtk_gir_includes,
+ link_with: [libpeas_sha, libpeas_gtk_sha],
+ install: true,
+ install_dir_gir: girdir,
+ install_dir_typelib: typelibdir,
+ extra_args: [
+ '--warn-all',
+ ],
+ )
+
+ libpeas_gtk_dep_sources += [
+ libpeas_gtk_gir,
+ ]
+endif
+
+libpeas_gtk_dep = declare_dependency(
+ link_with: libpeas_gtk_sha,
+ dependencies: libpeas_gtk_deps,
+ include_directories: rootdir,
+ sources: libpeas_gtk_dep_sources,
+)
+
+libpeas_gtk_pc = pkg.generate(
+ libpeas_gtk_sha,
+ name: package_gtk_string,
+ description: 'GObject plugins library widgetery',
+ subdirs: package_gtk_string,
+ install_dir: pkgconfigdir,
+)
diff --git a/libpeas/meson.build b/libpeas/meson.build
new file mode 100644
index 0000000..5af2016
--- /dev/null
+++ b/libpeas/meson.build
@@ -0,0 +1,132 @@
+libpeas_srcdir = include_directories('.')
+
+libpeas_public_h = files(
+ 'peas-activatable.h',
+ 'peas-autocleanups.h',
+ 'peas-engine.h',
+ 'peas-extension.h',
+ 'peas-extension-base.h',
+ 'peas-extension-set.h',
+ 'peas-object-module.h',
+ 'peas-plugin-info.h',
+ 'peas.h',
+)
+
+libpeas_sources = files(
+ 'peas-activatable.c',
+ 'peas-debug.c',
+ 'peas-dirs.c',
+ 'peas-engine.c',
+ 'peas-extension.c',
+ 'peas-extension-base.c',
+ 'peas-extension-set.c',
+ 'peas-i18n.c',
+ 'peas-introspection.c',
+ 'peas-object-module.c',
+ 'peas-plugin-info.c',
+ 'peas-plugin-loader.c',
+ 'peas-plugin-loader-c.c',
+ 'peas-utils.c',
+)
+
+libpeas_deps = [
+ glib_dep,
+ gobject_dep,
+ gmodule_dep,
+ gio_dep,
+ introspection_dep,
+]
+
+libpeas_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DG_LOG_DOMAIN="libpeas"',
+ '-DDATADIR="@0@"'.format(datadir),
+ '-DLIBDIR="@0@"'.format(libdir),
+]
+
+libpeas_link_args = [
+]
+
+libpeas_marshal = gnome.genmarshal(
+ 'peas-marshal',
+ sources: 'peas-marshal.list',
+ prefix: 'peas_cclosure_marshal',
+ install_header: false,
+)
+
+libpeas_marshals_h = libpeas_marshal.get(1)
+
+libpeas_sources += [
+ libpeas_marshal,
+]
+
+install_headers(
+ libpeas_public_h,
+ install_dir: join_paths(
+ pkgincludedir,
+ package_name,
+ ),
+)
+
+libpeas_sha = library(
+ package_string.strip('lib'),
+ libpeas_sources,
+ version: lib_version,
+ include_directories: rootdir,
+ dependencies: libpeas_deps,
+ c_args: libpeas_c_args,
+ link_args: libpeas_link_args,
+ install: true,
+ install_dir: libdir,
+)
+
+libpeas_dep_sources = [
+ libpeas_marshals_h,
+]
+
+if generate_gir == true
+ libpeas_gir_includes = [
+ 'GObject-2.0',
+ 'GModule-2.0',
+ 'Gio-2.0',
+ 'GIRepository-2.0'
+ ]
+
+ libpeas_gir = gnome.generate_gir(
+ libpeas_sha,
+ sources: libpeas_sources + libpeas_public_h,
+ nsversion: api_version,
+ namespace: 'Peas',
+ symbol_prefix: 'peas',
+ identifier_prefix: 'Peas',
+ header: 'libpeas/peas.h',
+ export_packages: [package_string],
+ includes: libpeas_gir_includes,
+ link_with: libpeas_sha,
+ install: true,
+ install_dir_gir: girdir,
+ install_dir_typelib: typelibdir,
+ extra_args: [
+ '--warn-all',
+ ],
+ )
+
+ libpeas_dep_sources += [
+ libpeas_gir,
+ ]
+endif
+
+libpeas_dep = declare_dependency(
+ link_with: libpeas_sha,
+ include_directories: rootdir,
+ dependencies: libpeas_deps,
+ sources: libpeas_dep_sources,
+)
+
+libpeas_pc = pkg.generate(
+ libpeas_sha,
+ name: package_string,
+ description: 'GObject plugins library',
+ subdirs: package_string,
+ install_dir: pkgconfigdir,
+)
diff --git a/loaders/lua5.1/meson.build b/loaders/lua5.1/meson.build
new file mode 100644
index 0000000..9dfe010
--- /dev/null
+++ b/loaders/lua5.1/meson.build
@@ -0,0 +1,41 @@
+lua51_loader_name = 'lua51loader'
+
+lua51_lgi_version = lua51_lgi_dep.version()
+lua51_lgi_version_arr = lua51_lgi_version.split('.')
+lua51_lgi_version_major = lua51_lgi_version_arr[0].to_int()
+lua51_lgi_version_minor = lua51_lgi_version_arr[1].to_int()
+lua51_lgi_version_micro = lua51_lgi_version_arr[2].to_int()
+
+lua51_loader_c = files(
+ 'peas-lua-internal.c',
+ 'peas-lua-utils.c',
+ 'peas-plugin-loader-lua.c',
+)
+
+subdir('resources') # Declares 'lua51_loader_res'
+
+lua51_loader_deps = [
+ libpeas_dep,
+ lua51_dep,
+ lua51_lgi_dep,
+]
+
+lua51_loader_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DLGI_MAJOR_VERSION=@0@'.format(lua51_lgi_version_major),
+ '-DLGI_MINOR_VERSION=@0@'.format(lua51_lgi_version_minor),
+ '-DLGI_MICRO_VERSION=@0@'.format(lua51_lgi_version_micro),
+]
+
+lua51_loader_sha = shared_library(
+ lua51_loader_name,
+ lua51_loader_c + lua51_loader_res,
+ include_directories: rootdir,
+ dependencies: lua51_loader_deps,
+ c_args: lua51_loader_c_args,
+ install: true,
+ install_dir: join_paths(
+ pkglibdir,
+ 'loaders',
+ )
+)
diff --git a/loaders/lua5.1/resources/meson.build b/loaders/lua5.1/resources/meson.build
new file mode 100644
index 0000000..8f7f6c6
--- /dev/null
+++ b/loaders/lua5.1/resources/meson.build
@@ -0,0 +1,5 @@
+lua51_loader_res = gnome.compile_resources(
+ 'peas-lua-resources',
+ 'peas-lua.gresource.xml',
+ export: true,
+)
diff --git a/loaders/meson.build b/loaders/meson.build
new file mode 100644
index 0000000..7b9ce98
--- /dev/null
+++ b/loaders/meson.build
@@ -0,0 +1,11 @@
+if build_lua51_loader == true
+ subdir('lua5.1')
+endif
+
+if build_python3_loader == true
+ subdir('python')
+endif
+
+if build_python3_loader == true
+ subdir('python3')
+endif
diff --git a/loaders/python/meson.build b/loaders/python/meson.build
new file mode 100644
index 0000000..89346a2
--- /dev/null
+++ b/loaders/python/meson.build
@@ -0,0 +1,45 @@
+python2_loader_name = 'python2loader'
+
+pygobject_version = pygobject_dep.version()
+pygobject_version_arr = pygobject_version.split('.')
+pygobject_version_major = pygobject_version_arr[0].to_int()
+pygobject_version_minor = pygobject_version_arr[1].to_int()
+pygobject_version_micro = pygobject_version_arr[2].to_int()
+
+python2_loader_c = files(
+ 'peas-plugin-loader-python.c',
+ 'peas-python-internal.c',
+)
+
+python2_loader_res = gnome.compile_resources(
+ 'peas-python-resources',
+ 'peas-python.gresource.xml',
+ export: true,
+)
+
+python2_loader_deps = [
+ libpeas_dep,
+ python2_dep,
+ pygobject_dep,
+]
+
+python2_loader_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DPEAS_LOCALEDIR="@0@"'.format(localedir),
+ '-DPYGOBJECT_MAJOR_VERSION=@0@'.format(pygobject_version_major),
+ '-DPYGOBJECT_MINOR_VERSION=@0@'.format(pygobject_version_minor),
+ '-DPYGOBJECT_MICRO_VERSION=@0@'.format(pygobject_version_micro),
+]
+
+python2_loader_sha = shared_library(
+ python2_loader_name,
+ python2_loader_c + python2_loader_res,
+ include_directories: rootdir,
+ dependencies: python2_loader_deps,
+ c_args: python2_loader_c_args,
+ install: true,
+ install_dir: join_paths(
+ pkglibdir,
+ 'loaders',
+ )
+)
diff --git a/loaders/python3/meson.build b/loaders/python3/meson.build
new file mode 100644
index 0000000..5b350a0
--- /dev/null
+++ b/loaders/python3/meson.build
@@ -0,0 +1,45 @@
+python3_loader_name = 'python3loader'
+
+pygobject_version = pygobject_dep.version()
+pygobject_version_arr = pygobject_version.split('.')
+pygobject_version_major = pygobject_version_arr[0].to_int()
+pygobject_version_minor = pygobject_version_arr[1].to_int()
+pygobject_version_micro = pygobject_version_arr[2].to_int()
+
+python3_loader_c = files(
+ '../python/peas-plugin-loader-python.c',
+ '../python/peas-python-internal.c',
+)
+
+python3_loader_res = gnome.compile_resources(
+ 'peas-python2-resources',
+ 'peas-python3.gresource.xml',
+ export: true,
+)
+
+python3_loader_deps = [
+ libpeas_dep,
+ python3_dep,
+ pygobject_dep,
+]
+
+python3_loader_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DPEAS_LOCALEDIR="@0@"'.format(localedir),
+ '-DPYGOBJECT_MAJOR_VERSION=@0@'.format(pygobject_version_major),
+ '-DPYGOBJECT_MINOR_VERSION=@0@'.format(pygobject_version_minor),
+ '-DPYGOBJECT_MICRO_VERSION=@0@'.format(pygobject_version_micro),
+]
+
+python3_loader_sha = shared_library(
+ python3_loader_name,
+ python3_loader_c + python3_loader_res,
+ include_directories: rootdir,
+ dependencies: python3_loader_deps,
+ c_args: python3_loader_c_args,
+ install: true,
+ install_dir: join_paths(
+ pkglibdir,
+ 'loaders',
+ )
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..50abace
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,218 @@
+project(
+ 'libpeas', 'c',
+ version: '1.22.0',
+ license: 'LGPLv2.1+',
+ meson_version: '>= 0.49.0',
+ default_options: [
+ 'buildtype=debugoptimized',
+ ]
+)
+
+gnome = import('gnome')
+i18n = import('i18n')
+pkg = import('pkgconfig')
+
+# Versioning
+version = meson.project_version()
+version_arr = version.split('.')
+version_major = version_arr[0].to_int()
+version_minor = version_arr[1].to_int()
+version_micro = version_arr[2].to_int()
+
+api_version = '@0@.0'.format(version_major)
+
+if version_minor.is_odd()
+ interface_age = 0
+else
+ interface_age = version_micro
+endif
+
+# Compatibility with libtool versioning:
+# current = minor * 100 + micro - interface
+# revision = interface
+lib_version_soversion = version_major
+lib_version_current = version_minor * 100 + version_micro - interface_age
+lib_version_revision = interface_age
+lib_version = '@0@.@1@.@2@'.format(
+ lib_version_soversion,
+ lib_version_current,
+ lib_version_revision
+)
+
+package_name = meson.project_name()
+package_string = '@0@-@1@'.format(package_name, api_version)
+package_long_string = '@0@-@1@'.format(package_name, version)
+package_gtk_name = '@0@-gtk'.format(meson.project_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'))
+localedir = join_paths(prefix, get_option('localedir'))
+
+pkgincludedir = join_paths(includedir, package_string)
+pkglibdir = join_paths(libdir, package_string)
+pkgdatadir = join_paths(datadir, package_string)
+
+girdir = join_paths(datadir, 'gir-1.0')
+gtkdocdir = join_paths(datadir, 'gtk-doc')
+iconsdir = join_paths(datadir, 'icons')
+pkgconfigdir = join_paths(libdir, 'pkgconfig')
+typelibdir = join_paths(libdir, 'girepository-1.0')
+
+# Configurations
+config_h = configuration_data()
+config_h.set_quoted('PACKAGE', package_name)
+config_h.set_quoted('PACKAGE_BUGREPORT', 'http://bugzilla.gnome.org/enter_bug.cgi?product=libpeas')
+config_h.set_quoted('PACKAGE_NAME', package_name)
+config_h.set_quoted('PACKAGE_STRING', package_long_string)
+config_h.set_quoted('PACKAGE_URL', 'https://wiki.gnome.org/Projects/Libpeas')
+config_h.set_quoted('PACKAGE_URL', 'https://wiki.gnome.org/Projects/Libpeas')
+config_h.set_quoted('PACKAGE_VERSION', version)
+config_h.set_quoted('VERSION', version)
+
+config_h.set_quoted('GETTEXT_PACKAGE', package_string)
+
+# Dependencies
+cc = meson.get_compiler('c')
+
+glib_req = '>= 2.38.0'
+introspection_req = '>= 1.39.0'
+gtk_req = '>= 3.0.0'
+gtk_doc_req = '>= 1.11'
+python2_req = '>= 2.5.2'
+python3_req = '>= 3.2.0'
+pygobject_req = '>= 3.2.0'
+lua_req = '>= 5.1.0'
+lua_lgi_req = '>= 0.9.0'
+luajit_req = '>= 2.0'
+
+glib_dep = dependency('glib-2.0', version: glib_req)
+gobject_dep = dependency('gobject-2.0', version: glib_req)
+gmodule_dep = dependency('gmodule-2.0', version: glib_req)
+gio_dep = dependency('gio-2.0', version: glib_req)
+introspection_dep = dependency('gobject-introspection-1.0', version: introspection_req)
+gtk_dep = dependency('gtk+-3.0', version: gtk_req, required: false)
+
+gtk_doc_dep = dependency('gtk-doc', version: gtk_doc_req, required: false)
+gladeui_dep = dependency('gladeui-2.0', required: false)
+
+python2_dep = dependency('python2', version: python2_req, required: false)
+python3_dep = dependency('python3', version: python3_req, required: false)
+pygobject_dep = dependency('pygobject-3.0', version: pygobject_req, required: false)
+lua51_dep = dependency('lua5.1', version: lua_req, required: false)
+lua51_lgi_dep = dependency('lua5.1-lgi', version: lua_lgi_req, required: false)
+luajit_dep = dependency('luajit', version: luajit_req, required: false)
+
+luajit_prg = find_program('luajit', required: false)
+xmllint_prg = find_program('xmllint', required: false)
+
+if build_machine.system() == 'darwin'
+ config_h.set_quoted('OS_OSX', 1)
+endif
+
+configure_file(
+ output: 'config.h',
+ configuration: config_h
+)
+
+# Options
+build_gtk_doc = get_option('gtk_doc')
+if build_gtk_doc and not gtk_doc_dep.found()
+ build_gtk_doc = false
+endif
+
+install_glade_catalog = get_option('glade_catalog')
+if install_glade_catalog and not gladeui_dep.found()
+ install_glade_catalog = false
+elif install_glade_catalog == true
+ catalogdir = join_paths(datadir, 'glade', 'catalogs')
+# FIXME: In gladeui-2.0.pc, catalogdir should be relative to datadir:
+# https://gitlab.gnome.org/GNOME/glade/issues/353
+# catalogdir = gladeui_dep.get_pkgconfig_variable(
+# 'catalogdir',
+# define_variable: [
+# 'datadir', datadir,
+# ]
+# )
+endif
+
+build_gtk_widgetry = get_option('widgetry')
+if build_gtk_widgetry and not gtk_dep.found()
+ build_gtk_widgetry = false
+endif
+
+build_demos = get_option('widgetry')
+if build_demos and not build_gtk_widgetry
+ build_demos = false
+endif
+
+generate_gir = get_option('introspection')
+if generate_gir and not introspection_dep.found()
+ generate_gir = false
+endif
+
+build_lua51_loader = get_option('lua51')
+lua51_found = lua51_dep.found() and lua51_lgi_dep.found()
+if build_lua51_loader and not lua51_found
+ build_lua51_loader = false
+endif
+
+build_python2_loader = get_option('python2')
+python2_found = python2_dep.found() and pygobject_dep.found()
+if build_python2_loader and not python2_found
+ build_python2_loader = false
+endif
+
+build_python3_loader = get_option('python2')
+python3_found = python3_dep.found() and pygobject_dep.found()
+if build_python3_loader and not python3_found
+ build_python3_loader = false
+endif
+
+subdir('libpeas')
+if build_gtk_widgetry == true
+ subdir('libpeas-gtk')
+endif
+
+subdir('docs')
+subdir('data')
+subdir('po')
+
+subdir('loaders')
+
+if build_demos == true
+ subdir('peas-demo')
+endif
+subdir('tests')
+
+summary = [
+ '',
+ '------',
+ 'libpeas @0@ (@1@)'.format(version, api_version),
+ '',
+ ' Demos: @0@'.format(build_demos),
+ ' Documentation: @0@'.format(build_gtk_doc),
+ ' Glade catalog: @0@'.format(install_glade_catalog),
+ ' GTK+ widgetry: @0@'.format(build_gtk_widgetry),
+ ' Introspection: @0@'.format(generate_gir),
+ ' Lua 5.1 support: @0@'.format(build_lua51_loader),
+ ' Python 2 support: @0@'.format(build_python2_loader),
+ ' Python 3 support: @0@'.format(build_python3_loader),
+ '',
+ '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..18e1779
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,32 @@
+option('lua51',
+ type: 'boolean', value: true,
+ description: 'Enable Lua 5.1 support (requires lua-lgi)')
+
+option('python2',
+ type: 'boolean', value: false,
+ description: 'Enable Python 2 support (requires pygobject)')
+option('python3',
+ type: 'boolean', value: true,
+ description: 'Enable Python 3 support (requires pygobject)')
+
+option('introspection',
+ type: 'boolean', value: true,
+ description: 'Generate introspection data (requires gobject-introspection)')
+option('vapi',
+ type: 'boolean', value: false,
+ description: 'Generate vapi data (requires vapigen)')
+
+option('widgetry',
+ type: 'boolean', value: true,
+ description: 'Build GTK+ widgetry (requires gtk+)')
+option('glade_catalog',
+ type: 'boolean', value: true,
+ description: 'Install Glade catalog (requires gladeui)')
+
+option('demos',
+ type: 'boolean', value: true,
+ description: 'Build demo programs')
+
+option('gtk_doc',
+ type: 'boolean', value: false,
+ description: 'Build reference manual (requires gtk-doc)')
diff --git a/peas-demo/meson.build b/peas-demo/meson.build
new file mode 100644
index 0000000..8441999
--- /dev/null
+++ b/peas-demo/meson.build
@@ -0,0 +1,23 @@
+peas_demo_name = 'peas-demo'
+peas_demo_string = '@0@-@1@'.format(peas_demo_name, api_version)
+
+peas_demo_c = [
+ 'peas-demo-window.c',
+ 'peas-demo.c',
+]
+
+peas_demo_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DPEAS_BUILDDIR="@0@"'.format(builddir),
+ '-DPEAS_PREFIX="@0@"'.format(prefix),
+ '-DPEAS_LIBDIR="@0@"'.format(libdir),
+]
+
+executable(
+ peas_demo_string,
+ peas_demo_c,
+ c_args: peas_demo_c_args,
+ dependencies: [libpeas_gtk_dep],
+)
+
+subdir('plugins')
diff --git a/peas-demo/plugins/helloworld/meson.build b/peas-demo/plugins/helloworld/meson.build
new file mode 100644
index 0000000..6d2ea95
--- /dev/null
+++ b/peas-demo/plugins/helloworld/meson.build
@@ -0,0 +1,31 @@
+libhelloworld_name = 'helloworld'
+
+libhelloworld_c = [
+ 'peasdemo-hello-world-configurable.c',
+ 'peasdemo-hello-world-plugin.c',
+]
+
+libhelloworld_plugin_data = [
+ 'helloworld.plugin',
+]
+
+libhelloworld_c_args = [
+ '-DHAVE_CONFIG_H',
+]
+
+libhelloworld_lib = shared_library(
+ libhelloworld_name,
+ libhelloworld_c,
+ include_directories: rootdir,
+ dependencies: [gtk_dep, libpeas_gtk_dep],
+ c_args: libhelloworld_c_args,
+ install: false,
+)
+
+custom_target(
+ 'lib@0@-data'.format(libhelloworld_name),
+ input: libhelloworld_plugin_data,
+ output: libhelloworld_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/peas-demo/plugins/luahello/meson.build b/peas-demo/plugins/luahello/meson.build
new file mode 100644
index 0000000..72d90cc
--- /dev/null
+++ b/peas-demo/plugins/luahello/meson.build
@@ -0,0 +1,14 @@
+luahello_name = 'luahello'
+
+luahello_plugin_data = [
+ 'luahello.lua',
+ 'luahello.plugin',
+]
+
+custom_target(
+ '@0@-data'.format(luahello_name),
+ input: luahello_plugin_data,
+ output: luahello_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/peas-demo/plugins/meson.build b/peas-demo/plugins/meson.build
new file mode 100644
index 0000000..c2c343f
--- /dev/null
+++ b/peas-demo/plugins/meson.build
@@ -0,0 +1,11 @@
+subdir('helloworld')
+
+if build_lua51_loader == true
+ subdir('luahello')
+endif
+
+if build_python3_loader == true
+ subdir('pythonhello')
+endif
+
+subdir('secondtime')
diff --git a/peas-demo/plugins/pythonhello/meson.build b/peas-demo/plugins/pythonhello/meson.build
new file mode 100644
index 0000000..d3fbf1d
--- /dev/null
+++ b/peas-demo/plugins/pythonhello/meson.build
@@ -0,0 +1,14 @@
+pythonhello_name = 'pythonhello'
+
+pythonhello_plugin_data = [
+ 'pythonhello.py',
+ 'pythonhello.plugin',
+]
+
+custom_target(
+ '@0@-data'.format(pythonhello_name),
+ input: pythonhello_plugin_data,
+ output: pythonhello_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/peas-demo/plugins/secondtime/meson.build b/peas-demo/plugins/secondtime/meson.build
new file mode 100644
index 0000000..6d4716e
--- /dev/null
+++ b/peas-demo/plugins/secondtime/meson.build
@@ -0,0 +1,30 @@
+libsecondtime_name = 'secondtime'
+
+libsecondtime_c = [
+ 'second-time.c',
+]
+
+libsecondtime_plugin_data = [
+ 'secondtime.plugin',
+]
+
+libsecondtime_c_args = [
+ '-DHAVE_CONFIG_H',
+]
+
+libsecondtime_lib = shared_library(
+ libsecondtime_name,
+ libsecondtime_c,
+ include_directories: rootdir,
+ dependencies: [gtk_dep, libpeas_dep],
+ c_args: libsecondtime_c_args,
+ install: false,
+)
+
+custom_target(
+ 'lib@0@-data'.format(libsecondtime_name),
+ input: libsecondtime_plugin_data,
+ output: libsecondtime_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..9aca128
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,4 @@
+i18n.gettext(
+ package_string,
+ preset: 'glib',
+)
diff --git a/tests/libpeas-gtk/meson.build b/tests/libpeas-gtk/meson.build
new file mode 100644
index 0000000..1faafa6
--- /dev/null
+++ b/tests/libpeas-gtk/meson.build
@@ -0,0 +1,33 @@
+
+libpeas_gtk_tests_sources = [
+ ['plugin-manager'],
+ ['plugin-manager-store'],
+ ['plugin-manager-view'],
+]
+
+subdir('testing')
+
+subdir('plugins')
+
+libpeas_gtk_tests_deps = [
+ glib_dep,
+ gtk_dep,
+ libpeas_dep,
+ libpeas_gtk_dep,
+
+ libtesting_util_dep,
+ libpeas_gtk_testing_dep,
+]
+
+foreach test: libpeas_gtk_tests_sources
+ test_name = test.get(0)
+ test_sources = ['@0@.c'.format(test_name)]
+
+ test_exe = executable(
+ test_name,
+ test_sources,
+ dependencies: libpeas_gtk_tests_deps
+ )
+
+ test('test-@0@'.format(test_name), test_exe)
+endforeach
diff --git a/tests/libpeas-gtk/plugins/builtin-configurable/meson.build b/tests/libpeas-gtk/plugins/builtin-configurable/meson.build
new file mode 100644
index 0000000..c967f5d
--- /dev/null
+++ b/tests/libpeas-gtk/plugins/builtin-configurable/meson.build
@@ -0,0 +1,37 @@
+libbuiltin_configurable_name = 'builtin-configurable'
+
+libbuiltin_configurable_public_h = [
+ 'builtin-configurable.h',
+]
+
+libbuiltin_configurable_c = [
+ 'builtin-configurable.c',
+]
+
+libbuiltin_configurable_plugin_data = [
+ 'builtin-configurable.plugin',
+]
+
+libbuiltin_configurable_deps = [
+ glib_dep,
+ gobject_dep,
+ gmodule_dep,
+ libpeas_dep,
+ libpeas_gtk_dep,
+]
+
+libbuiltin_configurable_lib = shared_library(
+ libbuiltin_configurable_name,
+ libbuiltin_configurable_c,
+ include_directories: rootdir,
+ dependencies: libbuiltin_configurable_deps,
+ install: false,
+)
+
+custom_target(
+ 'lib@0@-data'.format(libbuiltin_configurable_name),
+ input: libbuiltin_configurable_plugin_data,
+ output: libbuiltin_configurable_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/tests/libpeas-gtk/plugins/configurable/meson.build b/tests/libpeas-gtk/plugins/configurable/meson.build
new file mode 100644
index 0000000..553066b
--- /dev/null
+++ b/tests/libpeas-gtk/plugins/configurable/meson.build
@@ -0,0 +1,37 @@
+libconfigurable_name = 'configurable'
+
+libconfigurable_public_h = [
+ 'configurable-plugin.h',
+]
+
+libconfigurable_c = [
+ 'configurable-plugin.c',
+]
+
+libconfigurable_plugin_data = [
+ 'configurable.plugin',
+]
+
+libconfigurable_deps = [
+ glib_dep,
+ gobject_dep,
+ gmodule_dep,
+ libpeas_dep,
+ libpeas_gtk_dep,
+]
+
+libconfigurable_lib = shared_library(
+ libconfigurable_name,
+ libconfigurable_c,
+ include_directories: rootdir,
+ dependencies: libconfigurable_deps,
+ install: false,
+)
+
+custom_target(
+ 'lib@0@-data'.format(libconfigurable_name),
+ input: libconfigurable_plugin_data,
+ output: libconfigurable_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/tests/libpeas-gtk/plugins/meson.build b/tests/libpeas-gtk/plugins/meson.build
new file mode 100644
index 0000000..432607f
--- /dev/null
+++ b/tests/libpeas-gtk/plugins/meson.build
@@ -0,0 +1,18 @@
+libpeas_gtk_plugins_data = [
+ 'hidden.plugin',
+ 'invalid-custom-icon.plugin',
+ 'invalid-stock-icon.plugin',
+ 'valid-stock-icon.plugin',
+]
+
+custom_target(
+ 'libpeas-gtk-test-data',
+ input: libpeas_gtk_plugins_data,
+ output: libpeas_gtk_plugins_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
+
+subdir('builtin-configurable')
+subdir('configurable')
+subdir('valid-custom-icon')
diff --git a/tests/libpeas-gtk/plugins/valid-custom-icon/meson.build b/tests/libpeas-gtk/plugins/valid-custom-icon/meson.build
new file mode 100644
index 0000000..b5ec576
--- /dev/null
+++ b/tests/libpeas-gtk/plugins/valid-custom-icon/meson.build
@@ -0,0 +1,14 @@
+valid_custom_icon_name = 'valid-custom-icon'
+
+valid_custom_icon_plugin_data = [
+ 'exists.png',
+ 'valid-custom-icon.plugin',
+]
+
+custom_target(
+ '@0@-data'.format(valid_custom_icon_name),
+ input: valid_custom_icon_plugin_data,
+ output: valid_custom_icon_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/tests/libpeas-gtk/testing/meson.build b/tests/libpeas-gtk/testing/meson.build
new file mode 100644
index 0000000..62fd54d
--- /dev/null
+++ b/tests/libpeas-gtk/testing/meson.build
@@ -0,0 +1,44 @@
+libpeas_gtk_testing_name = 'libpeas-gtk-testing'
+libpeas_gtk_testing_string = '@0@-@1@'.format(libpeas_gtk_testing_name, api_version)
+
+libpeas_gtk_testing_public_h = [
+ 'testing.h',
+]
+
+libpeas_gtk_testing_c = [
+ 'testing.c',
+]
+
+libpeas_gtk_testing_deps = [
+ glib_dep,
+ introspection_dep,
+ libpeas_dep,
+ libpeas_gtk_dep,
+ libtesting_util_dep,
+]
+
+libpeas_gtk_testing_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DBUILDDIR="@0@"'.format(builddir),
+ '-DSRCDIR="@0@"'.format(srcdir),
+]
+
+libpeas_gtk_testing_link_args = [
+ '-export-dynamic',
+]
+
+libpeas_gtk_testing_lib = library(
+ libpeas_gtk_testing_string,
+ libpeas_gtk_testing_c,
+ include_directories: rootdir,
+ dependencies: libpeas_gtk_testing_deps,
+ c_args: libpeas_gtk_testing_c_args,
+ link_args: libpeas_gtk_testing_link_args,
+ install: false,
+)
+
+libpeas_gtk_testing_dep = declare_dependency(
+ link_with: libpeas_gtk_testing_lib,
+ include_directories: include_directories('.'),
+ dependencies: libpeas_gtk_testing_deps,
+)
diff --git a/tests/libpeas/introspection/meson.build b/tests/libpeas/introspection/meson.build
new file mode 100644
index 0000000..2cb4628
--- /dev/null
+++ b/tests/libpeas/introspection/meson.build
@@ -0,0 +1,71 @@
+libintrospection_name = 'introspection'
+libintrospection_string = '@0@-@1@'.format(libintrospection_name, api_version)
+
+libintrospection_public_h = [
+ 'introspection-abstract.h',
+ 'introspection-base.h',
+ 'introspection-callable.h',
+ 'introspection-has-prerequisite.h',
+ 'introspection-prerequisite.h',
+ 'introspection-unimplemented.h',
+]
+
+libintrospection_c = [
+ 'introspection-abstract.c',
+ 'introspection-base.c',
+ 'introspection-callable.c',
+ 'introspection-has-prerequisite.c',
+ 'introspection-prerequisite.c',
+ 'introspection-unimplemented.c',
+]
+
+libintrospection_deps = [
+ glib_dep,
+ gobject_dep,
+ libpeas_dep,
+]
+
+libintrospection_c_args = [
+ '-DHAVE_CONFIG_H',
+]
+
+libintrospection_link_args = [
+ '-export-dynamic',
+]
+
+libintrospection_lib = library(
+ libintrospection_string,
+ libintrospection_c,
+ include_directories: rootdir,
+ dependencies: libintrospection_deps,
+ c_args: libintrospection_c_args,
+ link_args: libintrospection_link_args,
+ install: false,
+)
+
+libintrospection_dep = declare_dependency(
+ link_with: libintrospection_lib,
+ include_directories: include_directories('.'),
+ dependencies: libintrospection_deps,
+)
+
+libintrospection_gir = gnome.generate_gir(
+ libintrospection_lib,
+ sources: libintrospection_c + libintrospection_public_h,
+ nsversion: api_version,
+ namespace: 'Introspection',
+ symbol_prefix: 'introspection',
+ identifier_prefix: 'Introspection',
+ dependencies: [libintrospection_dep],
+ export_packages: [libintrospection_string],
+ link_with: libintrospection_lib,
+ includes: ['GObject-2.0', libpeas_gir.get(0)],
+ install: false,
+ extra_args: [
+ '--warn-all',
+ ],
+)
+
+libintrospection_gir_dep = declare_dependency(
+ sources: libintrospection_gir
+)
diff --git a/tests/libpeas/meson.build b/tests/libpeas/meson.build
new file mode 100644
index 0000000..0c82d80
--- /dev/null
+++ b/tests/libpeas/meson.build
@@ -0,0 +1,57 @@
+
+libpeas_tests_sources = [
+ ['engine'],
+ ['extension-c'],
+ ['extension-set'],
+ ['plugin-info'],
+]
+
+libpeas_tests_c_args = []
+
+if build_lua51_loader == true
+ libpeas_tests_sources += [['extension-lua', [lua51_dep]]]
+endif
+
+if build_python3_loader == true
+ libpeas_tests_sources += [['extension-py', [python3_dep, pygobject_dep]]]
+
+ libpeas_tests_c_args += [
+ '-DPYGOBJECT_MAJOR_VERSION=@0@'.format(pygobject_version_major),
+ '-DPYGOBJECT_MINOR_VERSION=@0@'.format(pygobject_version_minor),
+ '-DPYGOBJECT_MICRO_VERSION=@0@'.format(pygobject_version_micro),
+ ]
+endif
+
+subdir('introspection')
+subdir('testing')
+
+subdir('plugins')
+
+libpeas_tests_deps = [
+ glib_dep,
+ libpeas_dep,
+ libintrospection_dep,
+ libintrospection_gir_dep,
+ libtesting_util_dep,
+ libpeas_testing_dep,
+ libembedded_dep,
+]
+
+foreach test: libpeas_tests_sources
+ test_name = test.get(0)
+ test_sources = ['@0@.c'.format(test_name)]
+ test_deps = libpeas_tests_deps
+
+ if test.length() > 1
+ test_deps += test.get(1)
+ endif
+
+ test_exe = executable(
+ test_name,
+ test_sources,
+ dependencies: test_deps,
+ c_args: libpeas_tests_c_args,
+ )
+
+ test('test-@0@'.format(test_name), test_exe)
+endforeach
diff --git a/tests/libpeas/plugins/embedded/meson.build b/tests/libpeas/plugins/embedded/meson.build
new file mode 100644
index 0000000..b56c0c9
--- /dev/null
+++ b/tests/libpeas/plugins/embedded/meson.build
@@ -0,0 +1,52 @@
+libembedded_name = 'embedded'
+
+libembedded_public_h = [
+ 'embedded-plugin.h',
+]
+
+libembedded_c = [
+ 'embedded-plugin.c',
+]
+
+libembedded_plugin_data = [
+ 'embedded.gresource.xml',
+ 'embedded.plugin',
+ 'embedded-invalid-loader.plugin',
+ 'embedded-missing-symbol.plugin',
+]
+
+libembedded_res = gnome.compile_resources(
+ 'embedded-resources',
+ 'embedded.gresource.xml',
+ export: true,
+ extra_args: [
+ '--manual-register',
+ ],
+)
+
+libembedded_deps = [
+ glib_dep,
+ libpeas_dep,
+]
+
+libembedded_lib = shared_library(
+ libembedded_name,
+ libembedded_c + libembedded_res,
+ include_directories: rootdir,
+ dependencies: libembedded_deps,
+ install: false,
+)
+
+libembedded_dep = declare_dependency(
+ link_with: libembedded_lib,
+ include_directories: include_directories('.'),
+ dependencies: libembedded_deps,
+)
+
+custom_target(
+ '@0@-data'.format(libembedded_name),
+ input: libembedded_plugin_data,
+ output: libembedded_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/tests/libpeas/plugins/extension-c/meson.build b/tests/libpeas/plugins/extension-c/meson.build
new file mode 100644
index 0000000..ab03c4c
--- /dev/null
+++ b/tests/libpeas/plugins/extension-c/meson.build
@@ -0,0 +1,64 @@
+libextension_c_name = 'extension-c'
+libextension_c_missing_name = 'extension-c-missing-symbol'
+
+libextension_c_public_h = [
+ 'extension-c-abstract.h',
+ 'extension-c-plugin.h',
+]
+
+libextension_c_c = [
+ 'extension-c-abstract.c',
+ 'extension-c-plugin.c',
+]
+
+libextension_c_plugin_data = [
+ 'extension-c.gschema.xml',
+ 'extension-c.plugin',
+]
+
+libextension_c_deps = [
+ glib_dep,
+ gmodule_dep,
+ libpeas_dep,
+ libintrospection_dep,
+]
+
+libextension_c_lib = shared_library(
+ libextension_c_name,
+ libextension_c_c,
+ include_directories: rootdir,
+ dependencies: libextension_c_deps,
+ install: false,
+)
+
+custom_target(
+ 'lib@0@-data'.format(libextension_c_name),
+ input: libextension_c_plugin_data,
+ output: libextension_c_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
+
+libextension_c_missing_c = [
+ 'extension-c-missing-symbol-plugin.c',
+]
+
+libextension_c_missing_plugin_data = [
+ 'extension-c-missing-symbol.plugin',
+]
+
+libextension_c_missing_lib = shared_library(
+ libextension_c_missing_name,
+ libextension_c_missing_c,
+ include_directories: rootdir,
+ dependencies: libextension_c_deps,
+ install: false,
+)
+
+custom_target(
+ 'lib@0@-data'.format(libextension_c_missing_name),
+ input: libextension_c_missing_plugin_data,
+ output: libextension_c_missing_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/tests/libpeas/plugins/extension-lua/meson.build b/tests/libpeas/plugins/extension-lua/meson.build
new file mode 100644
index 0000000..f113a39
--- /dev/null
+++ b/tests/libpeas/plugins/extension-lua/meson.build
@@ -0,0 +1,15 @@
+extension_lua_name = 'extension-lua'
+
+extension_lua_plugin_data = [
+ 'extension-lua51.gschema.xml',
+ 'extension-lua51.lua',
+ 'extension-lua51.plugin',
+]
+
+custom_target(
+ '@0@-data'.format(extension_lua_name),
+ input: extension_lua_plugin_data,
+ output: extension_lua_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/tests/libpeas/plugins/extension-python/meson.build b/tests/libpeas/plugins/extension-python/meson.build
new file mode 100644
index 0000000..16e29fd
--- /dev/null
+++ b/tests/libpeas/plugins/extension-python/meson.build
@@ -0,0 +1,49 @@
+extension_python_name = 'extension-python'
+
+python2_in = configuration_data()
+python2_in.set('PY_LOADER', 'python')
+
+configure_file(
+ input: 'extension-py.gschema.xml.in',
+ output: 'extension-python.gschema.xml',
+ configuration: python2_in,
+ install: false,
+)
+
+configure_file(
+ input: 'extension-py.plugin.in',
+ output: 'extension-python.plugin',
+ configuration: python2_in,
+ install: false,
+)
+
+configure_file(
+ input: 'extension-py.py.in',
+ output: 'extension-python.py',
+ configuration: python2_in,
+ install: false,
+)
+
+python3_in = configuration_data()
+python3_in.set('PY_LOADER', 'python3')
+
+configure_file(
+ input: 'extension-py.gschema.xml.in',
+ output: 'extension-python3.gschema.xml',
+ configuration: python3_in,
+ install: false,
+)
+
+configure_file(
+ input: 'extension-py.plugin.in',
+ output: 'extension-python3.plugin',
+ configuration: python3_in,
+ install: false,
+)
+
+configure_file(
+ input: 'extension-py.py.in',
+ output: 'extension-python3.py',
+ configuration: python3_in,
+ install: false,
+)
diff --git a/tests/libpeas/plugins/meson.build b/tests/libpeas/plugins/meson.build
new file mode 100644
index 0000000..babe693
--- /dev/null
+++ b/tests/libpeas/plugins/meson.build
@@ -0,0 +1,33 @@
+libpeas_plugins_data = [
+ 'extension-c-nonexistent.plugin',
+ 'extension-lua51-nonexistent.plugin',
+ 'extension-python-nonexistent.plugin',
+ 'extension-python3-nonexistent.plugin',
+ 'info-missing-module.plugin',
+ 'info-missing-name.plugin',
+ 'invalid.plugin',
+ 'nonexistent-dep.plugin',
+ 'not-loadable.plugin',
+ 'os-dependant-help.plugin',
+ 'two-deps.plugin',
+ 'unkown-loader.plugin',
+]
+
+custom_target(
+ 'libpeas-test-data',
+ input: libpeas_plugins_data,
+ output: libpeas_plugins_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
+
+subdir('embedded')
+subdir('extension-c')
+
+if build_lua51_loader == true
+ subdir('extension-lua')
+endif
+
+if build_python3_loader == true
+ subdir('extension-python')
+endif
diff --git a/tests/libpeas/testing/meson.build b/tests/libpeas/testing/meson.build
new file mode 100644
index 0000000..2dd3d7b
--- /dev/null
+++ b/tests/libpeas/testing/meson.build
@@ -0,0 +1,46 @@
+libpeas_testing_name = 'libpeas-testing'
+libpeas_testing_string = '@0@-@1@'.format(libpeas_testing_name, api_version)
+
+libpeas_testing_public_h = [
+ 'testing.h',
+ 'testing-extension.h',
+]
+
+libpeas_testing_c = [
+ 'testing.c',
+ 'testing-extension.c',
+]
+
+libpeas_testing_deps = [
+ glib_dep,
+ introspection_dep,
+ libpeas_dep,
+ libtesting_util_dep,
+ libintrospection_dep,
+]
+
+libpeas_testing_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DBUILDDIR="@0@"'.format(builddir),
+ '-DSRCDIR="@0@"'.format(srcdir),
+]
+
+libpeas_testing_link_args = [
+ '-export-dynamic',
+]
+
+libpeas_testing_lib = library(
+ libpeas_testing_string,
+ libpeas_testing_c,
+ include_directories: rootdir,
+ dependencies: libpeas_testing_deps,
+ c_args: libpeas_testing_c_args,
+ link_args: libpeas_testing_link_args,
+ install: false,
+)
+
+libpeas_testing_dep = declare_dependency(
+ link_with: libpeas_testing_lib,
+ include_directories: include_directories('.'),
+ dependencies: libpeas_testing_deps,
+)
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..18e4e2f
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,8 @@
+subdir('testing-util')
+
+subdir('libpeas')
+if build_gtk_widgetry == true
+ subdir('libpeas-gtk')
+endif
+
+subdir('plugins')
diff --git a/tests/plugins/builtin/meson.build b/tests/plugins/builtin/meson.build
new file mode 100644
index 0000000..2a46254
--- /dev/null
+++ b/tests/plugins/builtin/meson.build
@@ -0,0 +1,34 @@
+libbuiltin_name = 'builtin'
+
+libbuiltin_public_h = [
+ 'builtin-plugin.h',
+]
+
+libbuiltin_c = [
+ 'builtin-plugin.c',
+]
+
+libbuiltin_plugin_data = [
+ 'builtin.plugin',
+]
+
+libbuiltin_plugin_deps = [
+ glib_dep,
+ gobject_dep,
+ libpeas_dep,
+]
+
+libbuiltin_lib = shared_library(
+ libbuiltin_name,
+ libbuiltin_c,
+ dependencies: libbuiltin_plugin_deps,
+ install: false,
+)
+
+custom_target(
+ 'lib@0@-data'.format(libbuiltin_name),
+ input: libbuiltin_plugin_data,
+ output: libbuiltin_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/tests/plugins/has-dep/meson.build b/tests/plugins/has-dep/meson.build
new file mode 100644
index 0000000..eddef12
--- /dev/null
+++ b/tests/plugins/has-dep/meson.build
@@ -0,0 +1,35 @@
+libhas_dep_name = 'has-dep'
+
+libhas_dep_public_h = [
+ 'has-dep-plugin.h',
+]
+
+libhas_dep_c = [
+ 'has-dep-plugin.c',
+]
+
+libhas_dep_plugin_data = [
+ 'has-dep.plugin',
+]
+
+libhas_dep_plugin_deps = [
+ glib_dep,
+ gobject_dep,
+ gmodule_dep,
+ libpeas_dep,
+]
+
+libhas_dep_lib = shared_library(
+ libhas_dep_name,
+ libhas_dep_c,
+ dependencies: libhas_dep_plugin_deps,
+ install: false,
+)
+
+custom_target(
+ 'lib@0@-data'.format(libhas_dep_name),
+ input: libhas_dep_plugin_data,
+ output: libhas_dep_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/tests/plugins/loadable/meson.build b/tests/plugins/loadable/meson.build
new file mode 100644
index 0000000..522959a
--- /dev/null
+++ b/tests/plugins/loadable/meson.build
@@ -0,0 +1,34 @@
+libloadable_name = 'loadable'
+
+libloadable_public_h = [
+ 'loadable-plugin.h',
+]
+
+libloadable_c = [
+ 'loadable-plugin.c',
+]
+
+libloadable_plugin_data = [
+ 'loadable.plugin',
+]
+
+libloadable_plugin_deps = [
+ glib_dep,
+ gobject_dep,
+ libpeas_dep,
+]
+
+libloadable_lib = shared_library(
+ libloadable_name,
+ libloadable_c,
+ dependencies: libloadable_plugin_deps,
+ install: false,
+)
+
+custom_target(
+ 'lib@0@-data'.format(libloadable_name),
+ input: libloadable_plugin_data,
+ output: libloadable_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
diff --git a/tests/plugins/meson.build b/tests/plugins/meson.build
new file mode 100644
index 0000000..c19a8fb
--- /dev/null
+++ b/tests/plugins/meson.build
@@ -0,0 +1,20 @@
+generic_name = 'generic'
+
+generic_plugins_data = [
+ 'full-info.plugin',
+ 'min-info.plugin',
+ 'unavailable.plugin',
+]
+
+custom_target(
+ '@0@-data'.format(generic_name),
+ input: generic_plugins_data,
+ output: generic_plugins_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+)
+
+subdir('builtin')
+subdir('has-dep')
+subdir('loadable')
+subdir('self-dep')
diff --git a/tests/plugins/self-dep/meson.build b/tests/plugins/self-dep/meson.build
new file mode 100644
index 0000000..4cf0471
--- /dev/null
+++ b/tests/plugins/self-dep/meson.build
@@ -0,0 +1,34 @@
+libself_dep_name = 'self-dep'
+
+libself_dep_public_h = [
+ 'self-dep-plugin.h',
+]
+
+libself_dep_c = [
+ 'self-dep-plugin.c',
+]
+
+libself_dep_plugin_data = [
+ 'self-dep.plugin',
+]
+
+libself_dep_plugin_deps = [
+ glib_dep,
+ gobject_dep,
+ libpeas_dep,
+]
+
+libself_dep_lib = shared_library(
+ libself_dep_name,
+ libself_dep_c,
+ dependencies: libself_dep_plugin_deps,
+ install: false,
+)
+
+custom_target(
+ 'lib@0@-data'.format(libself_dep_name),
+ input: libself_dep_plugin_data,
+ output: libself_dep_plugin_data,
+ command: ['cp', '@INPUT@', '@OUTDIR@'],
+ build_by_default: true,
+) \ No newline at end of file
diff --git a/tests/testing-util/meson.build b/tests/testing-util/meson.build
new file mode 100644
index 0000000..890ddb8
--- /dev/null
+++ b/tests/testing-util/meson.build
@@ -0,0 +1,42 @@
+libtesting_util_name = 'testing-util'
+libtesting_util_string = '@0@-@1@'.format(libtesting_util_name, api_version)
+
+libtesting_util_public_h = [
+ 'testing-util.h',
+]
+
+libtesting_util_c = [
+ 'testing-util.c',
+]
+
+libtesting_util_deps = [
+ glib_dep,
+ introspection_dep,
+ libpeas_dep,
+]
+
+libtesting_util_c_args = [
+ '-DHAVE_CONFIG_H',
+ '-DBUILDDIR="@0@"'.format(builddir),
+ '-DSRCDIR="@0@"'.format(srcdir),
+]
+
+libtesting_util_link_args = [
+ '-export-dynamic',
+]
+
+libtesting_util_lib = library(
+ libtesting_util_string,
+ libtesting_util_c,
+ include_directories: rootdir,
+ dependencies: libtesting_util_deps,
+ c_args: libtesting_util_c_args,
+ link_args: libtesting_util_link_args,
+ install: false,
+)
+
+libtesting_util_dep = declare_dependency(
+ link_with: libtesting_util_lib,
+ include_directories: include_directories('.'),
+ dependencies: libtesting_util_deps,
+)