Skip to content
LLVM build utils for cargo build scripts
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.gitignore
Cargo.toml
README.md
build.rs

README.md

WARNING Due to the experimental nature of the project I strongly discourage using the crate for the time being

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

Documentation

¹: 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.

You can’t perform that action at this time.