[grilo] build: Fix path handling in pkgconfig



commit 8169d62f8db8f5509602d7f00d81e94e510cf447
Author: Jan Tojnar <jtojnar gmail com>
Date:   Mon Jan 7 16:39:04 2019 +0100

    build: Fix path handling in pkgconfig
    
    On Nix, headers, introspection files and vapi files are installed to different
    prefix than the library. This makes sure that the correct paths are used, thus
    making the build more portable.

 bindings/vala/meson.build | 10 ++--------
 meson.build               | 26 +++++++++++++++++++++-----
 src/meson.build           |  2 ++
 3 files changed, 25 insertions(+), 13 deletions(-)
---
diff --git a/bindings/vala/meson.build b/bindings/vala/meson.build
index 3190f00..9c2d9c0 100644
--- a/bindings/vala/meson.build
+++ b/bindings/vala/meson.build
@@ -5,13 +5,6 @@
 #
 # Copyright (C) 2016 Igalia S.L. All rights reserved.
 
-vapidir = join_paths([
-    prefix,
-    get_option('datadir'),
-    'vala',
-    'vapi',
-])
-
 vala_sources = [ # LIBRARY, GIR, DEPS
     ['grilo-@0@'.format(grl_majorminor), grl_gir[0], ['gmodule-2.0', 'gio-2.0']],
     ['grilo-net-@0@'.format(grl_majorminor), grlnet_gir[0], ['gio-2.0']],
@@ -26,6 +19,7 @@ foreach s: vala_sources
     gnome.generate_vapi(lib,
         sources: [custom_vala, gir],
         packages: deps,
-        install: true)
+        install: true,
+        install_dir: vapidir)
 endforeach
 
diff --git a/meson.build b/meson.build
index 17454df..83d6db2 100644
--- a/meson.build
+++ b/meson.build
@@ -63,7 +63,7 @@ endif
 
 enable_vala = get_option('enable-vala')
 if enable_vala
-    vapigen = find_program('vapigen', required: true)
+    find_program('vapigen', required: true)
 endif
 
 enable_testui = get_option('enable-test-ui')
@@ -73,9 +73,25 @@ if enable_testui
 endif
 
 prefix = get_option('prefix')
+includedir = join_paths(prefix, get_option('includedir'))
 libdir = join_paths(prefix, get_option('libdir'))
 plugins_dir = join_paths(libdir, grl_name)
 localedir = join_paths(prefix, get_option('localedir'))
+datadir = join_paths(prefix, get_option('datadir'))
+
+girdir = join_paths(datadir, 'gir-1.0')
+typelibdir = join_paths(libdir, 'girepository-1.0')
+gobject_introspection = dependency('gobject-introspection-1.0', required: false)
+if gobject_introspection.found()
+    girdir = gobject_introspection.get_pkgconfig_variable('girdir', define_variable: ['datadir', datadir])
+    typelibdir = gobject_introspection.get_pkgconfig_variable('typelibdir', define_variable: ['libdir', 
libdir])
+endif
+
+vapidir = join_paths(datadir, 'vala', 'vapi')
+vapigen = dependency('vapigen', required: false)
+if vapigen.found()
+    vapidir = vapigen.get_pkgconfig_variable('vapidir', define_variable: ['datadir', datadir])
+endif
 
 cdata = configuration_data()
 cdata.set_quoted('VERSION', grilo_version)
@@ -99,11 +115,11 @@ pkgconf = configuration_data()
 pkgconf.set('prefix', prefix)
 pkgconf.set('exec_prefix', '${prefix}')
 pkgconf.set('libdir', libdir)
-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
+pkgconf.set('includedir', join_paths('${prefix}', includedir))
 pkgconf.set('GRL_NAME', grl_name)
 pkgconf.set('GRL_PLUGINS_DIR', plugins_dir)
-pkgconf.set('INTROSPECTION_GIRDIR', '${datarootdir}/gir-1.0')
-pkgconf.set('INTROSPECTION_TYPELIBDIR', '${libdir}/girepository-1.0'.format(get_option('libdir')))
+pkgconf.set('INTROSPECTION_GIRDIR', join_paths('${prefix}', girdir))
+pkgconf.set('INTROSPECTION_TYPELIBDIR', join_paths('${prefix}', typelibdir))
 pkgconf.set('VERSION', grilo_version)
 pkgconf.set('GRLNET_VERSION', grlnet_version)
 pkgconf.set('GRLPLS_VERSION', grlpls_version)
@@ -114,7 +130,7 @@ foreach p: pkgconfig_files
     configure_file(input: infile,
         output: outfile,
         configuration: pkgconf,
-        install_dir: '@0@/pkgconfig'.format(get_option('libdir')))
+        install_dir: join_paths(libdir, 'pkgconfig'))
 endforeach
 
 gnome = import('gnome')
diff --git a/src/meson.build b/src/meson.build
index 36c34b3..2eb46f6 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -120,5 +120,7 @@ if enable_gir
         dependencies: [ gobject_dep, gmodule_dep, gio_dep ],
         includes: [ 'GObject-2.0', 'GModule-2.0', 'Gio-2.0' ],
         install: true,
+        install_dir_gir: girdir,
+        install_dir_typelib: typelibdir,
         extra_args: gir_extra_args)
 endif


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