[geary/mjog/python-plugin-support: 3/3] Generate GI typelibs for the client and engine



commit 4be75e33dee5719c7512b0b1f0ff3ef45d0e13ce
Author: Michael Gratton <mike vee net>
Date:   Fri Sep 27 22:44:26 2019 +1000

    Generate GI typelibs for the client and engine

 .gitlab-ci.yml         | 27 ++++++++++++++-------------
 INSTALL                | 12 ++++++------
 meson.build            |  5 +++++
 src/client/meson.build | 19 ++++++++++++++++++-
 src/engine/meson.build | 18 +++++++++++++++++-
 5 files changed, 60 insertions(+), 21 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 61530bd6..a299ee94 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -23,23 +23,24 @@ variables:
   # Fedora packages
   FEDORA_DEPS:
     meson vala desktop-file-utils enchant2-devel folks-devel gcr-devel
-    glib2-devel gmime-devel gnome-online-accounts-devel gspell-devel
-    gtk3-devel iso-codes-devel json-glib-devel itstool
-    libappstream-glib-devel libgee-devel libhandy-devel libpeas-devel
-    libsecret-devel libunwind-devel libxml2-devel libytnef-devel
-    sqlite-devel webkitgtk4-devel
+    glib2-devel gmime-devel gnome-online-accounts-devel
+    gobject-introspection gspell-devel gtk3-devel iso-codes-devel
+    json-glib-devel itstool libappstream-glib-devel libgee-devel
+    libhandy-devel libpeas-devel libsecret-devel libunwind-devel
+    libxml2-devel libytnef-devel sqlite-devel webkitgtk4-devel
   FEDORA_TEST_DEPS: Xvfb tar xz
 
   # Ubuntu packages
   UBUNTU_DEPS:
-    meson build-essential valac desktop-file-utils gettext iso-codes
-    itstool libappstream-glib-dev libenchant-dev libfolks-dev
-    libgcr-3-dev libgee-0.8-dev libglib2.0-dev libgmime-2.6-dev
-    libgoa-1.0-dev libgspell-1-dev libgtk-3-dev libhandy-0.0-dev
-    libjson-glib-dev libmessaging-menu-dev libpeas-dev libsecret-1-dev
-    libsqlite3-dev libunity-dev libunwind-dev libwebkit2gtk-4.0-dev
-    libxml2-dev libytnef0-dev
-  UBUNTU_TEST_DEPS: xauth xvfb
+    meson build-essential valac desktop-file-utils
+    gettext gobject-introspection iso-codes itstool
+    libappstream-glib-dev libenchant-dev libfolks-dev libgcr-3-dev
+    libgee-0.8-dev libglib2.0-dev libgmime-2.6-dev libgoa-1.0-dev
+    libgspell-1-dev libgtk-3-dev libhandy-0.0-dev libjson-glib-dev
+    libmessaging-menu-dev libpeas-dev libsecret-1-dev libsqlite3-dev
+    libunity-dev libunwind-dev libwebkit2gtk-4.0-dev libxml2-dev
+    libytnef0-dev
+    UBUNTU_TEST_DEPS: xauth xvfb
 
 # fedora:
 #   stage: build
diff --git a/INSTALL b/INSTALL
index f77f3b52..28645ad4 100644
--- a/INSTALL
+++ b/INSTALL
@@ -41,11 +41,11 @@ Install them by running this command:
 
     sudo yum install meson vala desktop-file-utils enchant2-devel \
         folks-devel gcr-devel glib2-devel gmime-devel \
-        gnome-online-accounts-devel gspell-devel gtk3-devel \
-        iso-codes-devel json-glib-devel libappstream-glib-devel \
-        libgee-devel libhandy-devel libpeas-devel libsecret-devel \
-        libunwind-devel libxml2-devel libytnef-devel sqlite-devel \
-        webkitgtk4-devel
+        gnome-online-accounts-devel gobject-introspection gspell-devel \
+        gtk3-devel iso-codes-devel json-glib-devel \
+        libappstream-glib-devel libgee-devel libhandy-devel \
+        libpeas-devel libsecret-devel libunwind-devel libxml2-devel \
+        libytnef-devel sqlite-devel webkitgtk4-devel
 
 Installing dependencies on Ubuntu/Debian
 ----------------------------------------
