diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 59cd47d..19c7587 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,7 +59,9 @@ jobs: # Need to rebuild the FFI wrapper so that its binary is given a filename # without a hash. - name: Build FFI wrapper - run: cargo build --manifest-path ffi/Cargo.toml --features ffi-headers + run: | + cargo build --manifest-path ffi/Cargo.toml + cbindgen ffi/ -o ffi/include/loot_condition_interpreter.h # Use bash because PowerShell doesn't fail if one command fails. - name: Build and run C++ tests @@ -120,7 +122,9 @@ jobs: # Need to rebuild the FFI wrapper so that its binary is given a filename # without a hash. - name: Build FFI wrapper - run: cargo build --manifest-path ffi/Cargo.toml --features ffi-headers + run: | + cargo build --manifest-path ffi/Cargo.toml + cbindgen ffi/ -o ffi/include/loot_condition_interpreter.h # Use bash because PowerShell doesn't fail if one command fails. - name: Build and run C++ tests diff --git a/Cargo.lock b/Cargo.lock index d745ae2..d8df83d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,29 +23,12 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.5.0" @@ -64,25 +47,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" -[[package]] -name = "cbindgen" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49" -dependencies = [ - "clap 3.2.25", - "heck", - "indexmap", - "log", - "proc-macro2", - "quote", - "serde", - "serde_json", - "syn 1.0.109", - "tempfile", - "toml", -] - [[package]] name = "cfg-if" version = "1.0.0" @@ -116,21 +80,6 @@ dependencies = [ "half", ] -[[package]] -name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_lex 0.2.4", - "indexmap", - "strsim", - "termcolor", - "textwrap", -] - [[package]] name = "clap" version = "4.5.4" @@ -147,16 +96,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstyle", - "clap_lex 0.7.0", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", + "clap_lex", ] [[package]] @@ -183,7 +123,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.4", + "clap", "criterion-plot", "is-terminal", "itertools", @@ -307,50 +247,19 @@ dependencies = [ "crunchy", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown", -] - [[package]] name = "is-terminal" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", "windows-sys", ] @@ -415,7 +324,6 @@ dependencies = [ name = "loot-condition-interpreter-ffi" version = "3.1.0" dependencies = [ - "cbindgen", "libc", "loot-condition-interpreter", ] @@ -469,12 +377,6 @@ version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - [[package]] name = "pelite" version = "0.10.0" @@ -595,7 +497,7 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags", "errno", "libc", "linux-raw-sys", @@ -634,7 +536,7 @@ checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn", ] [[package]] @@ -648,23 +550,6 @@ dependencies = [ "serde", ] -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.60" @@ -688,21 +573,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" - [[package]] name = "tinytemplate" version = "1.2.1" @@ -713,15 +583,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "unicase" version = "2.7.0" @@ -774,7 +635,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.60", + "syn", "wasm-bindgen-shared", ] @@ -796,7 +657,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/README.md b/README.md index 9083e49..1d4e9dd 100644 --- a/README.md +++ b/README.md @@ -27,16 +27,7 @@ To build the Rust and C FFI libraries, run: cargo build --release --package loot-condition-interpreter-ffi ``` -To generate a C++ header file as part of the build, instead run: - -``` -cargo build --release --package loot-condition-interpreter-ffi --all-features -``` - -This will create a file at `ffi/include/loot_condition_interpreter.h`. -However, this involves building [cbindgen](https://github.com/eqrion/cbindgen) -as a dependency, which is relatively slow. If you have cbindgen installed -separately, it's faster to generate the headers using its CLI: +Use [cbindgen](https://github.com/eqrion/cbindgen) to generate a C++ header file: ``` cbindgen ffi/ -o ffi/include/loot_condition_interpreter.h diff --git a/ffi/Cargo.toml b/ffi/Cargo.toml index 3933e0b..948ccd3 100644 --- a/ffi/Cargo.toml +++ b/ffi/Cargo.toml @@ -3,7 +3,6 @@ name = "loot-condition-interpreter-ffi" version = "3.1.0" authors = ["Oliver Hamlet "] license = "MIT" -build = "build.rs" edition = "2018" [dependencies] @@ -13,10 +12,3 @@ libc = "0.2" [lib] name = "loot_condition_interpreter_ffi" crate-type = ["staticlib"] - -[features] -default = [] -ffi-headers = ["cbindgen"] - -[build-dependencies] -cbindgen = { version = "0.26", optional = true } diff --git a/ffi/build.rs b/ffi/build.rs deleted file mode 100644 index 74affc4..0000000 --- a/ffi/build.rs +++ /dev/null @@ -1,25 +0,0 @@ -#[cfg(feature = "ffi-headers")] -mod ffi_headers { - extern crate cbindgen; - - use std::env; - use std::fs; - - use self::cbindgen::generate; - - pub fn generate_headers() { - let crate_dir = env::var("CARGO_MANIFEST_DIR") - .expect("could not get value of CARGO_MANIFEST_DIR env var"); - - fs::create_dir_all("include").expect("could not create include directory"); - - generate(&crate_dir) - .expect("could not generate C/C++ header file") - .write_to_file("include/loot_condition_interpreter.h"); - } -} - -fn main() { - #[cfg(feature = "ffi-headers")] - ffi_headers::generate_headers(); -}