project('external library', 'c') cc = meson.get_compiler('c') zlib = cc.find_library('z') # Verify that link testing works. linkcode = '''#include int main(void) { void *ptr = (void*)(deflate); return ptr == 0; } ''' nolinkcode='''int nonexisting(); int main(void) { return nonexisting(); } ''' assert(cc.links(linkcode, args : '-lz', name : 'Test link against zlib'), 'Linking test failed.') d1 = declare_dependency(compile_args: '-DSOMETHING', link_args: '-lz') assert(cc.links(linkcode, dependencies : d1, name : 'Test link against zlib via declare_dependency'), 'Linking test failed.') d2 = declare_dependency(dependencies: d1) assert(cc.links(linkcode, dependencies : d2, name : 'Test link against zlib via indirect declare_dependency'), 'Linking test failed.') assert(not cc.links(nolinkcode, name : 'Failing link'), 'Linking succeeded when it should have failed.') e = executable('zprog', 'prog.c', dependencies : zlib) test('libtest', e) e2 = executable('zprog_alt', 'prog.c', dependencies : zlib) test('libtest_alt', e2) # Test that ext deps work via an internal dep. intdep = declare_dependency(dependencies : zlib) exe2 = executable('zprog2', 'prog.c', dependencies : intdep) test('libtest2', exe2) # Test that deps that use find_library deps work. depdep = declare_dependency(dependencies : intdep) exe3 = executable('zprog3', 'prog.c', dependencies : depdep) test('libtest3', exe3)