1.7 KiB
Utility crate to handle the TARGET
environment variable passed into build.rs scripts.
Unlike rust’s #[cfg(target…)]
attributes, build.rs
-scripts do not expose a convenient way
to detect the system the code will be built for in a way which would properly support
cross-compilation.
This crate exposes target_arch
, target_vendor
, target_os
and target_abi
very much in
the same manner as the corresponding cfg
attributes in Rust do, thus allowing build.rs
script to adjust the output depending on the target the crate is being built for..
Custom target json files are also supported.
Using target_build_utils
This crate is only useful if you’re using a build script (build.rs
). Add dependency to this
crate to your Cargo.toml
via:
[package]
# ...
build = "build.rs"
[build-dependencies]
target_build_utils = "0.1"
Then write your build.rs
like this:
extern crate target_build_utils;
use target_build_utils::TargetInfo;
fn main() {
let target = TargetInfo::new().expect("could not get target info");
if target.target_os() == "windows" {
// conditional stuff for windows
}
}
Now, when running cargo build
, your build.rs
should be aware of the properties of the
target system when your crate is being cross-compiled.
License
llvm_build_utils is distributed under ISC (MIT-like) or Apache (version 2.0) license at your choice.