Import sys/types.h for ssize_t
Previously the header file generated for the following bridge did not
compile.
#[cxx::bridge]
mod ffi {
struct S {
x: isize,
}
}
example-ecfac19134395bcc/out/cxxbridge/sources/example/src/main.rs.cc:15:15: error: ‘ssize_t’ does not name a type
15 | using isize = ssize_t;
| ^~~~~~~
example-ecfac19134395bcc/out/cxxbridge/sources/example/src/main.rs.cc:26:11: error: ‘isize’ in namespace ‘rust’ does not name a type
26 | ::rust::isize x;
| ^~~~~
diff --git a/gen/src/include.rs b/gen/src/include.rs
index 3a0d66b..6b7e580 100644
--- a/gen/src/include.rs
+++ b/gen/src/include.rs
@@ -37,6 +37,7 @@
pub utility: bool,
pub vector: bool,
pub basetsd: bool,
+ pub sys_types: bool,
pub content: Content<'a>,
}
@@ -88,6 +89,7 @@
utility,
vector,
basetsd,
+ sys_types,
content: _,
} = *include;
@@ -139,6 +141,18 @@
if basetsd {
writeln!(out, "#if defined(_WIN32)");
writeln!(out, "#include <basetsd.h>");
+ }
+ if sys_types {
+ if basetsd {
+ writeln!(out, "#else");
+ } else {
+ writeln!(out, "#if not defined(_WIN32)");
+ }
+ }
+ if sys_types {
+ writeln!(out, "#include <sys/types.h>");
+ }
+ if basetsd || sys_types {
writeln!(out, "#endif");
}
}