The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
2.0 KiB
53 lines
2.0 KiB
project('external dependency', 'c') |
|
|
|
# Zlib is probably on all dev machines. |
|
|
|
dep = dependency('zlib', version : '>=1.2', |
|
not_found_message: 'DANGER! DANGER! THIS MUST NEVER BE SEEN!') |
|
exe = executable('zlibprog', 'prog-checkver.c', |
|
dependencies : dep, |
|
c_args : '-DFOUND_ZLIB="' + dep.version() + '"') |
|
|
|
assert(dep.version().version_compare('>=1.2'), 'Pkg-config version numbers exposed incorrectly.') |
|
|
|
# Check that the version exposed by zlib internally is the same as the one we |
|
# retrieve from the pkg-config file. This assumes that the packager didn't mess |
|
# up, but we can be reasonably sure of that. |
|
test('zlibtest', exe) |
|
|
|
zprefix = dep.get_pkgconfig_variable('prefix') # Always set but we can't be sure what the value is. |
|
# pkg-config returns empty string for not defined variables |
|
assert(dep.get_pkgconfig_variable('nonexisting') == '', 'Value of unknown variable is not empty.') |
|
# ... unless default: is used |
|
assert(dep.get_pkgconfig_variable('nonexisting', default: 'foo') == 'foo', 'Value of unknown variable is not defaulted.') |
|
# pkg-config is able to replace variables |
|
assert(dep.get_pkgconfig_variable('prefix', define_variable: ['prefix', '/tmp']) == '/tmp', 'prefix variable has not been replaced.') |
|
|
|
# Test that dependencies of dependencies work. |
|
dep2 = declare_dependency(dependencies : dep) |
|
exe2 = executable('zlibprog2', 'prog.c', dependencies : dep2) |
|
test('zlibtest2', exe2) |
|
|
|
# Try to find a nonexistent library to ensure requires:false works. |
|
|
|
dep = dependency('nvakuhrabnsdfasdf', required : false, |
|
not_found_message : 'This dependency was not found as was expected.') |
|
|
|
# Try to compile a test that takes a dep and an include_directories |
|
|
|
cc = meson.get_compiler('c') |
|
zlibdep = cc.find_library('z') |
|
code = '''#include<myinc.h> |
|
|
|
int main() { |
|
void * something = deflate; |
|
if(something != 0) |
|
return 0; |
|
return 1; |
|
} |
|
''' |
|
|
|
inc = include_directories('incdir') |
|
|
|
r = cc.run(code, include_directories : inc, dependencies : zlibdep) |
|
assert(r.returncode() == 0, 'Running manual zlib test failed.')
|
|
|