// This test tries to check that basic cdylib libraries can be compiled and linked successfully // with C code, that the cdylib itself can depend on another rlib, and that the library can be built // with LTO. // // - `bar.rs` is a rlib // - `foo.rs` is a cdylib that relies on an extern crate `bar` and defines two `extern "C"` // functions: // - `foo()` which calls `bar::bar()`. // - `bar()` which implements basic addition. //@ ignore-cross-compile use run_make_support::{cc, cwd, dynamic_lib_name, is_msvc, rfs, run, rustc}; fn main() { rustc().input("bar.rs").run(); rustc().input("foo.rs").run(); if is_msvc() { cc().input("foo.c").arg("foo.dll.lib").out_exe("foo").run(); } else { cc().input("foo.c").arg("-lfoo").library_search_path(cwd()).output("foo").run(); } run("foo"); rfs::remove_file(dynamic_lib_name("foo")); rustc().input("foo.rs").arg("-Clto").run(); run("foo"); }