Skip to content

Commit d6b7e76

Browse files
committed
[tools] Unify apple sdk detection
1 parent bfcfb9b commit d6b7e76

1 file changed

Lines changed: 51 additions & 100 deletions

File tree

tools/hxcpp/BuildTool.hx

Lines changed: 51 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)