Update architecture support for iOS, default now to ARMV7 as well as ARM64

This commit is contained in:
Joshua Granick
2014-12-05 17:24:23 -08:00
parent b8075fc9fe
commit d53ec1efd7
5 changed files with 27 additions and 51 deletions

View File

@@ -141,56 +141,16 @@ class IOSPlatform extends PlatformTarget {
}
/*var deployment = Std.parseFloat (iosDeployment);
var binaries = iosBinaries;
var devices = iosDevices;
if (binaries != "fat" && binaries != "armv7" && binaries != "armv6") {
InstallerBase.error ("iOS binaries must be one of: \"fat\", \"armv6\", \"armv7\"");
}
if (devices != "iphone" && devices != "ipad" && devices != "universal") {
InstallerBase.error ("iOS devices must be one of: \"universal\", \"iphone\", \"ipad\"");
}
var iphone = (devices == "universal" || devices == "iphone");
var ipad = (devices == "universal" || devices == "ipad");
armv6 = ((iphone && deployment < 5.0 && Std.parseInt (defines.get ("IPHONE_VER")) < 6) || binaries == "armv7");
armv7 = (binaries != "armv6" || !armv6 || ipad);
var valid_archs = new Array <String> ();
if (armv6) {
valid_archs.push("armv6");
}
if (armv7) {
valid_archs.push("armv7");
}
if (iosCompiler == "llvm" || iosCompiler == "clang") {
context.OBJC_ARC = true;
}*/
var valid_archs = new Array <String> ();
var armv6 = false;
var armv7 = false;
var armv7s = false;
var arm64 = false;
var architectures = project.architectures;
if (architectures == null || architectures.length == 0) {
architectures = [ Architecture.ARMV7 ];
architectures = [ Architecture.ARMV7, Architecture.ARM64 ];
}
@@ -210,6 +170,8 @@ class IOSPlatform extends PlatformTarget {
case ARMV6: valid_archs.push ("armv6"); armv6 = true;
case ARMV7: valid_archs.push ("armv7"); armv7 = true;
case ARMV7S: valid_archs.push ("armv7s"); armv7s = true;
case ARM64: valid_archs.push ("arm64"); arm64 = true;
default:
}
@@ -225,7 +187,7 @@ class IOSPlatform extends PlatformTarget {
var requiredCapabilities = [];
if (armv7 && !armv6) {
if (!armv6) {
requiredCapabilities.push( { name: "armv7", value: true } );
@@ -234,6 +196,8 @@ class IOSPlatform extends PlatformTarget {
context.REQUIRED_CAPABILITY = requiredCapabilities;
context.ARMV6 = armv6;
context.ARMV7 = armv7;
context.ARMV7S = armv7s;
context.ARM64 = arm64;
context.TARGET_DEVICES = switch (project.config.getString ("ios.device", "universal")) { case "iphone": "1"; case "ipad": "2"; default: "1,2"; }
context.DEPLOYMENT = project.config.getInt ("ios.deployment", 5);
@@ -325,14 +289,18 @@ class IOSPlatform extends PlatformTarget {
public override function rebuild ():Void {
var armv6 = (command == "rebuild" || (project.architectures.indexOf (Architecture.ARMV6) > -1 && !project.targetFlags.exists ("simulator")));
var armv6 = (project.architectures.indexOf (Architecture.ARMV6) > -1 && !project.targetFlags.exists ("simulator"));
var armv7 = (command == "rebuild" || (project.architectures.indexOf (Architecture.ARMV7) > -1 && !project.targetFlags.exists ("simulator")));
var armv7s = (project.architectures.indexOf (Architecture.ARMV7S) > -1 && !project.targetFlags.exists ("simulator"));
var arm64 = (command == "rebuild" || (project.architectures.indexOf (Architecture.ARM64) > -1 && !project.targetFlags.exists ("simulator")));
var simulator = (command == "rebuild" || project.targetFlags.exists ("simulator"));
var commands = [];
if (armv6) commands.push ([ "-Diphoneos", "-DHXCPP_CPP11" ]);
if (armv7) commands.push ([ "-Diphoneos", "-DHXCPP_CPP11", "-DHXCPP_ARMV7" ]);
if (armv7s) commands.push ([ "-Diphoneos", "-DHXCPP_CPP11", "-DHXCPP_ARMV7S" ]);
if (arm64) commands.push ([ "-Diphoneos", "-DHXCPP_CPP11", "-DHXCPP_ARM64" ]);
if (simulator) commands.push ([ "-Diphonesim", "-DHXCPP_CPP11" ]);
CPPHelper.rebuild (project, commands);
@@ -431,9 +399,9 @@ class IOSPlatform extends PlatformTarget {
PathHelper.mkdir (projectDirectory + "/lib");
for (archID in 0...3) {
for (archID in 0...5) {
var arch = [ "armv6", "armv7", "i386" ][archID];
var arch = [ "armv6", "armv7", "armv7s", "arm64", "i386" ][archID];
if (arch == "armv6" && !context.ARMV6)
continue;
@@ -441,7 +409,13 @@ class IOSPlatform extends PlatformTarget {
if (arch == "armv7" && !context.ARMV7)
continue;
var libExt = [ ".iphoneos.a", ".iphoneos-v7.a", ".iphonesim.a" ][archID];
if (arch == "armv7s" && !context.ARMV7S)
continue;
if (arch == "arm64" && !context.ARM64)
continue;
var libExt = [ ".iphoneos.a", ".iphoneos-v7.a", ".iphoneos-v7s.a", ".iphoneos-64.a", ".iphonesim.a" ][archID];
PathHelper.mkdir (projectDirectory + "/lib/" + arch);
PathHelper.mkdir (projectDirectory + "/lib/" + arch + "-debug");