| 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 |