[gcr: 1/2] build: Make building the Vala bindings optional




commit 5970a456465b6b6a6a3f4c215e1926c3c3c3f5cb
Author: Marvin Schmidt <marv exherbo org>
Date:   Thu Feb 10 12:09:12 2022 +0100

    build: Make building the Vala bindings optional

 gck/meson.build      | 22 ++++++++++++----------
 gcr-gtk3/meson.build | 40 +++++++++++++++++++++-------------------
 gcr-gtk4/meson.build | 42 ++++++++++++++++++++++--------------------
 gcr/meson.build      | 26 ++++++++++++++------------
 meson.build          |  6 ++++++
 meson_options.txt    |  5 +++++
 6 files changed, 80 insertions(+), 61 deletions(-)
---
diff --git a/gck/meson.build b/gck/meson.build
index fa108ef9..ca30f7f7 100644
--- a/gck/meson.build
+++ b/gck/meson.build
@@ -141,16 +141,18 @@ if get_option('introspection')
     install: true,
   )
 
-  gck_vapi = gnome.generate_vapi(gck_basename,
-    sources: gck_gir[0],
-    metadata_dirs: meson.current_source_dir(),
-    packages: [ 'glib-2.0', 'gio-2.0' ],
-    install: true,
-  )
-
-  install_data('pkcs11.vapi',
-    install_dir: get_option('datadir') / 'vala' / 'vapi',
-  )
+  if enable_vapi
+    gck_vapi = gnome.generate_vapi(gck_basename,
+      sources: gck_gir[0],
+      metadata_dirs: meson.current_source_dir(),
+      packages: [ 'glib-2.0', 'gio-2.0' ],
+      install: true,
+    )
+
+    install_data('pkcs11.vapi',
+      install_dir: get_option('datadir') / 'vala' / 'vapi',
+    )
+  endif
 endif
 
 # pkg-config file
diff --git a/gcr-gtk3/meson.build b/gcr-gtk3/meson.build
index 57375861..3ad4f74c 100644
--- a/gcr-gtk3/meson.build
+++ b/gcr-gtk3/meson.build
@@ -111,25 +111,27 @@ if get_option('introspection')
     install: true,
   )
 
-  gcr_gtk3_vapi = gnome.generate_vapi(gcr_gtk3_basename,
-    sources: gcr_gtk3_gir[0],
-    packages: [
-      'glib-2.0',
-      'gio-2.0',
-      gck_vapi,
-      gcr_vapi,
-      'gtk+-3.0'
-    ],
-    vapi_dirs: [
-      build_root / 'gck',
-      build_root / 'gcr',
-    ],
-    gir_dirs: [
-      build_root / 'gck',
-      build_root / 'gcr',
-    ],
-    install: true,
-  )
+  if enable_vapi
+    gcr_gtk3_vapi = gnome.generate_vapi(gcr_gtk3_basename,
+      sources: gcr_gtk3_gir[0],
+      packages: [
+        'glib-2.0',
+        'gio-2.0',
+        gck_vapi,
+        gcr_vapi,
+        'gtk+-3.0'
+      ],
+      vapi_dirs: [
+        build_root / 'gck',
+        build_root / 'gcr',
+      ],
+      gir_dirs: [
+        build_root / 'gck',
+        build_root / 'gcr',
+      ],
+      install: true,
+    )
+  endif
 endif
 
 # Register new mime types
diff --git a/gcr-gtk4/meson.build b/gcr-gtk4/meson.build
index aa3f669e..a351f2f2 100644
--- a/gcr-gtk4/meson.build
+++ b/gcr-gtk4/meson.build
@@ -106,24 +106,26 @@ if get_option('introspection')
     install: true,
   )
 
-  gcr_gtk4_vapi = gnome.generate_vapi(gcr_gtk4_basename,
-    sources: gcr_gtk4_gir[0],
-    packages: [
-      'glib-2.0',
-      'gio-2.0',
-      gck_vapi,
-      gcr_vapi,
-      'gtk4'
-    ],
-    metadata_dirs: meson.current_source_dir(),
-    vapi_dirs: [
-      build_root / 'gck',
-      build_root / 'gcr',
-    ],
-    gir_dirs: [
-      build_root / 'gck',
-      build_root / 'gcr',
-    ],
-    install: true,
-  )
+  if enable_vapi
+    gcr_gtk4_vapi = gnome.generate_vapi(gcr_gtk4_basename,
+      sources: gcr_gtk4_gir[0],
+      packages: [
+        'glib-2.0',
+        'gio-2.0',
+        gck_vapi,
+        gcr_vapi,
+        'gtk4'
+      ],
+      metadata_dirs: meson.current_source_dir(),
+      vapi_dirs: [
+        build_root / 'gck',
+        build_root / 'gcr',
+      ],
+      gir_dirs: [
+        build_root / 'gck',
+        build_root / 'gcr',
+      ],
+      install: true,
+    )
+  endif
 endif
diff --git a/gcr/meson.build b/gcr/meson.build
index 59ec0fae..745dade3 100644
--- a/gcr/meson.build
+++ b/gcr/meson.build
@@ -189,18 +189,20 @@ if get_option('introspection')
     install: true,
   )
 
-  gcr_vapi = gnome.generate_vapi(gcr_basename,
-    sources: gcr_gir[0],
-    packages: [ 'glib-2.0', 'gio-2.0', gck_vapi ],
-    metadata_dirs: meson.current_source_dir(),
-    vapi_dirs: [
-      build_root / 'gck',
-    ],
-    gir_dirs: [
-      build_root / 'gck',
-    ],
-    install: true,
-  )
+  if enable_vapi
+    gcr_vapi = gnome.generate_vapi(gcr_basename,
+      sources: gcr_gir[0],
+      packages: [ 'glib-2.0', 'gio-2.0', gck_vapi ],
+      metadata_dirs: meson.current_source_dir(),
+      vapi_dirs: [
+        build_root / 'gck',
+      ],
+      gir_dirs: [
+        build_root / 'gck',
+      ],
+      install: true,
+    )
+  endif
 endif
 
 # pkg-config file
diff --git a/meson.build b/meson.build
index dd70d01d..10706600 100644
--- a/meson.build
+++ b/meson.build
@@ -82,6 +82,12 @@ if get_option('gtk4')
   gtk4_dep = dependency('gtk4')
 endif
 
+enable_gir = get_option('introspection')
+enable_vapi = get_option('vapi')
+if enable_vapi
+  assert(enable_gir, 'vapi support was requested, but introspection support is mandatory.')
+endif
+
 # configuration
 conf = configuration_data()
 conf.set_quoted('VERSION', meson.project_version())
diff --git a/meson_options.txt b/meson_options.txt
index 6f4bc523..66d1567b 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -3,6 +3,11 @@ option('introspection',
   value: true,
   description: 'Build GObject Introspection (GIR) files',
 )
+option('vapi',
+  type: 'boolean',
+  value: true,
+  description: 'Generate vapi data (requires vapigen and introspection option)',
+)
 option('gtk3',
   type: 'boolean',
   value: true,


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