11use std:: env;
22
3+ struct BuildOptions {
4+ usingz : bool ,
5+ #[ allow( unused) ]
6+ generated_bindings_name : String ,
7+ }
8+
39fn main ( ) {
10+ build ( BuildOptions {
11+ generated_bindings_name : "bindings" . to_string ( ) ,
12+ usingz : false ,
13+ } ) ;
14+ build ( BuildOptions {
15+ generated_bindings_name : "bindings_usingz" . to_string ( ) ,
16+ usingz : true ,
17+ } ) ;
18+ }
19+
20+ fn build ( options : BuildOptions ) {
421 println ! ( "cargo:rerun-if-changed=clipper2c" ) ;
522 if cfg ! ( feature = "update-bindings" ) {
623 println ! ( "cargo:rerun-if-changed=generated" ) ;
724 }
825
9- cc:: Build :: new ( )
26+ #[ allow( unused_mut) ]
27+ let mut build = & mut cc:: Build :: new ( ) ;
28+
29+ if options. usingz {
30+ build = build. define ( "USINGZ" , None ) ;
31+ }
32+
33+ build
1034 . cpp ( true )
1135 . opt_level ( 3 )
1236 . include ( "clipper2c/vendor/Clipper2/CPP/Clipper2Lib/include/" )
@@ -49,7 +73,13 @@ fn main() {
4973
5074 #[ cfg( feature = "generate-bindings" ) ]
5175 {
52- let builder = bindgen:: Builder :: default ( )
76+ let mut builder = bindgen:: Builder :: default ( ) ;
77+
78+ if options. usingz {
79+ builder = builder. clang_arg ( "-DUSINGZ" ) ;
80+ }
81+
82+ builder = builder
5383 . header ( "clipper2c/include/clipper2c.h" )
5484 . header ( "clipper2c/include/types.h" )
5585 . derive_default ( true )
@@ -111,6 +141,7 @@ fn main() {
111141 . allowlist_function ( "clipper_clipperd_set_reverse_solution" )
112142 . allowlist_function ( "clipper_clipperd_get_reverse_solution" )
113143 . allowlist_function ( "clipper_clipperd_clear" )
144+ . allowlist_function ( "clipper_clipperd_set_z_callback" )
114145 . allowlist_function ( "clipper_delete_clipperd" )
115146 // PolyTreeD Methods
116147 . allowlist_function ( "clipper_polytreed_size" )
@@ -153,7 +184,7 @@ fn main() {
153184 . allowlist_function ( "clipper_paths64_inflate" )
154185 . allowlist_function ( "clipper_paths64_to_pathsd" )
155186 . allowlist_function ( "clipper_paths64_area" )
156- // ClipperD Methods
187+ // Clipper64 Methods
157188 . allowlist_function ( "clipper_clipper64_size" )
158189 . allowlist_function ( "clipper_clipper64" )
159190 . allowlist_function ( "clipper_clipper64_add_subject" )
@@ -166,6 +197,7 @@ fn main() {
166197 . allowlist_function ( "clipper_clipper64_set_reverse_solution" )
167198 . allowlist_function ( "clipper_clipper64_get_reverse_solution" )
168199 . allowlist_function ( "clipper_clipper64_clear" )
200+ . allowlist_function ( "clipper_clipper64_set_z_callback" )
169201 . allowlist_function ( "clipper_delete_clipper64" )
170202 // PolyTreeD Methods
171203 . allowlist_function ( "clipper_polytree64_size" )
@@ -207,7 +239,7 @@ fn main() {
207239 } else {
208240 std:: path:: PathBuf :: from ( env:: var ( "OUT_DIR" ) . unwrap ( ) )
209241 } ;
210- let out_bindings = out_path. join ( "bindings .rs") ;
242+ let out_bindings = out_path. join ( options . generated_bindings_name + " .rs") ;
211243
212244 bindings
213245 . write_to_file ( & out_bindings)
0 commit comments