Project

ffi_gen

0.05
No release in over 3 years
Low commit activity in last 3 years
There's a lot of open issues
A generator for Ruby FFI bindings, directly from header files via LLVM's Clang compiler
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 1.0
 Project Readme

A generator for Ruby FFI bindings

Author: Richard Musiol Contributors: Jeremy Voorhis (thanks for the initial idea) License: MIT (see LICENSE)

Features

  • Generation of FFI methods, structures, unions, enumerations and callbacks
  • Generation of YARD documentation comments
  • Tested with headers of the following libraries:
    • Cairo
    • CEF (Chromium Embedded Framework)
    • Clang
    • LibSSH2
    • LLVM
    • OpenGL
    • SQLite3

Requirements

  • Ruby 1.9
  • Clang 3.5 or later (Download the binaries or build from source configured with --enable-shared)

These requirements are only for running the generator. The generated files are Ruby 1.8 compatible and do not need Clang.

Example

Use the following interface in a script or Rake task:

require "ffi_gen"

FFIGen.generate(
  module_name: "Clang",
  ffi_lib:     "clang",
  headers:     ["clang-c/Index.h"],
  cflags:      `llvm-config --cflags`.split(" "),
  prefixes:    ["clang_", "CX"],
  output:      "clang-c/index.rb"
)

Output: clang-c/index.rb

Other generated files can be found in the test/output directory.

Hints

You may need to set additional include directories:

export CPATH=/usr/lib/gcc/x86_64-linux-gnu/4.6.1/include

Your GCC include paths can be seen with:

`gcc -print-prog-name=cc1` -v

Projects using ffi_gen

Roadmap

  • Support for more libraries:
    • (Write me if you have a whish)
  • Automatic generation of object oriented wrappers
  • Polish YARD documentation comments some more

Feedback

Please use GitHub's issue tracker for problems or suggestions. Pull requests are welcome, too.