@@ -70,14 +70,8 @@ fn main() {
70
70
Some ( _) | None => set_cfg ( "freebsd11" ) ,
71
71
}
72
72
73
- match emcc_version ( ) {
74
- Some ( ( major, minor, patch) )
75
- if ( major > 3 )
76
- || ( major == 3 && minor > 1 )
77
- || ( major == 3 && minor == 1 && patch >= 42 ) =>
78
- {
79
- set_cfg ( "emscripten_new_stat_abi" )
80
- }
73
+ match emcc_version_code ( ) {
74
+ Some ( v) if ( v >= 30142 ) => set_cfg ( "emscripten_new_stat_abi" ) ,
81
75
// Non-Emscripten or version < 3.1.42.
82
76
Some ( _) | None => ( ) ,
83
77
}
@@ -251,7 +245,7 @@ fn which_freebsd() -> Option<i32> {
251
245
}
252
246
}
253
247
254
- fn emcc_version ( ) -> Option < ( u32 , u32 , u32 ) > {
248
+ fn emcc_version_code ( ) -> Option < u64 > {
255
249
let output = std:: process:: Command :: new ( "emcc" )
256
250
. arg ( "-dumpversion" )
257
251
. output ( )
@@ -271,11 +265,11 @@ fn emcc_version() -> Option<(u32, u32, u32)> {
271
265
let version = stdout. unwrap ( ) ;
272
266
let mut pieces = version. trim ( ) . split ( '.' ) ;
273
267
274
- let major = pieces. next ( ) ? . parse ( ) . unwrap ( ) ;
275
- let minor = pieces. next ( ) ? . parse ( ) . unwrap ( ) ;
276
- let patch = pieces. next ( ) ? . parse ( ) . unwrap ( ) ;
268
+ let major = pieces. next ( ) . and_then ( |x| x . parse ( ) . ok ( ) ) . unwrap_or ( 0 ) ;
269
+ let minor = pieces. next ( ) . and_then ( |x| x . parse ( ) . ok ( ) ) . unwrap_or ( 0 ) ;
270
+ let patch = pieces. next ( ) . and_then ( |x| x . parse ( ) . ok ( ) ) . unwrap_or ( 0 ) ;
277
271
278
- Some ( ( major, minor, patch) )
272
+ Some ( major * 10000 + minor * 100 + patch)
279
273
}
280
274
281
275
fn set_cfg ( cfg : & str ) {
0 commit comments