@@ -2166,6 +2166,53 @@ class BuildTool
21662166 }
21672167 }
21682168
2169+ function getBestAppleSdkVersion (defines : Hash <String >, platform : String , defineName : String )
2170+ {
2171+ var dev_path = ' ${defines .get (" DEVELOPER_DIR" )}/Platforms/ ${platform }.platform/Developer/SDKs/' ;
2172+ if (FileSystem .exists (dev_path ))
2173+ {
2174+ var best = " 0.0" ;
2175+ var files = FileSystem .readDirectory (dev_path );
2176+ var extract_version = new EReg (' ^ ${platform }(.*).sdk$' , " " );
2177+ for (file in files )
2178+ {
2179+ if (extract_version .match (file ))
2180+ {
2181+ var ver = extract_version .matched (1 );
2182+ var split_ver = ver .split (" ." );
2183+ var major_ver = Std .parseFloat (split_ver [0 ]);
2184+ var minor_ver = Std .parseFloat (split_ver [1 ]);
2185+ if (Math .isNaN (major_ver ) || Math .isNaN (minor_ver ))
2186+ {
2187+ // if version is the wrong format, skip it
2188+ continue ;
2189+ }
2190+ var split_best = best .split (" ." );
2191+ var major_best = Std .parseFloat (split_best [0 ]);
2192+ var minor_best = Std .parseFloat (split_best [1 ]);
2193+ if (Math .isNaN (major_best ) || Math .isNaN (minor_best ))
2194+ {
2195+ // shouldn't happen, but just to be safe
2196+ best = ver ;
2197+ }
2198+ else if (major_ver > major_best )
2199+ {
2200+ // prefer higher major version
2201+ best = ver ;
2202+ }
2203+ else if (major_ver == major_best && minor_ver > minor_best )
2204+ {
2205+ // if major versions are equal, prefer higher minor version
2206+ best = ver ;
2207+ }
2208+ }
2209+ }
2210+ if (best != " 0.0" )
2211+ defines .set (defineName , best );
2212+ else
2213+ Log .v (' Could not find ${defineName }!' );
2214+ }
2215+ }
21692216
21702217
21712218 function setupAppleDirectories (defines : Hash <String >)
@@ -2185,118 +2232,22 @@ class BuildTool
21852232
21862233 if (defines .exists (" iphone" ) && ! defines .exists (" IPHONE_VER" ))
21872234 {
2188- var dev_path = defines .get (" DEVELOPER_DIR" ) + " /Platforms/iPhoneOS.platform/Developer/SDKs/" ;
2189- if (FileSystem .exists (dev_path ))
2190- {
2191- var best = " 0.0" ;
2192- var files = FileSystem .readDirectory (dev_path );
2193- var extract_version = ~/ ^ iPhoneOS(. * ). sdk$ / ;
2194- for (file in files )
2195- {
2196- if (extract_version .match (file ))
2197- {
2198- var ver = extract_version .matched (1 );
2199- if (Std .parseFloat (ver )> Std .parseFloat (best ))
2200- best = ver ;
2201- }
2202- }
2203- if (best != " 0.0" )
2204- defines .set (" IPHONE_VER" ,best );
2205- }
2235+ getBestAppleSdkVersion (defines , " iPhoneOS" , " IPHONE_VER" );
22062236 }
22072237
22082238 if (defines .exists (" appletv" ) && ! defines .exists (" TVOS_VER" ))
22092239 {
2210- var dev_path = defines .get (" DEVELOPER_DIR" ) + " /Platforms/AppleTVOS.platform/Developer/SDKs/" ;
2211- if (FileSystem .exists (dev_path ))
2212- {
2213- var best = " 0.0" ;
2214- var files = FileSystem .readDirectory (dev_path );
2215- var extract_version = ~/ ^ AppleTVOS(. * ). sdk$ / ;
2216- for (file in files )
2217- {
2218- if (extract_version .match (file ))
2219- {
2220- var ver = extract_version .matched (1 );
2221- if (Std .parseFloat (ver )> Std .parseFloat (best ))
2222- best = ver ;
2223- }
2224- }
2225- if (best != " 0.0" )
2226- defines .set (" TVOS_VER" ,best );
2227- }
2240+ getBestAppleSdkVersion (defines , " AppleTVOS" , " TVOS_VER" );
22282241 }
22292242
2230-
22312243 if (defines .exists (" applewatch" ) && ! defines .exists (" WATCHOS_VER" ))
22322244 {
2233- var dev_path = defines .get (" DEVELOPER_DIR" ) + " /Platforms/WatchOS.platform/Developer/SDKs/" ;
2234- if (FileSystem .exists (dev_path ))
2235- {
2236- var best = " 0.0" ;
2237- var files = FileSystem .readDirectory (dev_path );
2238- var extract_version = ~/ ^ WatchOS(. * ). sdk$ / ;
2239- for (file in files )
2240- {
2241- if (extract_version .match (file ))
2242- {
2243- var ver = extract_version .matched (1 );
2244- if (Std .parseFloat (ver )> Std .parseFloat (best ))
2245- best = ver ;
2246- }
2247- }
2248- if (best != " 0.0" )
2249- defines .set (" WATCHOS_VER" ,best );
2250- }
2245+ getBestAppleSdkVersion (defines , " WatchOS" , " WATCHOS_VER" );
22512246 }
22522247
2253-
22542248 if (defines .exists (" macos" ) && ! defines .exists (" MACOSX_VER" ))
22552249 {
2256- var dev_path = defines .get (" DEVELOPER_DIR" ) + " /Platforms/MacOSX.platform/Developer/SDKs/" ;
2257- if (FileSystem .exists (dev_path ))
2258- {
2259- var best = " 0.0" ;
2260- var files = FileSystem .readDirectory (dev_path );
2261- var extract_version = ~/ ^ MacOSX(. * ). sdk$ / ;
2262- for (file in files )
2263- {
2264- if (extract_version .match (file ))
2265- {
2266- var ver = extract_version .matched (1 );
2267- var split_ver = ver .split (" ." );
2268- var major_ver = Std .parseFloat (split_ver [0 ]);
2269- var minor_ver = Std .parseFloat (split_ver [1 ]);
2270- if (Math .isNaN (major_ver ) || Math .isNaN (minor_ver ))
2271- {
2272- // if version is the wrong format, skip it
2273- continue ;
2274- }
2275- var split_best = best .split (" ." );
2276- var major_best = Std .parseFloat (split_best [0 ]);
2277- var minor_best = Std .parseFloat (split_best [1 ]);
2278- if (Math .isNaN (major_best ) || Math .isNaN (minor_best ))
2279- {
2280- // shouldn't happen, but just to be safe
2281- best = ver ;
2282- }
2283- else if (major_ver > major_best )
2284- {
2285- // prefer higher major version
2286- best = ver ;
2287- }
2288- else if (major_ver == major_best && minor_ver > minor_best )
2289- {
2290- // if major versions are equal, prefer higher minor version
2291- best = ver ;
2292- }
2293- }
2294- }
2295- if (best != " 0.0" )
2296- defines .set (" MACOSX_VER" ,best );
2297- else
2298- Log .v (" Could not find MACOSX_VER!" );
2299- }
2250+ getBestAppleSdkVersion (defines , " MacOSX" , " MACOSX_VER" );
23002251 }
23012252
23022253 if (! FileSystem .exists (defines .get (" DEVELOPER_DIR" ) + " /Platforms/MacOSX.platform/Developer/SDKs/" ))
0 commit comments