@@ -27,12 +27,13 @@ fn try_gen_api(dst: &Path, pointer_size: usize) -> bool {
27
27
}
28
28
29
29
fn main ( ) {
30
- // get size of C pointer
31
- let target_pointer_width = match env:: var ( "CARGO_CFG_TARGET_POINTER_WIDTH" ) {
32
- Ok ( ref val) if val == "32" => 4 ,
33
- Ok ( ref val) if val == "64" => 8 ,
34
- Ok ( ref val) => panic ! ( "Unsupported target pointer width: {}" , val) ,
35
- Err ( err) => panic ! (
30
+ // get size of C long
31
+ let long_width = match ( env:: var ( "CARGO_CFG_TARGET_POINTER_WIDTH" ) , env:: var ( "CARGO_CFG_TARGET_OS" ) ) {
32
+ ( _, Ok ( ref os) ) if os == "windows" => 4 ,
33
+ ( Ok ( ref val) , _) if val == "32" => 4 ,
34
+ ( Ok ( ref val) , _) if val == "64" => 8 ,
35
+ ( Ok ( ref val) , _) => panic ! ( "Unsupported target pointer width: {}" , val) ,
36
+ ( Err ( err) , _) => panic ! (
36
37
"An error occurred while determining the pointer width to compile `rustler_sys` for:\n \n {:?}\n \n Please report a bug." ,
37
38
err
38
39
) ,
@@ -45,11 +46,11 @@ fn main() {
45
46
46
47
let dst = Path :: new ( & out_dir) . join ( SNIPPET_NAME ) ;
47
48
48
- if !try_gen_api ( & dst, target_pointer_width ) {
49
+ if !try_gen_api ( & dst, long_width ) {
49
50
eprintln ! ( "Failed to generate API from local installation, falling back to precompiled" ) ;
50
51
51
52
let source =
52
- Path :: new ( & "precompiled" ) . join ( format ! ( "nif_api.{}.snippet" , target_pointer_width ) ) ;
53
+ Path :: new ( & "precompiled" ) . join ( format ! ( "nif_api.{}.snippet" , long_width ) ) ;
53
54
54
55
fs:: copy ( & source, & dst) . unwrap ( ) ;
55
56
}
0 commit comments