Skip to content

nagisa/llvm_build_utils.rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

LLVM build utils for cargo build scripts

Resources

Stars

Watchers

Forks

Packages

No packages published