@@ -53,7 +53,7 @@ Installing dependencies on Ubuntu/Debian
 Install them by running this command:
 
     sudo apt-get install meson build-essential valac \
-        desktop-file-utils iso-codes gettext itstool \
+        desktop-file-utils iso-codes gettext gobject-introspection itstool \
         libappstream-glib-dev libenchant-dev libfolks-dev libgcr-3-dev \
         libgee-0.8-dev libglib2.0-dev libgmime-2.6-dev libgoa-1.0-dev \
         libgspell-1-dev libgtk-3-dev libjson-glib-dev libhandy-0.0-dev \
diff --git a/meson.build b/meson.build
index 98d4527f..932def74 100644
--- a/meson.build
+++ b/meson.build
@@ -77,6 +77,7 @@ webkit2gtk = dependency('webkit2gtk-4.0', version: '>=' + target_webkit)
 appstream_glib = dependency('appstream-glib', version: '>=0.7.10')
 enchant = dependency('enchant-2', version: '>=2.1', required: false) # see below
 folks = dependency('folks', version: '>=0.11')
+g_ir_compiler = find_program('g-ir-compiler')
 gck = dependency('gck-1')
 gcr = dependency('gcr-3', version: '>= 3.10.1')
 gdk = dependency('gdk-3.0', version: '>=' + target_gtk)
@@ -201,6 +202,10 @@ configure_file(output: 'config.h', configuration: conf)
 # Post-install scripts
 meson.add_install_script(join_paths('build-aux', 'post_install.py'))
 
+# NB: Changing these will break API for plugins, etc
+geary_client_pkg = 'GearyClient-1.0'
+geary_engine_pkg = 'GearyEngine-1.0'
+
 # Subfolders
 subdir('desktop')
 subdir('help')
diff --git a/src/client/meson.build b/src/client/meson.build
index 8b760907..36fe8e73 100644
--- a/src/client/meson.build
+++ b/src/client/meson.build
@@ -147,12 +147,29 @@ if webkit_version[0].to_int() <= 2 and webkit_version[1].to_int() <= 24
 endif
 
 # Main client application library
-geary_client_lib = static_library('geary-client',
+geary_client_lib = shared_library(
+  'geary-client',
   geary_client_sources,
   dependencies: geary_client_dependencies,
   include_directories: config_h_dir,
+  vala_gir: geary_client_pkg + '.gir',
   vala_args: geary_client_vala_options,
   c_args: geary_c_options,
+  install: true,
+  install_dir: [true, true, true, true]
+)
+
+custom_target(
+  'client typelib',
+  command: [
+    g_ir_compiler,
+    '--output', '@OUTPUT@',
+    meson.current_build_dir() / geary_client_pkg + '.gir',
+  ],
+  output: geary_client_pkg + '.typelib',
+  depends: geary_client_lib,
+  install: true,
+  install_dir: libdir / 'girepository-1.0'
 )
 
 geary_client_dep = declare_dependency(
diff --git a/src/engine/meson.build b/src/engine/meson.build
index e9746fdb..9028ff95 100644
--- a/src/engine/meson.build
+++ b/src/engine/meson.build
@@ -362,12 +362,28 @@ if get_option('tnef-support')
   ]
 endif
 
-geary_engine_lib = static_library('geary-engine',
+geary_engine_lib = shared_library('geary-engine',
   geary_engine_sources,
   dependencies: geary_engine_dependencies,
   include_directories: config_h_dir,
   vala_args: geary_engine_vala_options,
+  vala_gir: geary_engine_pkg + '.gir',
   c_args: geary_c_options,
+  install: true,
+  install_dir: [true, true, true, true]
+)
+
+custom_target(
+  'engine typelib',
+  command: [
+    g_ir_compiler,
+    '--output', '@OUTPUT@',
+    meson.current_build_dir() / geary_engine_pkg + '.gir'
+  ],
+  output: geary_engine_pkg + '.typelib',
+  depends: geary_engine_lib,
+  install: true,
+  install_dir: libdir / 'girepository-1.0'
 )
 
 # Dummy target to tell Meson about the internal VAPI given the


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