@@ -14,7 +14,7 @@ fn main() {
1414 build_system ( & out_dir, & csrc_dir) ;
1515 }
1616
17- generate_bindings ( & csrc_dir, & out_dir, vendored, & manifest_dir) ;
17+ write_bindings ( & csrc_dir, & out_dir, vendored, & manifest_dir) ;
1818
1919 println ! ( "cargo:rerun-if-changed={}" , csrc_dir. display( ) ) ;
2020}
@@ -248,7 +248,10 @@ fn find_library(name: &str) -> Option<PathBuf> {
248248 None
249249}
250250
251- fn generate_bindings ( csrc_dir : & Path , out_dir : & Path , vendored : bool , manifest_dir : & Path ) {
251+ #[ cfg( feature = "buildtime-bindgen" ) ]
252+ fn write_bindings ( csrc_dir : & Path , out_dir : & Path , vendored : bool , manifest_dir : & Path ) {
253+ let out_bindings = out_dir. join ( "bindings.rs" ) ;
254+
252255 let mut builder = bindgen:: Builder :: default ( )
253256 . header ( csrc_dir. join ( "litehtml_c.h" ) . to_str ( ) . unwrap ( ) )
254257 . allowlist_function ( "lh_.*" )
@@ -268,6 +271,14 @@ fn generate_bindings(csrc_dir: &Path, out_dir: &Path, vendored: bool, manifest_d
268271 let bindings = builder. generate ( ) . expect ( "failed to generate bindings" ) ;
269272
270273 bindings
271- . write_to_file ( out_dir . join ( "bindings.rs" ) )
274+ . write_to_file ( out_bindings )
272275 . expect ( "failed to write bindings" ) ;
273276}
277+
278+ #[ cfg( not( feature = "buildtime-bindgen" ) ) ]
279+ fn write_bindings ( _csrc_dir : & Path , out_dir : & Path , _vendored : bool , manifest_dir : & Path ) {
280+ let pregenerated = manifest_dir. join ( "src/bindings.rs" ) ;
281+ let out_bindings = out_dir. join ( "bindings.rs" ) ;
282+ std:: fs:: copy ( & pregenerated, & out_bindings) . expect ( "failed to copy pre-generated bindings" ) ;
283+ println ! ( "cargo:rerun-if-changed={}" , pregenerated. display( ) ) ;
284+ }
0 commit comments