-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Vala
Nirbheek Chauhan edited this page Feb 23, 2017
·
10 revisions
Meson has support for compiling Vala programs. A skeleton Vala file looks like this.
project('valaprog', ['vala', 'c'])
glib = dependency('glib-2.0')
gobject = dependency('gobject-2.0')
executable('valaprog', 'prog.vala',
dependencies : [glib, gobject])You must always specify glib and gobject as dependencies, because all Vala applications use them.
When dealing with libraries that are not providing Vala bindings, you can point --vapidir to a directory relative to meson.current_source_dir containing the binding and include a --pkg flag.
glib = dependency('glib-2.0')
gobject = dependency('gobject-2.0')
foo = dependency('foo')
executable('app',
dependencies: [glib, gobject, foo]
vala_args: ['--pkg=foo', '--vapidir=' + meson.current_source_dir()])To generate GObject Introspection metadata, the --gir flags has to be set explicitly in vala_args.
foo_lib = library('foo',
dependencies: [glib, gobject],
vala_args: ['--gir=Foo-1.0.gir'])For the typelib, use a custom_target depending on the library:
g_ir_compiler = find_program('g_ir_compiler')
custom_target('foo-typelib',
command: [g_ir_compiler, '--output', '@OUTPUT@', meson.current_build_dir() + '/foo@sha/Foo-1.0.gir'],
output: 'Foo-1.0.typelib',
depends: foo_lib,
install: true,
install_dir: get_option('libdir') + '/girepository-1.0')To install generated VAPI and GIR files, it is necessary to add a custom install script.
meson.add_install_script('install.sh')#!/bin/sh
mkdir -p "${DESTDIR}${MESON_INSTALL_PREFIX}/share/vala/vapi"
mkdir -p "${DESTDIR}${MESON_INSTALL_PREFIX}/share/gir-1.0"
install -m 0644 \
"${MESON_BUILD_ROOT}/foo-1.0.vapi" \
$"{DESTDIR}${MESON_INSTALL_PREFIX}/share/vala/vapi"
install -m 0644 \
"${MESON_BUILD_ROOT}/foo@sha/Foo-1.0.gir" \
"${DESTDIR}${MESON_INSTALL_PREFIX}/share/gir-1.0"All documentation is now on the main web site.
This page should be at this address.