157 lines
3.7 KiB
Meson
157 lines
3.7 KiB
Meson
project(
|
|
'vala-unit',
|
|
[ 'vala', 'c' ],
|
|
version: '2.0',
|
|
license: 'LGPL2.1+',
|
|
meson_version: '>= 1.7',
|
|
)
|
|
|
|
enable_install = get_option('install')
|
|
enable_valadoc = get_option('valadoc')
|
|
|
|
add_project_arguments(
|
|
[
|
|
'--abi-stability',
|
|
'--enable-checking',
|
|
'--enable-experimental-non-null',
|
|
'--fatal-warnings',
|
|
'--nostdpkg'
|
|
],
|
|
language: 'vala'
|
|
)
|
|
|
|
target_vala = '0.56'
|
|
target_glib = '2.74'
|
|
|
|
if not meson.get_compiler('vala').version().version_compare('>=' + target_vala)
|
|
error('Vala does not meet minimum required version: ' + target_vala)
|
|
endif
|
|
|
|
gee = dependency('gee-0.8')
|
|
gio = dependency('gio-2.0')
|
|
glib = dependency('glib-2.0', version: '>=' + target_glib)
|
|
gobject = dependency('gobject-2.0')
|
|
gobject_introspection = dependency('gobject-introspection-1.0', required: false)
|
|
|
|
if gobject_introspection.found()
|
|
g_ir_compiler = gobject_introspection.get_variable('g_ir_compiler')
|
|
else
|
|
g_ir_compiler = find_program('g-ir-compiler')
|
|
endif
|
|
if enable_valadoc
|
|
valadoc = find_program('valadoc')
|
|
endif
|
|
|
|
dependencies = [
|
|
gee,
|
|
gio,
|
|
glib,
|
|
gobject
|
|
]
|
|
|
|
lib_sources = files(
|
|
'src/async-result-waiter.vala',
|
|
'src/collection-assertions.vala',
|
|
'src/expected-call.vala',
|
|
'src/mock-object.vala',
|
|
'src/test-adaptor.vala',
|
|
'src/test-assertions.vala',
|
|
'src/test-case.vala',
|
|
)
|
|
|
|
test_sources = files(
|
|
'test/collection-assertions.vala',
|
|
'test/test-assertions.vala',
|
|
'test/test-driver.vala',
|
|
)
|
|
|
|
package_name = 'ValaUnit'
|
|
package_version = '2.0'
|
|
package_full = '@0@-@1@'.format(package_name, package_version)
|
|
package_vapi = '@0@-@1@'.format(meson.project_name(), package_version)
|
|
package_gir = package_full + '.gir'
|
|
|
|
vala_unit_lib = library(
|
|
meson.project_name(),
|
|
lib_sources,
|
|
dependencies: dependencies,
|
|
# Ensure we always get debug symbols.
|
|
override_options : [
|
|
'debug=true',
|
|
'strip=false',
|
|
],
|
|
vala_vapi: package_vapi + '.vapi',
|
|
vala_gir: package_gir,
|
|
install: enable_install,
|
|
install_dir: [true, true, true, true]
|
|
)
|
|
|
|
vala_unit_dep = declare_dependency(
|
|
link_with : vala_unit_lib,
|
|
include_directories: include_directories('.')
|
|
)
|
|
|
|
custom_target(
|
|
meson.project_name() + '-typelib',
|
|
command: [
|
|
g_ir_compiler,
|
|
'--output', '@OUTPUT@',
|
|
meson.current_build_dir() / package_gir,
|
|
],
|
|
output: [package_full + '.typelib'],
|
|
depends: vala_unit_lib,
|
|
install: enable_install,
|
|
install_dir: get_option('libdir') / 'girepository-1.0'
|
|
)
|
|
|
|
if enable_valadoc
|
|
# Hopefully Meson will get baked-in valadoc support, so we don't have
|
|
# to do this any more. https://github.com/mesonbuild/meson/issues/894
|
|
valadoc_dep_args = []
|
|
foreach dep : dependencies
|
|
valadoc_dep_args += '--pkg'
|
|
valadoc_dep_args += dep.name()
|
|
endforeach
|
|
|
|
docs = custom_target(
|
|
'valadoc',
|
|
build_by_default: true,
|
|
depends: [vala_unit_lib],
|
|
input: lib_sources,
|
|
output: 'valadoc',
|
|
command: [
|
|
valadoc,
|
|
'--verbose',
|
|
'--force',
|
|
'--fatal-warnings',
|
|
'--package-name=@0@'.format(package_vapi),
|
|
'--package-version=@0@'.format(meson.project_version()),
|
|
'-b', meson.current_source_dir(),
|
|
'-o', '@OUTPUT@',
|
|
'@INPUT@',
|
|
] + valadoc_dep_args
|
|
)
|
|
|
|
if enable_install
|
|
install_subdir(
|
|
meson.current_build_dir() / 'valadoc',
|
|
install_dir: get_option('datadir') / 'doc' / 'vala-unit' / 'valadoc'
|
|
)
|
|
endif
|
|
endif
|
|
|
|
test_driver = executable(
|
|
'test-driver',
|
|
test_sources,
|
|
dependencies: dependencies + [ vala_unit_dep ],
|
|
# Always do a plain debug build to avoid compiler optimsations that
|
|
# might render testing invalid, and to ensure we get debug symbols.
|
|
# Ensure we always get debug symbols.
|
|
override_options : [
|
|
'debug=true',
|
|
'optimization=0',
|
|
'strip=false',
|
|
],
|
|
)
|
|
|
|
test('tests', test_driver)
|