3 releases (breaking)
Uses old Rust 2015
0.3.0 | Jul 4, 2016 |
---|---|
0.2.0 | Jul 1, 2016 |
0.1.0 | Jul 1, 2016 |
#4 in #bc
24KB
375 lines
Ever wanted to build “native” assemblyish stuff in your cargo build scripts… something gcc crate cannot quite handle yet? Welcome to llvm_build_utils which provides a convenient API to pack your LLVM-IR or LLVM bytecode files into a ready to use archive full of machine code! It doesn’t even need LLVM installation and works on stable Rust¹!
No MSVC windows support yet, though
¹: May break between versions or be incompatible with some versions of Rust, though. We’ll try to document such breakages in the table below.
Compatibility table
Rustc version | This Library |
---|---|
1.8-1.11 | 0.1-0.2 |
Using llvm_build_utils
First, you’ll want to both add a build script for your crate (build.rs
) and also add this crate
to your Cargo.toml
via:
[package]
# ...
build = "build.rs"
[build-dependencies]
llvm_build_utils = "0.3"
Then write your build.rs
like this:
extern crate llvm_build_utils;
use llvm_build_utils::*;
fn main() {
build_archive("libyourthing.a", &[
("input.ll", BuildOptions {
..BuildOptions::default() // customise how the file is built
})
]).expect("error happened").print();
}
Running a cargo build
should produce libyourthing.a
which then may be linked to your Rust
executable/library.
License
llvm_build_utils is distributed under ISC (MIT-like) or Apache (version 2.0) license at your choice.
Dependencies
~2.5MB
~49K SLoC