#playdate #bindings #code-generation

bin+lib playdate-bindgen

Bindgen configuration for Playdate API and utils

6 releases

0.1.5 Feb 10, 2024
0.1.4 Jan 16, 2024
0.1.3 Nov 21, 2023
0.1.2 Oct 5, 2023
0.0.0 Sep 4, 2023

#83 in FFI

Download history 116/week @ 2023-10-29 125/week @ 2023-11-05 180/week @ 2023-11-12 271/week @ 2023-11-19 161/week @ 2023-11-26 152/week @ 2023-12-03 76/week @ 2023-12-10 77/week @ 2023-12-17 64/week @ 2023-12-24 35/week @ 2023-12-31 58/week @ 2024-01-07 161/week @ 2024-01-14 41/week @ 2024-01-21 49/week @ 2024-01-28 128/week @ 2024-02-04 125/week @ 2024-02-11

344 downloads per month
Used in 13 crates (via playdate-sys)

MIT/Apache and maybe GPL-3.0+

77KB
2K SLoC

Playdate Bindings Generator

Util to generate bindings to Playdate with additional code-gen features like in-code documentation directly by official c-reference.

Requirements

  1. Rust nightly toolchain
  2. Playdate SDK
    • Ensure that env var PLAYDATE_SDK_PATH points to the SDK root
  3. Follow the official documentation
    • Ensure that arm-none-eabi-gcc or gcc-arm-none-eabi in your PATH
  4. Requirements inherited by bindgen, follow official documentation.

Configuration

Inherited configuration by bindgen: follow bindgen official documentation.

Env var PLAYDATE_SDK_PATH as described in playdate official documentation.

Optional env var ARM_GCC_PATH to help to find arm-none-eabi-gcc (or gcc-arm-none-eabi) with entire toolchain. Useful only for troubleshooting.

Usage

Cargo.toml:

[build-dependencies.bindgen]
package = "playdate-bindgen"
version = "*"

Add this to build-dependencies and add to your build-script something like this:

let cfg = bindgen::cfg::Config::default();
let generator = bindgen::Generator::new(cfg).expect("Couldn't create bindings generator.");
let out_path = bindgen::env_var("OUT_DIR").map(PathBuf::from)
	                                       .map(|p| p.join(&generator.filename.to_string()))
	                                       .unwrap();
let bindings = generator.generate().expect("Couldn't generate bindings.");
bindings.write_to_file(&out_path).expect("Couldn't write bindings.");

For complex examples see build-script in the playdate-sys crate.


This software is not sponsored or supported by Panic.

Dependencies

~7–19MB
~250K SLoC