A build dependency to compile a native library that uses autotools or
a compatible configure
script + make
.
It is based on cmake-rs and the API tries to be as similar as possible to it.
For Emscripten targets like "wasm32-unknown-emscripten", configure
and
make
invocations are passed as arguments to emconfigure
and emmake
respectively as described in the Emscripten docs.
Make sure to set the env to CC=clang-{version}
and that the compiler is in the PATH
. If you are using install-llvm-action,
make sure to set env: true
.
Keep in mind that we rely on cc-rs
heuristics to select the C and C++ compilers. Some may be missing on your system, please make sure to set
the enviroment variables to select the correct compiler if
the heuristics fail (e.g. musl-gcc
might not exist while x86_64-linux-musl-gcc
does).
# Cargo.toml
[build-dependencies]
autotools = "0.2"
// build.rs
use autotools;
// Build the project in the path `foo` and installs it in `$OUT_DIR`
let dst = autotools::build("foo");
// Simply link the library without using pkg-config
println!("cargo:rustc-link-search=native={}", dst.display());
println!("cargo:rustc-link-lib=static=foo");
// build.rs
use autotools::Config;
let dst = Config::new("foo")
.reconf("-ivf")
.enable("feature", None)
.with("dep", None)
.disable("otherfeature", None)
.without("otherdep", None)
.cflag("-Wall")
.build();