Crate ligen

Source
Expand description

§Ligen

Ligen (Language Interface Generator) is an extensible macro-based multi-language binding generator.

We officially support ligen-c, a binding generator for the Programming Language C.

§Requirements

cargo install cargo-ligen

§How to use

Here is an library on how to use the C generator and the CMake library generator in your crate: Cargo.toml

[dev-dependencies]
ligen       = "0.1"
ligen-c     = "0.1"
ligen-cmake = "0.1"

Now you can use it in your build.rs file as following:

use ligen::prelude::*;
use ligen_c::Generator as CGenerator;
use ligen_cmake::Generator as CMakeGenerator;

fn main() {
    if let Ok(library) = Library::read() {
        let c_generator = CGenerator::default();
        let cmake_generator = CMakeGenerator::default();
        cmake_generator.generate(&library).expect("Couldn't generate CMake library.");
        c_generator.generate(&library).expect("Couldn't generate C bindings");
    }
}

Then to generate the language bindings run: cargo ligen

cargo ligen passes all its extra parameters to cargo build, so you can use cargo ligen --release to generate a library with optimized production code (--debug is default).

§Getting started

Here are a few links to get started:

Re-exports§

pub use ligen_ir as ir;
pub use ligen_utils as utils;
pub use ligen_traits as traits;
pub use ligen_parser as parser;
pub use ligen_common as common;
pub use ligen_generator as generator;

Modules§

prelude
Prelude module with error handling types and others types.

Macros§

inner_ligen

Attribute Macros§

ligen