Skip to content

Commit

Permalink
Merge pull request #125 from rust3ds/update-sys
Browse files Browse the repository at this point in the history
Update bindgen script and bindings
  • Loading branch information
Meziu committed May 30, 2023
2 parents f6d16d1 + bc9725e commit 54c6359
Show file tree
Hide file tree
Showing 11 changed files with 3,252 additions and 7,723 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Expand Up @@ -47,7 +47,7 @@ jobs:
run: cargo fmt --all --verbose -- --check

- name: Cargo check
run: cargo 3ds clippy --color=always --workspace --verbose --all-targets
run: cargo 3ds clippy --color=always --verbose --all-targets
# --deny=warnings would be nice, but can easily break CI for new clippy
# lints getting added. I'd also like to use Github's "inline warnings"
# feature, but https://github.com/actions/runner/issues/2341 means we
Expand Down
3 changes: 2 additions & 1 deletion Cargo.toml
@@ -1,5 +1,6 @@
[workspace]
members = ["ctru-rs", "ctru-sys", "ctru-sys/docstring-to-rustdoc"]
members = ["ctru-rs", "ctru-sys", "ctru-sys/bindgen-ctru-sys"]
default-members = ["ctru-rs", "ctru-sys"]

[patch.'https://github.com/rust3ds/ctru-rs']
# Make sure all dependencies use the local ctru-sys package
Expand Down
2 changes: 1 addition & 1 deletion ctru-rs/Cargo.toml
Expand Up @@ -13,7 +13,7 @@ name = "ctru"

[dependencies]
cfg-if = "1.0"
ctru-sys = { path = "../ctru-sys", version = "21.2" }
ctru-sys = { path = "../ctru-sys", version = "22.2" }
const-zero = "0.1.0"
shim-3ds = { git = "https://github.com/rust3ds/shim-3ds.git" }
pthread-3ds = { git = "https://github.com/rust3ds/pthread-3ds.git" }
Expand Down
2 changes: 1 addition & 1 deletion ctru-sys/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "ctru-sys"
version = "21.2.0+2.1.2-1"
version = "22.2.0+2.2.2-1"
authors = [ "Rust3DS Org", "Ronald Kinard <furyhunter600@gmail.com>" ]
license = "Zlib"
links = "ctru"
Expand Down
8 changes: 8 additions & 0 deletions ctru-sys/bindgen-ctru-sys/Cargo.toml
@@ -0,0 +1,8 @@
[package]
name = "bindgen-ctru-sys"
version = "0.1.0"
edition = "2021"

[dependencies]
bindgen = "0.65.1"
doxygen-rs = "0.4.2"
62 changes: 62 additions & 0 deletions ctru-sys/bindgen-ctru-sys/src/main.rs
@@ -0,0 +1,62 @@
use bindgen::callbacks::ParseCallbacks;
use bindgen::{Builder, RustTarget};
use std::path::PathBuf;

#[derive(Debug)]
struct CustomCallbacks;

impl ParseCallbacks for CustomCallbacks {
fn process_comment(&self, comment: &str) -> Option<String> {
Some(doxygen_rs::transform(comment))
}
}

fn main() {
let devkitpro = std::env::var("DEVKITPRO").expect("DEVKITPRO not set in environment");
let devkitarm = std::env::var("DEVKITARM").expect("DEVKITARM not set in environment");

let include_path = PathBuf::from_iter([devkitpro.as_str(), "libctru", "include"]);
let ctru_header = include_path.join("3ds.h");

let sysroot = PathBuf::from(devkitarm).join("arm-none-eabi");
let system_include = sysroot.join("include");
let errno_header = system_include.join("errno.h");

let bindings = Builder::default()
.header(ctru_header.to_str().unwrap())
.header(errno_header.to_str().unwrap())
.rust_target(RustTarget::Nightly)
.use_core()
.trust_clang_mangling(false)
.must_use_type("Result")
.layout_tests(false)
.ctypes_prefix("::libc")
.prepend_enum_name(false)
.blocklist_type("u(8|16|32|64)")
.blocklist_type("__builtin_va_list")
.blocklist_type("__va_list")
.opaque_type("MiiData")
.derive_default(true)
.clang_args([
"--target=arm-none-eabi",
"--sysroot",
sysroot.to_str().unwrap(),
"-isystem",
system_include.to_str().unwrap(),
"-I",
include_path.to_str().unwrap(),
"-mfloat-abi=hard",
"-march=armv6k",
"-mtune=mpcore",
"-mfpu=vfp",
"-DARM11",
"-D__3DS__",
])
.parse_callbacks(Box::new(CustomCallbacks))
.generate()
.expect("unable to generate bindings");

bindings
.write(Box::new(std::io::stdout()))
.expect("failed to write bindings");
}
30 changes: 1 addition & 29 deletions ctru-sys/bindgen.sh
Expand Up @@ -21,35 +21,7 @@ CTRU_SYS_VERSION="$(
)"

echo "Generating bindings.rs..."
bindgen "$DEVKITPRO/libctru/include/3ds.h" \
--rust-target nightly \
--use-core \
--distrust-clang-mangling \
--must-use-type 'Result' \
--no-layout-tests \
--ctypes-prefix "::libc" \
--no-prepend-enum-name \
--generate "functions,types,vars" \
--blocklist-type "u(8|16|32|64)" \
--blocklist-type "__builtin_va_list" \
--blocklist-type "__va_list" \
--opaque-type "MiiData" \
--with-derive-default \
-- \
--target=arm-none-eabi \
--sysroot="$DEVKITARM/arm-none-eabi" \
-isystem"$DEVKITARM/arm-none-eabi/include" \
-I"$DEVKITPRO/libctru/include" \
-mfloat-abi=hard \
-march=armv6k \
-mtune=mpcore \
-mfpu=vfp \
-DARM11 \
-D__3DS__ \
> src/bindings.rs

echo "Updating docstrings in bindings.rs..."
cargo run --quiet --package docstring-to-rustdoc -- src/bindings.rs
cargo run --package bindgen-ctru-sys > src/bindings.rs

echo "Formatting generated files..."
cargo fmt --all
Expand Down
7 changes: 0 additions & 7 deletions ctru-sys/docstring-to-rustdoc/Cargo.toml

This file was deleted.

31 changes: 0 additions & 31 deletions ctru-sys/docstring-to-rustdoc/src/main.rs

This file was deleted.

0 comments on commit 54c6359

Please sign in to comment.