[gnome-software/wip/hughsie/meson: 2/2] Port to the meson build system



commit 464ae919889167b0777ebd1853f7e752cda49cdc
Author: Richard Hughes <richard hughsie com>
Date:   Thu Dec 1 17:17:00 2016 +0000

    Port to the meson build system

 Makefile.am                                        |   81 ----
 config.h.in                                        |    6 +
 configure.ac                                       |  502 --------------------
 contrib/gnome-software.spec.in                     |   31 +-
 data/Makefile.am                                   |   62 ---
 data/appdata/Makefile.am                           |    8 -
 data/appdata/meson.build                           |   15 +
 data/appdata/org.gnome.Software.appdata.xml.in     |   22 +-
 data/icons/Makefile.am                             |    4 -
 data/icons/hicolor/16x16/Makefile.am               |    4 -
 data/icons/hicolor/22x22/Makefile.am               |    4 -
 data/icons/hicolor/24x24/Makefile.am               |    4 -
 data/icons/hicolor/256x256/Makefile.am             |    4 -
 data/icons/hicolor/32x32/Makefile.am               |    4 -
 data/icons/hicolor/48x48/Makefile.am               |    4 -
 data/icons/hicolor/Makefile.am                     |   10 -
 data/icons/hicolor/meson.build                     |   20 +
 data/icons/hicolor/scalable/Makefile.am            |    6 -
 data/icons/meson.build                             |    5 +
 data/meson.build                                   |   43 ++
 ...org.gnome.software.external-appstream.policy.in |    4 +-
 data/tests/Makefile.am                             |    9 -
 doc/Makefile.am                                    |    3 -
 doc/api/Makefile.am                                |  113 -----
 doc/api/meson.build                                |   13 +
 doc/meson.build                                    |    5 +
 meson.build                                        |  197 ++++++++
 meson_options.txt                                  |   19 +
 po/meson.build                                     |   35 ++
 src/Makefile.am                                    |  445 -----------------
 src/gnome-software-local-file.desktop.in           |    4 +-
 src/meson.build                                    |  317 ++++++++++++
 src/org.gnome.Software.desktop.in                  |    6 +-
 src/plugins/Makefile.am                            |  416 ----------------
 src/plugins/meson.build                            |  486 +++++++++++++++++++
 tests/Makefile.am                                  |   13 -
 36 files changed, 1195 insertions(+), 1729 deletions(-)
---
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..4522f46
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,6 @@
+#mesondefine GETTEXT_PACKAGE
+#mesondefine GS_PLUGIN_API_VERSION
+#mesondefine VERSION
+#mesondefine PACKAGE_VERSION
+#mesondefine PACKAGE_NAME
+#mesondefine HAVE_PACKAGEKIT
diff --git a/contrib/gnome-software.spec.in b/contrib/gnome-software.spec.in
index 424f73e..6d3dd5b 100644
--- a/contrib/gnome-software.spec.in
+++ b/contrib/gnome-software.spec.in
@@ -47,6 +47,7 @@ BuildRequires: flatpak-devel >= %{flatpak_version}
 BuildRequires: ostree-devel
 BuildRequires: rpm-devel
 BuildRequires: libgudev1-devel
+BuildRequires: meson
 
 Requires: appstream-data
 %if 0%{?fedora}
@@ -87,23 +88,23 @@ the source tree. Most users do not need this subpackage installed.
 %prep
 %setup -q
 
+# FIXME: remove when https://bugzilla.redhat.com/show_bug.cgi?id=1401062 is fixed
+%global __meson %{__meson} -Denable-gudev=true -Denable-ubuntu-reviews=false -Denable-packagekit=true 
-Denable-external-appstream=false -Db_lundef=false
 %build
-%configure \
-    --disable-static \
-    --enable-gudev \
-%if %{with packagekit}
-    --enable-packagekit \
-%else
-    --disable-packagekit \
-%endif
-    --disable-external-appstream \
-    --disable-silent-rules
-make %{?_smp_mflags}
+%meson
 
-%install
-%make_install
+#    --enable-gudev
+#%if %{with packagekit}
+#    --enable-packagekit
+#%else
+#    --disable-packagekit
+#%endif
+#    --disable-external-appstream
 
