diff --git a/tests/depfile/cbindgen_test.cmake b/tests/depfile/cbindgen_test.cmake index f331665ac..752c3c3b6 100644 --- a/tests/depfile/cbindgen_test.cmake +++ b/tests/depfile/cbindgen_test.cmake @@ -17,6 +17,7 @@ function(add_cbindgen_command custom_target_name header_destination) "${CBINDGEN_PATH}" --output "${header_destination}" --depfile "${depfile_destination}" + ${ARGN} DEPFILE "${depfile_destination}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Running cbindgen" diff --git a/tests/depfile/single_crate_config/.gitignore b/tests/depfile/single_crate_config/.gitignore new file mode 100644 index 000000000..378eac25d --- /dev/null +++ b/tests/depfile/single_crate_config/.gitignore @@ -0,0 +1 @@ +build diff --git a/tests/depfile/single_crate_config/CMakeLists.txt b/tests/depfile/single_crate_config/CMakeLists.txt new file mode 100644 index 000000000..db7229460 --- /dev/null +++ b/tests/depfile/single_crate_config/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.21.0) + +project(depfile_test + LANGUAGES C + DESCRIPTION "A CMake Project to test the --depfile output from cbindgen" + ) + +include(../cbindgen_test.cmake) + +add_cbindgen_command(gen_bindings + "${CMAKE_CURRENT_BINARY_DIR}/single_crate.h" + --config "${CMAKE_CURRENT_SOURCE_DIR}/config.toml" + ) diff --git a/tests/depfile/single_crate_config/Cargo.lock b/tests/depfile/single_crate_config/Cargo.lock new file mode 100644 index 000000000..26d416263 --- /dev/null +++ b/tests/depfile/single_crate_config/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "single_crate" +version = "0.1.0" diff --git a/tests/depfile/single_crate_config/Cargo.toml b/tests/depfile/single_crate_config/Cargo.toml new file mode 100644 index 000000000..66eff1125 --- /dev/null +++ b/tests/depfile/single_crate_config/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "single_crate" +version = "0.1.0" +authors = ["cbindgen"] + +[features] +cbindgen = [] diff --git a/tests/depfile/single_crate_config/config.toml b/tests/depfile/single_crate_config/config.toml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/depfile/single_crate_config/expectations/dependencies b/tests/depfile/single_crate_config/expectations/dependencies new file mode 100644 index 000000000..bf8ccb39e --- /dev/null +++ b/tests/depfile/single_crate_config/expectations/dependencies @@ -0,0 +1,4 @@ +config.toml +src/alias/mod.rs +src/annotation.rs +src/lib.rs diff --git a/tests/depfile/single_crate_config/src/alias/mod.rs b/tests/depfile/single_crate_config/src/alias/mod.rs new file mode 100644 index 000000000..6c045d294 --- /dev/null +++ b/tests/depfile/single_crate_config/src/alias/mod.rs @@ -0,0 +1,32 @@ +#[repr(C)] +struct Dep { + a: i32, + b: f32, +} + +#[repr(C)] +struct Foo { + a: X, + b: X, + c: Dep, +} + +#[repr(u32)] +enum Status { + Ok, + Err, +} + +type IntFoo = Foo; +type DoubleFoo = Foo; + +type Unit = i32; +type SpecialStatus = Status; + +#[no_mangle] +pub extern "C" fn root( + x: IntFoo, + y: DoubleFoo, + z: Unit, + w: SpecialStatus, +) {} diff --git a/tests/depfile/single_crate_config/src/annotation.rs b/tests/depfile/single_crate_config/src/annotation.rs new file mode 100644 index 000000000..54cd52662 --- /dev/null +++ b/tests/depfile/single_crate_config/src/annotation.rs @@ -0,0 +1,43 @@ +/// cbindgen:derive-lt=true +/// cbindgen:derive-lte=true +/// cbindgen:derive-constructor=true +/// cbindgen:rename-all=GeckoCase +#[repr(C)] +struct A(i32); + +/// cbindgen:field-names=[x, y] +#[repr(C)] +struct B(i32, f32); + +/// cbindgen:trailing-values=[Z, W] +#[repr(u32)] +enum C { + X = 2, + Y, +} + +/// cbindgen:derive-helper-methods=true +#[repr(u8)] +enum F { + Foo(i16), + Bar { x: u8, y: i16 }, + Baz, +} + +/// cbindgen:derive-helper-methods +#[repr(C, u8)] +enum H { + Hello(i16), + There { x: u8, y: i16 }, + Everyone, +} + +#[no_mangle] +pub extern "C" fn root( + x: A, + y: B, + z: C, + f: F, + h: H, +) {} + diff --git a/tests/depfile/single_crate_config/src/lib.rs b/tests/depfile/single_crate_config/src/lib.rs new file mode 100644 index 000000000..c604cbd38 --- /dev/null +++ b/tests/depfile/single_crate_config/src/lib.rs @@ -0,0 +1,2 @@ +mod alias; +mod annotation; diff --git a/tests/depfile/single_crate_default_config/.gitignore b/tests/depfile/single_crate_default_config/.gitignore new file mode 100644 index 000000000..378eac25d --- /dev/null +++ b/tests/depfile/single_crate_default_config/.gitignore @@ -0,0 +1 @@ +build diff --git a/tests/depfile/single_crate_default_config/CMakeLists.txt b/tests/depfile/single_crate_default_config/CMakeLists.txt new file mode 100644 index 000000000..7a2b0ab9b --- /dev/null +++ b/tests/depfile/single_crate_default_config/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.21.0) + +project(depfile_test + LANGUAGES C + DESCRIPTION "A CMake Project to test the --depfile output from cbindgen" + ) + +include(../cbindgen_test.cmake) + +add_cbindgen_command(gen_bindings + "${CMAKE_CURRENT_BINARY_DIR}/single_crate.h" + ) diff --git a/tests/depfile/single_crate_default_config/Cargo.lock b/tests/depfile/single_crate_default_config/Cargo.lock new file mode 100644 index 000000000..26d416263 --- /dev/null +++ b/tests/depfile/single_crate_default_config/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "single_crate" +version = "0.1.0" diff --git a/tests/depfile/single_crate_default_config/Cargo.toml b/tests/depfile/single_crate_default_config/Cargo.toml new file mode 100644 index 000000000..66eff1125 --- /dev/null +++ b/tests/depfile/single_crate_default_config/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "single_crate" +version = "0.1.0" +authors = ["cbindgen"] + +[features] +cbindgen = [] diff --git a/tests/depfile/single_crate_default_config/cbindgen.toml b/tests/depfile/single_crate_default_config/cbindgen.toml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/depfile/single_crate_default_config/expectations/dependencies b/tests/depfile/single_crate_default_config/expectations/dependencies new file mode 100644 index 000000000..693c6f3c0 --- /dev/null +++ b/tests/depfile/single_crate_default_config/expectations/dependencies @@ -0,0 +1,4 @@ +cbindgen.toml +src/alias/mod.rs +src/annotation.rs +src/lib.rs diff --git a/tests/depfile/single_crate_default_config/src/alias/mod.rs b/tests/depfile/single_crate_default_config/src/alias/mod.rs new file mode 100644 index 000000000..6c045d294 --- /dev/null +++ b/tests/depfile/single_crate_default_config/src/alias/mod.rs @@ -0,0 +1,32 @@ +#[repr(C)] +struct Dep { + a: i32, + b: f32, +} + +#[repr(C)] +struct Foo { + a: X, + b: X, + c: Dep, +} + +#[repr(u32)] +enum Status { + Ok, + Err, +} + +type IntFoo = Foo; +type DoubleFoo = Foo; + +type Unit = i32; +type SpecialStatus = Status; + +#[no_mangle] +pub extern "C" fn root( + x: IntFoo, + y: DoubleFoo, + z: Unit, + w: SpecialStatus, +) {} diff --git a/tests/depfile/single_crate_default_config/src/annotation.rs b/tests/depfile/single_crate_default_config/src/annotation.rs new file mode 100644 index 000000000..54cd52662 --- /dev/null +++ b/tests/depfile/single_crate_default_config/src/annotation.rs @@ -0,0 +1,43 @@ +/// cbindgen:derive-lt=true +/// cbindgen:derive-lte=true +/// cbindgen:derive-constructor=true +/// cbindgen:rename-all=GeckoCase +#[repr(C)] +struct A(i32); + +/// cbindgen:field-names=[x, y] +#[repr(C)] +struct B(i32, f32); + +/// cbindgen:trailing-values=[Z, W] +#[repr(u32)] +enum C { + X = 2, + Y, +} + +/// cbindgen:derive-helper-methods=true +#[repr(u8)] +enum F { + Foo(i16), + Bar { x: u8, y: i16 }, + Baz, +} + +/// cbindgen:derive-helper-methods +#[repr(C, u8)] +enum H { + Hello(i16), + There { x: u8, y: i16 }, + Everyone, +} + +#[no_mangle] +pub extern "C" fn root( + x: A, + y: B, + z: C, + f: F, + h: H, +) {} + diff --git a/tests/depfile/single_crate_default_config/src/lib.rs b/tests/depfile/single_crate_default_config/src/lib.rs new file mode 100644 index 000000000..c604cbd38 --- /dev/null +++ b/tests/depfile/single_crate_default_config/src/lib.rs @@ -0,0 +1,2 @@ +mod alias; +mod annotation;