blob: 10195c1b320b3b3b0d8b6412885373a031e3aee7 [file] [log] [blame]
project('rust shared library', 'rust', 'c')
rustc = meson.get_compiler('rust')
subdir('cdylib')
s = static_library('static', 'value.c')
# Test link_depends with a custom_target for Rust shared library.
# rustc provides a version script of its own; GNU ld does not
# support multiple version scripts, lld does
if host_machine.system() == 'linux' and rustc.has_link_argument('-fuse-ld=lld')
ct_map = import('fs').copyfile('stuff.map', 'stuff-ct.map')
vflag = ['-fuse-ld=lld', '-Wl,--version-script,' + ct_map.full_path()]
rustl = shared_library('stuff', 'stuff.rs', link_whole : s, install : true,
link_args : vflag, link_depends : ct_map)
else
rustl = shared_library('stuff', 'stuff.rs', link_whole : s, install : true)
endif
e = executable('prog', 'prog.rs', link_with : [rustl, cl], install : true)
if build_machine.system() == 'windows'
rustup = find_program('rustup')
test('linktest', rustup,
args: ['run', 'stable', e])
else
test('linktest', e)
endif