From 8bb48383b1cc049914029b36fed311e86bb781b8 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Mon, 13 Oct 2014 05:07:57 -0700 Subject: [PATCH] Fix iOS linker flags --- tools/platforms/IOSPlatform.hx | 2 +- tools/project/ConfigData.hx | 57 ++++++++++++++++++++++++++++++- tools/project/ProjectXMLParser.hx | 17 +++++++++ 3 files changed, 74 insertions(+), 2 deletions(-) diff --git a/tools/platforms/IOSPlatform.hx b/tools/platforms/IOSPlatform.hx index b4b49e924..e075c4a88 100644 --- a/tools/platforms/IOSPlatform.hx +++ b/tools/platforms/IOSPlatform.hx @@ -118,7 +118,7 @@ class IOSPlatform extends PlatformTarget { var name = Path.withoutDirectory (Path.withoutExtension (dependency.path)); - // TODO: enable again + project.config.push ("ios.linker-flags", "-force_load $SRCROOT/$PRODUCT_NAME/lib/$ARCHS/" + Path.withoutDirectory (dependency.path)); //project.config.ios.linkerFlags.push ("-force_load $SRCROOT/$PRODUCT_NAME/lib/$ARCHS/" + Path.withoutDirectory (dependency.path)); if (StringTools.startsWith (name, "lib")) { diff --git a/tools/project/ConfigData.hx b/tools/project/ConfigData.hx index 27165a376..3f9c0a545 100644 --- a/tools/project/ConfigData.hx +++ b/tools/project/ConfigData.hx @@ -384,7 +384,7 @@ abstract ConfigData(Dynamic) to Dynamic from Dynamic { if (!hasChildren && !hasAttributes) { - parseValue (child, bucket); + parseValue (child, childBucket); } @@ -405,6 +405,60 @@ abstract ConfigData(Dynamic) to Dynamic from Dynamic { } + public function push (id:String, value:Dynamic):Void { + + var tree = id.split ('.'); + + if (tree.length <= 1) { + + if (!Reflect.hasField (this, id + "___array")) { + + Reflect.setField (this, id + "___array", Reflect.hasField (this, id) ? [ ObjectHelper.deepCopy (Reflect.field (this, id)) ] : []); + + } + + var array:Array = Reflect.field (this, id + "___array"); + array.push (value); + return; + + } + + var current = this; + var field = tree.pop (); + + for (leaf in tree) { + + if (!Reflect.hasField (current, leaf)) { + + Reflect.setField (current, leaf, {}); + current = Reflect.field (current, leaf); + + } else { + + current = Reflect.field (current, leaf); + + if (current == null) { + + return; + + } + + } + + } + + if (!Reflect.hasField (current, field + "___array")) { + + Reflect.setField (current, field + "___array", Reflect.hasField (current, field) ? [ ObjectHelper.deepCopy (Reflect.field (current, field)) ] : []); + + } + + var array:Array = Reflect.field (current, field + "___array"); + array.push (value); + + } + + public function set (id:String, value:Dynamic):Void { var tree = id.split ('.'); @@ -412,6 +466,7 @@ abstract ConfigData(Dynamic) to Dynamic from Dynamic { if (tree.length <= 1) { Reflect.setField (this, id, value); + return; } diff --git a/tools/project/ProjectXMLParser.hx b/tools/project/ProjectXMLParser.hx index 15082d5b5..eb1c82650 100644 --- a/tools/project/ProjectXMLParser.hx +++ b/tools/project/ProjectXMLParser.hx @@ -1365,10 +1365,26 @@ class ProjectXMLParser extends HXProject { case "extension": + var extensions = config.getArrayString ("android.extensions"); + + if (extensions == null || extensions.indexOf (value) == -1) { + + config.push ("android.extensions", value); + + } + //ArrayHelper.addUnique (config.android.extensions, value); case "permission": + var permissions = config.getArrayString ("android.permissions"); + + if (permissions == null || permissions.indexOf (value) == -1) { + + config.push ("android.permissions", value); + + } + //ArrayHelper.addUnique (config.android.permissions, value); default: @@ -1469,6 +1485,7 @@ class ProjectXMLParser extends HXProject { if (element.has.resolve ("linker-flags")) { + config.push ("ios.linker-flags", substitute (element.att.resolve ("linker-flags"))); //config.ios.linkerFlags.push (substitute (element.att.resolve ("linker-flags"))); }