-rm %{buildroot}%{_libdir}/gs-plugins-%{gs_plugin_version}/*.la
+%meson_build
+
+%install
+%meson_install
 
 # make the software center load faster
 desktop-file-edit %{buildroot}%{_datadir}/applications/org.gnome.Software.desktop \
@@ -138,7 +139,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null || :
 glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 
 %files -f %{name}.lang
-%doc AUTHORS NEWS README
+%doc AUTHORS README
 %license COPYING
 %{_bindir}/gnome-software
 %{_datadir}/applications/*.desktop
diff --git a/data/appdata/meson.build b/data/appdata/meson.build
new file mode 100644
index 0000000..27521c5
--- /dev/null
+++ b/data/appdata/meson.build
@@ -0,0 +1,15 @@
+# Copyright (C) 2016 Richard Hughes <richard hughsie com>
+#
+# Licensed under the GNU General Public License Version 2 or later
+
+# FIXME: Use i18n.merge_file when available
+msgfmt = find_program('msgfmt')
+podir = join_paths(meson.source_root(), 'po')
+custom_target('appdata-file',
+              input: 'org.gnome.Software.appdata.xml.in',
+              output: 'org.gnome.Software.appdata.xml',
+              install: true,
+              install_dir: join_paths(get_option('datadir'), 'appdata'),
+              command: [
+                msgfmt, '--xml', '--template', '@INPUT@', '-d', podir, '-o', '@OUTPUT@'
+              ])
diff --git a/data/appdata/org.gnome.Software.appdata.xml.in b/data/appdata/org.gnome.Software.appdata.xml.in
index 5fa4825..6a71ff3 100644
--- a/data/appdata/org.gnome.Software.appdata.xml.in
+++ b/data/appdata/org.gnome.Software.appdata.xml.in
@@ -4,41 +4,41 @@
   <id>org.gnome.Software.desktop</id>
   <metadata_license>CC0-1.0</metadata_license>
   <project_license>GPL-2.0+</project_license>
-  <_name>GNOME Software</_name>
-  <_summary>Application manager for GNOME</_summary>
+  <name>GNOME Software</name>
+  <summary>Application manager for GNOME</summary>
   <description>
-    <_p>
+    <p>
       Software allows you to find and install new applications and system
       extensions and remove existing installed applications.
-    </_p>
-    <_p>
+    </p>
+    <p>
       GNOME Software showcases featured and popular applications with useful
       descriptions and multiple screenshots per application.
       Applications can be found either through browsing the list of categories
       or by searching.
       It also allows you to update your system using an offline update.
-    </_p>
+    </p>
   </description>
   <screenshots>
     <screenshot height="675" width="1200" type="default">
       <image>https://git.gnome.org/browse/gnome-software/plain/data/appdata/ss-overview.png</image>
-      <_caption>Overview panel</_caption>
+      <caption>Overview panel</caption>
     </screenshot>
     <screenshot height="675" width="1200">
       <image>https://git.gnome.org/browse/gnome-software/plain/data/appdata/ss-details.png</image>
-      <_caption>Details panel</_caption>
+      <caption>Details panel</caption>
     </screenshot>
     <screenshot height="675" width="1200">
       <image>https://git.gnome.org/browse/gnome-software/plain/data/appdata/ss-installed.png</image>
-      <_caption>Installed panel</_caption>
+      <caption>Installed panel</caption>
     </screenshot>
     <screenshot height="675" width="1200">
       <image>https://git.gnome.org/browse/gnome-software/plain/data/appdata/ss-updates.png</image>
-      <_caption>Updates panel</_caption>
+      <caption>Updates panel</caption>
     </screenshot>
     <screenshot height="675" width="1200">
       <image>https://git.gnome.org/browse/gnome-software/plain/data/appdata/ss-updates-details.png</image>
-      <_caption>The update details</_caption>
+      <caption>The update details</caption>
     </screenshot>
   </screenshots>
 
diff --git a/data/icons/hicolor/meson.build b/data/icons/hicolor/meson.build
new file mode 100644
index 0000000..89ee99d
--- /dev/null
+++ b/data/icons/hicolor/meson.build
@@ -0,0 +1,20 @@
+# Copyright (C) 2016 Richard Hughes <richard hughsie com>
+#
+# Licensed under the GNU General Public License Version 2 or later
+
+install_data('16x16/org.gnome.Software.png',
+             install_dir : 'share/icons/hicolor/16x16/apps')
+install_data('22x22/org.gnome.Software.png',
+             install_dir : 'share/icons/hicolor/22x22/apps')
+install_data('24x24/org.gnome.Software.png',
+             install_dir : 'share/icons/hicolor/24x24/apps')
+install_data('32x32/org.gnome.Software.png',
+             install_dir : 'share/icons/hicolor/32x32/apps')
+install_data('48x48/org.gnome.Software.png',
+             install_dir : 'share/icons/hicolor/48x48/apps')
+install_data('256x256/org.gnome.Software.png',
+             install_dir : 'share/icons/hicolor/256x256/apps')
+install_data('scalable/org.gnome.Software-symbolic.svg',
+             install_dir : 'share/icons/hicolor/scalable/apps')
+install_data('scalable/software-installed-symbolic.svg',
+             install_dir : 'share/icons/hicolor/scalable/apps')
diff --git a/data/icons/meson.build b/data/icons/meson.build
new file mode 100644
index 0000000..3721dff
--- /dev/null
+++ b/data/icons/meson.build
@@ -0,0 +1,5 @@
+# Copyright (C) 2016 Richard Hughes <richard hughsie com>
+#
+# Licensed under the GNU General Public License Version 2 or later
+
+subdir('hicolor')
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..d82d1e3
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,43 @@
+# Copyright (C) 2016 Richard Hughes <richard hughsie com>
+#
+# Licensed under the GNU General Public License Version 2 or later
+
+subdir('appdata')
+subdir('icons')
+
+compiled = gnome.compile_schemas()
+install_data('org.gnome.software.gschema.xml',
+             install_dir : 'share/glib-2.0/schemas')
+
+#if HAVE_EXTERNAL_APPSTREAM
+
+if get_option('enable-external-appstream')
+  # replace @libexecdir@
+  configure_file(input : 'org.gnome.software.external-appstream.policy.in',
+                 output : 'org.gnome.software.external-appstream.policy',
+                 install: true,
+                 install_dir: join_paths(get_option('datadir'), 'polkit-1', 'actions'),
+                 configuration : conf)
+endif
+
+install_data([
+             'upgrade-bg.png',
+             'featured-ardour.png',
+             'featured-ardour-bg.png',
+             'featured-blender.png',
+             'featured-builder.png',
+             'featured-builder-bg.jpg',
+             'featured-chess.png',
+             'featured-firefox.png',
+             'featured-gimp.png',
+             'featured-gnome-sudoku.png',
+             'featured-inkscape.svg',
+             'featured-maps.png',
+             'featured-maps-bg.png',
+             'featured-mypaint.png',
+             'featured-polari.svg',
+             'featured-transmission.png',
+             'featured-weather.png',
+             'featured-weather-bg.png'
+             ],
+             install_dir : 'share/gnome-software')
diff --git a/data/org.gnome.software.external-appstream.policy.in 
b/data/org.gnome.software.external-appstream.policy.in
index a59df11..69af72a 100644
--- a/data/org.gnome.software.external-appstream.policy.in
+++ b/data/org.gnome.software.external-appstream.policy.in
@@ -8,8 +8,8 @@
   <vendor_url>https://www.gnome.org/</vendor_url>
 
   <action id="org.gnome.software.install-appstream">
-    <_description>Install an appstream file into a system location</_description>
-    <_message>Installing an appstream file into a system location</_message>
+    <description>Install an appstream file into a system location</description>
+    <message>Installing an appstream file into a system location</message>
     <defaults>
       <allow_any>yes</allow_any>
       <allow_active>yes</allow_active>
diff --git a/doc/api/meson.build b/doc/api/meson.build
new file mode 100644
index 0000000..4eae537
--- /dev/null
+++ b/doc/api/meson.build
@@ -0,0 +1,13 @@
+# Copyright (C) 2016 Richard Hughes <richard hughsie com>
+#
+# Licensed under the GNU General Public License Version 2 or later
+
+gnome.gtkdoc('gnome-software',
+             src_dir : join_paths(meson.source_root(), 'src'),
+             main_xml : 'gnome-software-docs.xml',
+             content_files : [
+               'gs-example-details.png',
+               'gs-example-installed.png',
+               'gs-example-search.png'
+             ],
+             install : true)
diff --git a/doc/meson.build b/doc/meson.build
new file mode 100644
index 0000000..31cbbc1
--- /dev/null
+++ b/doc/meson.build
@@ -0,0 +1,5 @@
+# Copyright (C) 2016 Richard Hughes <richard hughsie com>
+#
+# Licensed under the GNU General Public License Version 2 or later
+
+subdir('api')
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..6daab84
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,197 @@
+# Copyright (C) 2016 Richard Hughes <richard hughsie com>
+#
+# Licensed under the GNU General Public License Version 2 or later
+
+project('gnome-software', 'c',
+        version : '3.23.3',
+        default_options : ['warning_level=1'],
+        meson_version : '>=0.36.0')
+
+conf = configuration_data()
+conf.set('VERSION', '"@0@"'.format(meson.project_version()))
+conf.set('PACKAGE_NAME', '"@0@"'.format(meson.project_name()))
+conf.set('PACKAGE_VERSION', '"@0@"'.format(meson.project_version()))
+
+# this refers to the gnome-software plugin API version
+# this is not in any way related to a package or soname version
+conf.set('GS_PLUGIN_API_VERSION', '"@0@"'.format('11'))
+
+# install docs
+install_data('README', install_dir : 'share/doc/gnome-software')
+
+# get suported warning flags
+test_args = [
+  '-fstack-protector-strong',
+  '-Waggregate-return',
+  '-Warray-bounds',
+  '-Wcast-align',
+  '-Wclobbered',
+  '-Wdeclaration-after-statement',
+  '-Wempty-body',
+  '-Wextra',
+  '-Wformat=2',
+  '-Wformat-nonliteral',
+  '-Wformat-security',
+  '-Wformat-signedness',
+  '-Wignored-qualifiers',
+  '-Wimplicit-function-declaration',
+  '-Winit-self',
+  '-Winline',
+  '-Wmissing-declarations',
+  '-Wmissing-format-attribute',
+  '-Wmissing-include-dirs',
+  '-Wmissing-noreturn',
+  '-Wmissing-parameter-type',
+  '-Wmissing-prototypes',
+  '-Wnested-externs',
+  '-Wno-discarded-qualifiers',
+  '-Wno-missing-field-initializers',
+  '-Wno-strict-aliasing',
+  '-Wno-suggest-attribute=format',
+  '-Wno-unused-parameter',
+  '-Wold-style-definition',
+  '-Woverride-init',
+  '-Wpacked',
+  '-Wpointer-arith',
+  '-Wredundant-decls',
+  '-Wreturn-type',
+  '-Wshadow',
+  '-Wsign-compare',
+  '-Wstrict-aliasing',
+  '-Wstrict-prototypes',
+  '-Wswitch-default',
+  '-Wtype-limits',
+  '-Wundef',
+  '-Wuninitialized',
+  '-Wunused-but-set-variable',
+  '-Wwrite-strings'
+]
+cc = meson.get_compiler('c')
+foreach arg: test_args
+  if cc.has_argument(arg)
+    add_project_arguments(arg, language : 'c')
+  endif
+endforeach
+
+appstream_glib = dependency('appstream-glib', version : '>= 0.6.5')
+gdk_pixbuf = dependency('gdk-pixbuf-2.0', version : '>= 2.31.5')
+gio_unix = dependency('gio-unix-2.0')
+gmodule = dependency('gmodule-2.0')
+gtk = dependency('gtk+-3.0', version : '>= 3.20.0')
+json_glib = dependency('json-glib-1.0', version : '>= 1.1.1')
+libm = cc.find_library('libm', required: false)
+libsecret = dependency('libsecret-1')
+libsoup = dependency('libsoup-2.4', version : '>= 2.51.92')
+sqlite3 = dependency('sqlite3')
+
+if get_option('enable-gnome-desktop')
+  gnome_desktop = dependency('gnome-desktop-3.0', version : '>= 3.17.92')
+endif
+
+if get_option('enable-gtkspell')
+  gtkspell = dependency('gtkspell3-3.0')
+endif
+
+if get_option('enable-polkit')
+  polkit = dependency('polkit-gobject-1')
+endif
+
+if get_option('enable-ostree')
+  ostree = dependency('ostree-1')
+endif
+
+if get_option('enable-packagekit')
+  packagekit = dependency('packagekit-glib2', version : '>= 1.1.0')
+  conf.set('HAVE_PACKAGEKIT', '1')
+  add_project_arguments('-DI_KNOW_THE_PACKAGEKIT_GLIB2_API_IS_SUBJECT_TO_CHANGE',
+                        language : 'c')
+endif
+
+if get_option('enable-firmware')
+  fwupd = dependency('fwupd', version : '>= 0.7.0')
+endif
+
+if get_option('enable-flatpak')
+  flatpak = dependency('flatpak', version : '>= 0.6.12')
+endif
+
+if get_option('enable-limba')
+  limba = dependency('limba', version : '>= 0.5.6')
+endif
+
+if get_option('enable-rpm')
+  rpm = dependency('rpm')
+endif
+
+if get_option('enable-ubuntu-reviews')
+  oauth = dependency('oauth')
+endif
+
+if get_option('enable-gudev')
+  gudev = dependency('gudev-1.0')
+endif
+
+if get_option('enable-snap')
+  snap = dependency('snapd-glib')
+endif
+
+gnome = import('gnome')
+i18n = import('i18n')
+
+conf.set('GETTEXT_PACKAGE', '"gnome-software"')
+configure_file(input : 'config.h.in',
+               output : 'config.h',
+               configuration : conf)
+top_build_incdir = include_directories(meson.current_build_dir())
+
+add_project_arguments('-DLOCALEDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('localedir'))), 
language : 'c')
+add_project_arguments('-DDATADIR="@0@"'.format(join_paths(get_option('prefix'), get_option('datadir'))), 
language : 'c')
+add_project_arguments('-DGS_DATA="@0@"'.format(join_paths(get_option('prefix'), get_option('datadir'), 
'gnome-software')), language : 'c')
+add_project_arguments('-DLIBDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('libdir'))), 
language : 'c')
+add_project_arguments('-DSYSCONFDIR="@0@"'.format(join_paths(get_option('prefix'), 
get_option('sysconfdir'))), language : 'c')
+add_project_arguments('-DLOCALSTATEDIR="@0@"'.format(join_paths(get_option('prefix'), 'libexec')), language 
: 'c')
+add_project_arguments('-DTESTDATADIR=".."', language : 'c')
+add_project_arguments('-DI_KNOW_THE_GNOME_SOFTWARE_API_IS_SUBJECT_TO_CHANGE', language : 'c')
+
+subdir('src')
+subdir('po')
+subdir('data')
+subdir('doc')
+
+archiver = find_program('git', required : false)
+if archiver.found()
+  run_target('dist',
+             # git config tar.tar.xz.command "xz -c"
+             command: ['git', 'archive',
+                       '--prefix=' + meson.project_name() + '-' + meson.project_version() + '/',
+                       'HEAD',
+                       '--format=tar.xz',
+                       '--output',
+                       meson.project_name() + '-' + meson.project_version() + '.tar.xz']
+  )
+else
+  message('git not found, you will not be able to run `ninja dist`')
+endif
+
+appstream_util = find_program('appstream-util', required : false)
+if appstream_util.found()
+  custom_target('NEWS',
+    output : 'NEWS',
+    input : 'data/appdata/org.gnome.Software.appdata.xml.in',
+    command : [appstream_util, 'appdata-to-news', '@INPUT@'],
+    capture : true
+  )
+endif
+
+# check for PIE (position independent executable) support
+#if test x$with_pic != xno; then
+#      AX_CHECK_COMPILE_FLAG([-fPIE],
+#                            [AX_CHECK_LINK_FLAG([-fPIE -pie],
+#                                                [PIE_CFLAGS="-fPIE" PIE_LDFLAGS="-pie"])])
+#      AC_SUBST(PIE_CFLAGS)
+#      AC_SUBST(PIE_LDFLAGS)
+#fi
+# check for full RELRO (relocation read-only) support
+#AX_CHECK_LINK_FLAG([-Wl,-z,relro,-z,now],
+#                 [RELRO_LDFLAGS="-Wl,-z,relro,-z,now"])
+#AC_SUBST([RELRO_LDFLAGS])
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..9fb3cc9
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,19 @@
+option('enable-tests', type : 'boolean', value : true, description : 'enable tests')
+option('enable-gtkspell', type : 'boolean', value : true, description : 'enable gtkspell')
+option('enable-gnome-desktop', type : 'boolean', value : true, description : 'enable gnome-desktop')
+option('enable-man', type : 'boolean', value : true, description : 'enable man pages')
+option('enable-packagekit', type : 'boolean', value : true, description : 'enable PackageKit support')
+option('enable-polkit', type : 'boolean', value : true, description : 'enable PolKit support')
+option('enable-firmware', type : 'boolean', value : true, description : 'enable firmware support')
+option('enable-flatpak', type : 'boolean', value : true, description : 'enable Flatpak support')
+option('enable-ostree', type : 'boolean', value : true, description : 'enable OSTree support')
+option('enable-limba', type : 'boolean', value : false, description : 'enable Limba support')
+option('enable-rpm', type : 'boolean', value : true, description : 'enable RPM support')
+option('enable-steam', type : 'boolean', value : true, description : 'enable Steam support')
+option('enable-shell-extensions', type : 'boolean', value : true, description : 'enable shell extensions 
support')
+option('enable-odrs', type : 'boolean', value : true, description : 'enable ODRS support')
+option('enable-ubuntu-reviews', type : 'boolean', value : true, description : 'enable Ubuntu reviews 
support')
+option('enable-webapps', type : 'boolean', value : true, description : 'enable webapps support')
+option('enable-gudev', type : 'boolean', value : true, description : 'enable GUdev support')
+option('enable-snap', type : 'boolean', value : false, description : 'enable Snap support')
+option('enable-external-appstream', type : 'boolean', value : false, description : 'enable external 
AppStream support')
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..851584f
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,35 @@
+# Copyright (C) 2016 Richard Hughes <richard hughsie com>
+#
+# Licensed under the GNU General Public License Version 2 or later
+
+# FIXME : get from LINGUAS
+langs = [
+  'en_GB',
+  ]
+
+# FIXME: remove a lot of copy-paste: https://github.com/mesonbuild/meson/issues/1123
+i18n.gettext(meson.project_name(),
+             languages : langs,
+             args: [
+               '--default-domain=' + meson.project_name(),
+               '--from-code=UTF-8',
+               '--add-comments',
+
+               '--keyword=_',
+               '--keyword=N_',
+               '--keyword=C_:1c,2',
+               '--keyword=NC_:1c,2',
+               '--keyword=g_dcgettext:2',
+               '--keyword=g_dngettext:2,3',
+               '--keyword=g_dpgettext2:2c,3',
+
+               '--flag=N_:1:pass-c-format',
+               '--flag=C_:2:pass-c-format',
+               '--flag=NC_:2:pass-c-format',
+               '--flag=g_dngettext:2:pass-c-format',
+               '--flag=g_strdup_printf:1:c-format',
+               '--flag=g_string_printf:2:c-format',
+               '--flag=g_string_append_printf:2:c-format',
+               '--flag=g_error_new:3:c-format',
+               '--flag=g_set_error:4:c-format',
+             ])
diff --git a/src/gnome-software-local-file.desktop.in b/src/gnome-software-local-file.desktop.in
index d5d6d6f..0ae4b17 100644
--- a/src/gnome-software-local-file.desktop.in
+++ b/src/gnome-software-local-file.desktop.in
@@ -1,6 +1,6 @@
 [Desktop Entry]
-_Name=Software Install
-_Comment=Install selected software on the system
+Name=Software Install
+Comment=Install selected software on the system
 Categories=System;
 Exec=gnome-software --local-filename=%f
 Terminal=false
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..0e72aa4
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,317 @@
+# Copyright (C) 2016 Richard Hughes <richard hughsie com>
+#
+# Licensed under the GNU General Public License Version 2 or later
+
+subdir('plugins')
+
+cargs = ['-DG_LOG_DOMAIN="Gpm"']
+
+resources_src = gnome.compile_resources(
+  'gs-resources',
+  'gnome-software.gresource.xml',
+  source_dir : '.',
+  c_name : 'gs')
+
+gdbus_src = gnome.gdbus_codegen(
+    'gs-shell-search-provider-generated',
+    'shell-search-provider-dbus-interfaces.xml',
+    interface_prefix : 'org.gnome.',
+    namespace : 'Gs')
+
+gnome_software_sources = [
+    'gnome-software.h',
+    'gs-utils.c',
+    'gs-utils.h',
+    'gs-app.c',
+    'gs-app.h',
+    'gs-app-private.h',
+    'gs-app-list.c',
+    'gs-app-list.h',
+    'gs-app-list-private.h',
+    'gs-auth.c',
+    'gs-auth.h',
+    'gs-auth-dialog.c',
+    'gs-auth-dialog.h',
+    'gs-category.c',
+    'gs-category.h',
+    'gs-category-private.h',
+    'gs-common.c',
+    'gs-common.h',
+    'gs-content-rating.c',
+    'gs-content-rating.h',
+    'gs-debug.c',
+    'gs-debug.h',
+    'gs-app-addon-row.c',
+    'gs-app-addon-row.h',
+    'gs-app-row.c',
+    'gs-app-row.h',
+    'gs-star-widget.c',
+    'gs-star-widget.h',
+    'gs-popular-tile.c',
+    'gs-popular-tile.h',
+    'gs-feature-tile.c',
+    'gs-feature-tile.h',
+    'gs-category-tile.c',
+    'gs-category-tile.h',
+    'gs-app-tile.c',
+    'gs-app-tile.h',
+    'gs-summary-tile.c',
+    'gs-summary-tile.h',
+    'gs-app-folder-dialog.c',
+    'gs-app-folder-dialog.h',
+    'gs-first-run-dialog.c',
+    'gs-first-run-dialog.h',
+    'gs-history-dialog.c',
+    'gs-history-dialog.h',
+    'gs-fixed-size-bin.h',
+    'gs-fixed-size-bin.c',
+    'gs-hiding-box.h',
+    'gs-hiding-box.c',
+    'gs-info-bar.h',
+    'gs-info-bar.c',
+    'gs-language.c',
+    'gs-language.h',
+    'gs-os-release.c',
+    'gs-os-release.h',
+    'gs-page.c',
+    'gs-page.h',
+    'gs-plugin.c',
+    'gs-plugin.h',
+    'gs-plugin-event.c',
+    'gs-plugin-event.h',
+    'gs-plugin-private.h',
+    'gs-plugin-types.h',
+    'gs-plugin-vfuncs.h',
+    'gs-progress-button.c',
+    'gs-progress-button.h',
+    'gs-removal-dialog.c',
+    'gs-removal-dialog.h',
+    'gs-review-bar.c',
+    'gs-review-bar.h',
+    'gs-review-dialog.c',
+    'gs-review-dialog.h',
+    'gs-review-histogram.c',
+    'gs-review-histogram.h',
+    'gs-review-row.c',
+    'gs-review-row.h',
+    'gs-screenshot-image.c',
+    'gs-screenshot-image.h',
+    'gs-shell.c',
+    'gs-shell.h',
+    'gs-shell-details.c',
+    'gs-shell-details.h',
+    'gs-shell-category.c',
+    'gs-shell-category.h',
+    'gs-shell-extras.c',
+    'gs-shell-extras.h',
+    'gs-shell-installed.c',
+    'gs-shell-installed.h',
+    'gs-shell-moderate.c',
+    'gs-shell-moderate.h',
+    'gs-shell-loading.c',
+    'gs-shell-loading.h',
+    'gs-shell-overview.c',
+    'gs-shell-overview.h',
+    'gs-shell-updates.c',
+    'gs-shell-updates.h',
+    'gs-shell-search.c',
+    'gs-shell-search.h',
+    'gs-sources-dialog.c',
+    'gs-sources-dialog.h',
+    'gs-sources-dialog-row.c',
+    'gs-sources-dialog-row.h',
+    'gs-update-dialog.c',
+    'gs-update-dialog.h',
+    'gs-update-list.c',
+    'gs-update-list.h',
+    'gs-update-monitor.c',
+    'gs-update-monitor.h',
+    'gs-upgrade-banner.c',
+    'gs-upgrade-banner.h',
+    'gs-vendor.c',
+    'gs-vendor.h',
+    'gs-plugin-loader.c',
+    'gs-plugin-loader.h',
+    'gs-plugin-loader-sync.c',
+    'gs-plugin-loader-sync.h',
+    'gs-shell-search-provider.c',
+    'gs-shell-search-provider.h',
+    'gs-application.c',
+    'gs-application.h',
+    'gs-folders.c',
+    'gs-folders.h',
+    'gs-main.c'
+  ]
+
+gnome_software_dependencies = [gtk, gio_unix, libm, appstream_glib, json_glib, libsoup, libsecret, gmodule]
+
+if get_option('enable-packagekit')
+  gnome_software_sources += [
+    'gs-dbus-helper.c',
+    'gs-dbus-helper.h',
+  ]
+  gnome_software_sources += gnome.gdbus_codegen(
+      'gs-packagekit-generated',
+      'org.freedesktop.PackageKit.xml',
+      interface_prefix : 'org.freedesktop.',
+      namespace : 'Gs')
+  gnome_software_sources += gnome.gdbus_codegen(
+      'gs-packagekit-modify2-generated',
+      'org.freedesktop.PackageKit.Modify2.xml',
+      interface_prefix : 'org.freedesktop.',
+      namespace : 'Gs')
+  gnome_software_dependencies += [packagekit]
+endif
+
+executable(
+  'gnome-software',
+  resources_src,
+  gdbus_src,
+  sources : gnome_software_sources,
+  include_directories : [
+    include_directories('@0@/..'.format(meson.current_build_dir())),
+  ],
+  dependencies : gnome_software_dependencies,
+  c_args : cargs,
+  install : true,
+  install_dir : 'bin'
+)
+
+executable(
+  'gnome-software-cmd',
+  sources : [
+    'gs-app.c',
+    'gs-app-list.c',
+    'gs-auth.c',
+    'gs-cmd.c',
+    'gs-common.c',
+    'gs-debug.c',
+    'gs-utils.c',
+    'gs-os-release.c',
+    'gs-plugin-event.c',
+    'gs-plugin-loader.c',
+    'gs-plugin-loader-sync.c',
+    'gs-category.c',
+    'gs-plugin.c'
+  ],
+  include_directories : [
+    include_directories('@0@/..'.format(meson.current_build_dir())),
+  ],
+  dependencies : [gtk, gio_unix, libm, appstream_glib, json_glib, libsoup, libsecret, gmodule],
+  c_args : cargs,
+  install : true,
+  install_dir : 'libexec'
+)
+
+if get_option('enable-tests')
+  e = executable(
+    'gs-self-test',
+    sources : [
+      'gs-app.c',
+      'gs-app-list.c',
+      'gs-auth.c',
+      'gs-category.c',
+      'gs-common.c',
+      'gs-os-release.c',
+      'gs-plugin-event.c',
+      'gs-plugin-loader-sync.c',
+      'gs-plugin-loader.c',
+      'gs-plugin.c',
+      'gs-utils.c',
+      'gs-self-test.c'
+    ],
+    include_directories : [
+      include_directories('@0@/..'.format(meson.current_build_dir())),
+    ],
+    dependencies : [gtk, gio_unix, libm, appstream_glib, json_glib, libsoup, libsecret, gmodule],
+    c_args : cargs
+  )
+  test('gs-self-test', e)
+endif
+
+install_headers([
+    'gnome-software.h',
+    'gs-app.h',
+    'gs-app-list.h',
+    'gs-auth.h',
+    'gs-category.h',
+    'gs-os-release.h',
+    'gs-plugin.h',
+    'gs-plugin-event.h',
+    'gs-plugin-types.h',
+    'gs-plugin-vfuncs.h',
+    'gs-utils.h'
+  ], subdir : 'gnome-software')
+
+# replace @VERSION@
+configure_file(input : 'org.gnome.Software.service.in',
+               output : 'org.gnome.Software.service',
+               install: true,
+               install_dir: join_paths(get_option('datadir'), 'dbus-1/services'),
+               configuration : conf)
+
+# replace @bindir@
+configure_file(input : 'gnome-software-service.desktop.in',
+               output : 'gnome-software-service.desktop',
+               install: true,
+               install_dir: join_paths(get_option('sysconfdir'), 'xdg/autostart'),
+               configuration : conf)
+
+# FIXME: Use i18n.merge_file when available
+msgfmt = find_program('msgfmt')
+podir = join_paths(meson.source_root(), 'po')
+custom_target('desktop-file1',
+              input: 'org.gnome.Software.desktop.in',
+              output: 'org.gnome.Software.desktop',
+              install: true,
+              install_dir: join_paths(get_option('datadir'), 'applications'),
+              command: [
+                msgfmt, '--desktop', '--template', '@INPUT@', '-d', podir, '-o', '@OUTPUT@'
+              ])
+custom_target('desktop-file2',
+              input: 'gnome-software-local-file.desktop.in',
+              output: 'gnome-software-local-file.desktop',
+              install: true,
+              install_dir: join_paths(get_option('datadir'), 'applications'),
+              command: [
+                msgfmt, '--desktop', '--template', '@INPUT@', '-d', podir, '-o', '@OUTPUT@'
+              ])
+
+install_data('org.gnome.Software-search-provider.ini',
+             install_dir : 'share/gnome-shell/search-providers')
+
+if get_option('enable-man')
+    xsltproc = find_program('xsltproc')
+    custom_target('manfile',
+                  input: 'gnome-software.xml',
+                  output: 'gnome-software.1',
+                  install: true,
+                  install_dir: join_paths(get_option('mandir'), 'man1'),
+                  command: [
+                    xsltproc,
+                    '--nonet',
+                    '--stringparam', 'man.output.quietly', '1',
+                    '--stringparam', 'funcsynopsis.style', 'ansi',
+                    '--stringparam', 'man.th.extra1.suppress', '1',
+                    '--stringparam', 'man.authors.section.enabled', '0',
+                    '--stringparam', 'man.copyright.section.enabled', '0',
+                    '-o', '@OUTPUT@',
+                    'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
+                    '@INPUT@'
+                  ])
+endif
+
+if get_option('enable-packagekit')
+  # replace @bindir@
+  configure_file(input : 'org.freedesktop.PackageKit.service.in',
+                 output : 'org.freedesktop.PackageKit.service',
+                 install: true,
+                 install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services'),
+                 configuration : conf)
+endif
+
+configure_file(input : 'gnome-software.pc.in',
+               output : 'gnome-software.pc',
+               install: true,
+               install_dir: join_paths(get_option('libdir'), 'pkgconfig'),
+               configuration : conf)
diff --git a/src/org.gnome.Software.desktop.in b/src/org.gnome.Software.desktop.in
index 26762c4..e3987e1 100644
--- a/src/org.gnome.Software.desktop.in
+++ b/src/org.gnome.Software.desktop.in
@@ -1,12 +1,12 @@
 [Desktop Entry]
-_Name=Software
-_Comment=Add, remove or update software on this computer
+Name=Software
+Comment=Add, remove or update software on this computer
 Icon=org.gnome.Software
 Exec=gnome-software %U
 Terminal=false
 Type=Application
 Categories=GNOME;GTK;System;PackageManager;
-_Keywords=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;
+Keywords=Updates;Upgrade;Sources;Repositories;Preferences;Install;Uninstall;Program;Software;App;Store;
 StartupNotify=true
 MimeType=x-scheme-handler/appstream;
 X-GNOME-Bugzilla-Bugzilla=GNOME
diff --git a/src/plugins/meson.build b/src/plugins/meson.build
new file mode 100644
index 0000000..3d5a33f
--- /dev/null
+++ b/src/plugins/meson.build
@@ -0,0 +1,486 @@
+# Copyright (C) 2016 Richard Hughes <richard hughsie com>
+#
+# Licensed under the GNU General Public License Version 2 or later
+
+#FIXME: needs manual `mesonconf -D b_lundef=false`
+plugin_dir = join_paths(get_option('libdir'), 'gs-plugins-11')
+
+plugin_libs = [gtk, appstream_glib, libsoup, json_glib]
+
+shared_library('gs_plugin_dummy', 'gs-plugin-dummy.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : [appstream_glib, gtk, libsoup])
+
+shared_library('gs_plugin_dpkg', 'gs-plugin-dpkg.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+if get_option('enable-external-appstream')
+  #FIXME: PIE and RELRO
+  executable(
+    'gnome-software-install-appstream',
+    sources : [
+      'gs-install-appstream.c'
+    ],
+    include_directories : [
+      include_directories('@0@/..'.format(meson.current_build_dir())),
+    ],
+    dependencies : [appstream_glib],
+    c_args : cargs,
+    install : true,
+    install_dir : 'libexec'
+  )
+  shared_library('gs_plugin_external-appstream', 'gs-plugin-external-appstream.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [gio_unix, appstream_glib, libsoup])
+endif
+
+shared_library('gs_plugin_key-colors', 'gs-plugin-key-colors.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+if get_option('enable-shell-extensions')
+  shared_library('gs_plugin_shell-extensions', 'gs-plugin-shell-extensions.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : plugin_libs)
+endif
+
+shared_library('gs_plugin_fedora-distro-upgrades', 'gs-plugin-fedora-distro-upgrades.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+if get_option('enable-gudev')
+  shared_library('gs_plugin_modalias', 'gs-plugin-modalias.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, gudev ])
+endif
+
+shared_library('gs_plugin_provenance', 'gs-plugin-provenance.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+shared_library('gs_plugin_provenance-license', 'gs-plugin-provenance-license.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+shared_library('gs_plugin_fedora-tagger-usage', 'gs-plugin-fedora-tagger-usage.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+shared_library('gs_plugin_epiphany', 'gs-plugin-epiphany.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+shared_library('gs_plugin_icons', 'gs-plugin-icons.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+shared_library('gs_plugin_appstream',
+               sources : [
+                 'gs-appstream.c',
+                 'gs-appstream.h',
+                 'gs-plugin-appstream.c'
+               ],
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+if get_option('enable-limba')
+shared_library('gs_plugin_limba', 'gs-plugin-limba.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+endif
+
+if get_option('enable-flatpak')
+shared_library('gs_plugin_flatpak',
+               sources : [
+                 'gs-appstream.c',
+                 'gs-appstream.h',
+                 'gs-flatpak.c',
+                 'gs-flatpak.h',
+                 'gs-flatpak-symlinks.c',
+                 'gs-flatpak-symlinks.h',
+                 'gs-plugin-flatpak.c'
+               ],
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : [ plugin_libs, flatpak ])
+endif
+
+if get_option('enable-ostree')
+  shared_library('gs_plugin_ostree', 'gs-plugin-ostree.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, ostree ])
+endif
+
+if get_option('enable-odrs')
+  shared_library('gs_plugin_odrs', 'gs-plugin-odrs.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : plugin_libs)
+endif
+
+if get_option('enable-rpm')
+  shared_library('gs_plugin_rpm', 'gs-plugin-rpm.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, rpm ])
+endif
+
+if get_option('enable-steam')
+  shared_library('gs_plugin_steam', 'gs-plugin-steam.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : plugin_libs)
+endif
+
+shared_library('gs_plugin_repos', 'gs-plugin-repos.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+shared_library('gs_plugin_desktop-categories',
+               sources : [
+                 'gs-plugin-desktop-categories.c',
+                 'gs-desktop-common.c',
+                 'gs-desktop-common.h'
+               ],
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+shared_library('gs_plugin_desktop-menu-path',
+               sources : [
+                 'gs-plugin-desktop-menu-path.c',
+                 'gs-desktop-common.c',
+                 'gs-desktop-common.h'
+               ],
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+shared_library('gs_plugin_hardcoded-blacklist', 'gs-plugin-hardcoded-blacklist.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+shared_library('gs_plugin_hardcoded-popular', 'gs-plugin-hardcoded-popular.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+shared_library('gs_plugin_hardcoded-featured', 'gs-plugin-hardcoded-featured.c',
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+if get_option('enable-ubuntu-reviews')
+shared_library('gs_plugin_ubuntu-reviews',
+               sources : [
+                 'gs-plugin-ubuntu-reviews.c'
+               ],
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : [ plugin_libs, oauth ])
+endif
+
+if get_option('enable-firmware')
+  shared_library('gs_plugin_fwupd', 'gs-plugin-fwupd.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, fwupd ])
+endif
+
+if get_option('enable-packagekit')
+  shared_library('gs_plugin_systemd-updates',
+                 sources : [
+                   'gs-plugin-systemd-updates.c',
+                   'packagekit-common.c',
+                   'packagekit-common.h'
+                 ],
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, packagekit ])
+
+  shared_library('gs_plugin_packagekit',
+                 sources : [
+                   'gs-plugin-packagekit.c',
+                   'packagekit-common.c',
+                   'packagekit-common.h'
+                 ],
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, packagekit ])
+
+  shared_library('gs_plugin_packagekit-refine',
+                 sources : [
+                   'gs-plugin-packagekit-refine.c',
+                   'gs-markdown.c',
+                   'gs-markdown.h',
+                   'packagekit-common.c',
+                   'packagekit-common.h'
+                 ],
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, packagekit ])
+
+  shared_library('gs_plugin_packagekit-refresh',
+                 sources : [
+                   'gs-plugin-packagekit-refresh.c',
+                   'packagekit-common.c',
+                   'packagekit-common.h'
+                 ],
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, packagekit ])
+
+  shared_library('gs_plugin_packagekit-local',
+                 sources : [
+                   'gs-plugin-packagekit-local.c',
+                   'packagekit-common.c',
+                   'packagekit-common.h'
+                 ],
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, packagekit ])
+
+  shared_library('gs_plugin_packagekit-history', 'gs-plugin-packagekit-history.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, packagekit ])
+
+  shared_library('gs_plugin_packagekit-upgrade',
+                 sources : [
+                   'gs-plugin-packagekit-upgrade.c',
+                   'packagekit-common.c',
+                   'packagekit-common.h'
+                 ],
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, packagekit ])
+
+  shared_library('gs_plugin_packagekit-offline', 'gs-plugin-packagekit-offline.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, packagekit ])
+
+  shared_library('gs_plugin_packagekit-origin',
+                 sources : [
+                   'gs-plugin-packagekit-origin.c',
+                   'packagekit-common.c',
+                   'packagekit-common.h'
+                 ],
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, packagekit ])
+
+  shared_library('gs_plugin_packagekit-proxy', 'gs-plugin-packagekit-proxy.c',
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, packagekit ])
+endif
+
+if get_option('enable-snap')
+  shared_library('gs_plugin_snap',
+                 sources : [
+                   'gs-plugin-snap.c',
+                   'gs-snapd.h',
+                   'gs-snapd.c'
+                 ],
+                 include_directories : [
+                   include_directories('..'),
+                   include_directories('@0@/../..'.format(meson.current_build_dir())),
+                 ],
+                 install : true,
+                 install_dir: plugin_dir,
+                 dependencies : [ plugin_libs, snap ])
+endif
+
+shared_library('gs_plugin_ubuntuone',
+               sources : [
+                 'gs-plugin-ubuntuone.c'
+               ],
+               include_directories : [
+                 include_directories('..'),
+                 include_directories('@0@/../..'.format(meson.current_build_dir())),
+               ],
+               install : true,
+               install_dir: plugin_dir,
+               dependencies : plugin_libs)
+
+if get_option('enable-tests')
+  e = executable(
+    'gs-self-test2',
+    sources : [
+      'gs-markdown.c',
+      'gs-self-test.c'
+    ],
+    include_directories : [
+      include_directories('@0@/../..'.format(meson.current_build_dir())),
+    ],
+    dependencies : [gtk, gio_unix, libm, appstream_glib ]
+  )
+  test('gs-self-test', e)
+endif


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