Skip to content

Commit

Permalink
feat(capi): include rustsat version in header
Browse files Browse the repository at this point in the history
  • Loading branch information
chrjabs committed Nov 27, 2024
1 parent a07fe96 commit 25bcc7c
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 4 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/capi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,4 @@ jobs:
- name: Check C header
run: |
cargo install cbindgen
cbindgen -c capi/cbindgen.toml --crate rustsat-capi -o capi/rustsat.h --verify
scripts/verify-c-header.sh
13 changes: 12 additions & 1 deletion capi/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,23 @@ fn main() {
.expect("could not read cbindgen.toml"),
)
.with_crate(crate_dir)
.with_after_include(format!(
"#define RUSTSAT_VERSION {version}
#define RUSTSAT_VERSION_MAJOR {major}
#define RUSTSAT_VERSION_MINOR {minor}
#define RUSTSAT_VERSION_PATCH {patch}",
version = env!("CARGO_PKG_VERSION"),
major = env!("CARGO_PKG_VERSION_MAJOR"),
minor = env!("CARGO_PKG_VERSION_MINOR"),
patch = env!("CARGO_PKG_VERSION_PATCH"),
))
.generate()
.expect("Unable to generate bindings")
.write_to_file("rustsat.h");

println!("cargo:rerun-if-changed=cbindgen.toml");
println!("cargo:rerun-if-changed=src/capi.rs");
println!("cargo:rerun-if-changed=Cargo.toml");
println!("cargo:rerun-if-changed=src/");

// Setup inline-c
let include_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
Expand Down
2 changes: 1 addition & 1 deletion capi/cbindgen.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ using_namespaces = []
sys_includes = []
includes = []
no_includes = false
after_includes = ""
after_includes = "#define RUSTSAT_VERSION 0.6.1\n#define RUSTSAT_VERSION_MAJOR 0\n#define RUSTSAT_VERSION_MINOR 6\n#define RUSTSAT_VERSION_PATCH 1"


############################ Code Style Options ################################
Expand Down
5 changes: 4 additions & 1 deletion capi/rustsat.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>

#define RUSTSAT_VERSION 0.6.1
#define RUSTSAT_VERSION_MAJOR 0
#define RUSTSAT_VERSION_MINOR 6
#define RUSTSAT_VERSION_PATCH 1

#ifdef __cplusplus
namespace RustSAT {
Expand Down
14 changes: 14 additions & 0 deletions scripts/verify-c-header.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash

VERSION=$(grep '^version = "[[:digit:]]\+.[[:digit:]]\+.[[:digit:]]\+"' Cargo.toml | cut -d '"' -f2)
MAJOR=$(echo "${VERSION}" | cut -d '.' -f1)
MINOR=$(echo "${VERSION}" | cut -d '.' -f2)
PATCH=$(echo "${VERSION}" | cut -d '.' -f3)

TMP_CONF=$(mktemp XXXXXXXXXX.cbindgen.toml)

sed "s/after_includes = \"\"/after_includes = \"#define RUSTSAT_VERSION ${VERSION}\\\n#define RUSTSAT_VERSION_MAJOR ${MAJOR}\\\n#define RUSTSAT_VERSION_MINOR ${MINOR}\\\n#define RUSTSAT_VERSION_PATCH ${PATCH}\"/g" capi/cbindgen.toml > ${TMP_CONF}

cbindgen -c ${TMP_CONF} --crate rustsat-capi -o capi/rustsat.h --verify

rm ${TMP_CONF}

0 comments on commit 25bcc7c

Please sign in to comment.