@@ -70,14 +70,8 @@ fn main() {
7070 Some ( _) | None => set_cfg ( "freebsd11" ) ,
7171 }
7272
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" ) ,
8175 // Non-Emscripten or version < 3.1.42.
8276 Some ( _) | None => ( ) ,
8377 }
@@ -251,7 +245,7 @@ fn which_freebsd() -> Option<i32> {
251245 }
252246}
253247
254- fn emcc_version ( ) -> Option < ( u32 , u32 , u32 ) > {
248+ fn emcc_version_code ( ) -> Option < u64 > {
255249 let output = std:: process:: Command :: new ( "emcc" )
256250 . arg ( "-dumpversion" )
257251 . output ( )
@@ -271,11 +265,11 @@ fn emcc_version() -> Option<(u32, u32, u32)> {
271265 let version = stdout. unwrap ( ) ;
272266 let mut pieces = version. trim ( ) . split ( '.' ) ;
273267
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 ) ;
277271
278- Some ( ( major, minor, patch) )
272+ Some ( major * 10000 + minor * 100 + patch)
279273}
280274
281275fn set_cfg ( cfg : & str ) {
0 commit comments