summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2019-01-07 16:39:04 +0100
committerVictor Toso <toso@posteo.net>2019-02-08 09:45:49 +0000
commit6eafdbb205128140e5ddba5a871f86ab008fb361 (patch)
tree492b036b0d76c3c9257079950b5b9f0ddb00a163
parent335bc779ceb29afa70c1c22c14e5700d09ba7bcf (diff)
downloadgrilo-wip/jtojnar/meson-fixes.tar.gz
build: Fix path handling in pkgconfigwip/jtojnar/meson-fixes
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.
-rw-r--r--bindings/vala/meson.build10
-rw-r--r--meson.build28
-rw-r--r--src/meson.build2
3 files changed, 27 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 295939c..4a1c660 100644
--- a/meson.build
+++ b/meson.build
@@ -63,7 +63,7 @@ endif
enable_vala = get_option('vapi')
if enable_vala
- vapigen = find_program('vapigen', required: true)
+ find_program('vapigen', required: true)
endif
enable_testui = get_option('test_ui')
@@ -73,9 +73,27 @@ 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'))
+
+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])
+else
+ girdir = join_paths(datadir, 'gir-1.0')
+ typelibdir = join_paths(libdir, 'girepository-1.0')
+endif
+
+vapigen = dependency('vapigen', required: false)
+if vapigen.found()
+ vapidir = vapigen.get_pkgconfig_variable('vapidir', define_variable: ['datadir', datadir])
+else
+ vapidir = join_paths(datadir, 'vala', 'vapi')
+endif
cdata = configuration_data()
cdata.set_quoted('VERSION', grilo_version)
@@ -99,11 +117,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 +132,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