| project('static rust and c polyglot executable', 'c', 'rust') |
| |
| r = static_library('stuff', 'stuff.rs', rust_crate_type : 'staticlib') |
| |
| # clib is installed static library and stuff is not installed. That means that |
| # to be usable clib must link_whole stuff. Meson automatically promote to link_whole, |
| # as it would do with C libraries, but then cannot extract objects from stuff and |
| # thus should error out. |
| # FIXME: We should support this use-case in the future. |
| testcase expect_error('Cannot link_whole a custom or Rust target \'stuff\' into a static library \'clib\'. Instead, pass individual object files with the "objects:" keyword argument if possible. Meson had to promote link to link_whole because \'clib\' is installed but not \'stuff\', and thus has to include objects from \'stuff\' to be usable.') |
| l = static_library('clib', 'clib.c', link_with : r, install : true) |
| endtestcase |
| |
| l = static_library('clib', 'clib.c', link_with : r) |
| |
| e = executable('prog', 'prog.c', |
| link_with : l, |
| install : true) |
| test('polyglottest', e) |
| |
| # Create a version that has overflow-checks on, then run a test to ensure that |
| # the overflow-checks is larger than the other version by some ammount |
| r2 = static_library('stuff2', 'stuff.rs', rust_crate_type : 'staticlib', rust_args : ['-C', 'overflow-checks=on']) |
| l2 = static_library('clib2', 'clib.c') |
| e2 = executable('prog2', 'prog.c', link_with : [r2, l2]) |
| test('overflow-checks', find_program('overflow_size_checks.py'), args : [e, e2]) |