From b46c781b4cac1c345c9b79963ec3131dc9fc0efa Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Wed, 19 Nov 2014 14:42:34 -0800 Subject: [PATCH] Initial improvements to 'rebuild' command and '-rebuild' flag, walking through actual project dependencies --- tools/helpers/CPPHelper.hx | 33 ++++++++++++++++++++++++++- tools/platforms/AndroidPlatform.hx | 13 ++++++++--- tools/platforms/BlackBerryPlatform.hx | 11 ++++++--- tools/platforms/IOSPlatform.hx | 14 ++++++++---- tools/platforms/LinuxPlatform.hx | 2 +- tools/platforms/MacPlatform.hx | 4 ++-- tools/platforms/TizenPlatform.hx | 11 ++++++--- 7 files changed, 71 insertions(+), 17 deletions(-) diff --git a/tools/helpers/CPPHelper.hx b/tools/helpers/CPPHelper.hx index 0d5d795ab..aa68f00be 100644 --- a/tools/helpers/CPPHelper.hx +++ b/tools/helpers/CPPHelper.hx @@ -13,6 +13,9 @@ import sys.FileSystem; class CPPHelper { + private static var rebuiltLibraries = new Map (); + + public static function compile (project:HXProject, path:String, flags:Array = null, buildFile:String = "Build.xml"):Void { if (project.config.getBool ("cpp.requireBuild", true)) { @@ -117,7 +120,31 @@ class CPPHelper { public static function rebuild (project:HXProject, commands:Array>, path:String = null, buildFile:String = null):Void { var buildRelease = (!project.targetFlags.exists ("debug")); - var buildDebug = (project.targetFlags.exists ("debug") || (!project.targetFlags.exists ("release") && project.config.exists ("project.rebuild.fulldebug"))); + var buildDebug = (project.targetFlags.exists ("debug") || (!project.targetFlags.exists ("rebuild") && !project.targetFlags.exists ("release") && project.config.exists ("project.rebuild.fulldebug"))); + + for (haxelib in project.haxelibs) { + + if (!rebuiltLibraries.exists (haxelib.name)) { + + var defines = StringMapHelper.copy (project.defines); + defines.set ("rebuild", 1); + var haxelibProject = HXProject.fromHaxelib (haxelib, defines); + + if (haxelibProject == null) { + + haxelibProject = new HXProject (); + haxelibProject.config.set ("project.rebuild.path", PathHelper.combine (PathHelper.getHaxelib (haxelib), "project")); + + } + + StringMapHelper.copyKeys (project.targetFlags, haxelibProject.targetFlags); + + rebuiltLibraries.set (haxelib.name, true); + rebuild (haxelibProject, commands); + + } + + } if (project.targetFlags.exists ("clean")) { @@ -171,6 +198,8 @@ class CPPHelper { } + if (!FileSystem.exists (path)) return; + if (buildFile == null && project.config.exists ("project.rebuild.file")) { buildFile = project.config.get ("project.rebuild.file"); @@ -179,6 +208,8 @@ class CPPHelper { if (buildFile == null) buildFile = "Build.xml"; + if (!FileSystem.exists (PathHelper.combine (path, buildFile))) return; + var args = [ "run", project.config.getString ("cpp.buildLibrary", "hxcpp"), buildFile ]; if (flags != null) { diff --git a/tools/platforms/AndroidPlatform.hx b/tools/platforms/AndroidPlatform.hx index 54805b024..70ef6f292 100644 --- a/tools/platforms/AndroidPlatform.hx +++ b/tools/platforms/AndroidPlatform.hx @@ -193,10 +193,17 @@ class AndroidPlatform extends PlatformTarget { public override function rebuild ():Void { - var armv5 = [ "-Dandroid", "-DPLATFORM=android-9" ]; - var armv7 = [ "-Dandroid", "-DHXCPP_ARMV7", "-DHXCPP_ARM7", "-DPLATFORM=android-9" ]; + var armv5 = (command == "rebuild" || ArrayHelper.containsValue (project.architectures, Architecture.ARMV5) || ArrayHelper.containsValue (project.architectures, Architecture.ARMV6)); + var armv7 = (command == "rebuild" || ArrayHelper.containsValue (project.architectures, Architecture.ARMV7)); + var x86 = (command == "rebuild" || ArrayHelper.containsValue (project.architectures, Architecture.X86)); - CPPHelper.rebuild (project, [ armv5, armv7 ]); + var commands = []; + + if (armv5) commands.push ([ "-Dandroid", "-DPLATFORM=android-9" ]); + if (armv7) commands.push ([ "-Dandroid", "-DHXCPP_ARMV7", "-DHXCPP_ARM7", "-DPLATFORM=android-9" ]); + if (x86) commands.push ([ "-Dandroid", "-DHXCPP_X86", "-DPLATFORM=android-9" ]); + + CPPHelper.rebuild (project, commands); } diff --git a/tools/platforms/BlackBerryPlatform.hx b/tools/platforms/BlackBerryPlatform.hx index 9e6f449b5..b9b784c47 100644 --- a/tools/platforms/BlackBerryPlatform.hx +++ b/tools/platforms/BlackBerryPlatform.hx @@ -204,10 +204,15 @@ class BlackBerryPlatform extends PlatformTarget { public override function rebuild ():Void { - var device = [ "-Dblackberry" ]; - var simulator = [ "-Dblackberry", "-Dsimulator" ]; + var device = (command == "rebuild" || !targetFlags.exists ("simulator")); + var simulator = (command == "rebuild" || targetFlags.exists ("simulator")); - CPPHelper.rebuild (project, [ device, simulator ]); + var commands = []; + + if (device) commands.push ([ "-Dblackberry" ]); + if (simulator) commands.push ([ "-Dblackberry", "-Dsimulator" ]); + + CPPHelper.rebuild (project, commands); } diff --git a/tools/platforms/IOSPlatform.hx b/tools/platforms/IOSPlatform.hx index d5c0d6214..2910f139c 100644 --- a/tools/platforms/IOSPlatform.hx +++ b/tools/platforms/IOSPlatform.hx @@ -325,11 +325,17 @@ class IOSPlatform extends PlatformTarget { public override function rebuild ():Void { - var armv6 = [ "-Diphoneos", "-DHXCPP_CPP11" ]; - var armv7 = [ "-Diphoneos", "-DHXCPP_CPP11", "-DHXCPP_ARMV7" ]; - var simulator = [ "-Diphonesim", "-DHXCPP_CPP11" ]; + var armv6 = (command == "rebuild" || (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 simulator = (command == "rebuild" || project.targetFlags.exists ("simulator")); - CPPHelper.rebuild (project, [ armv6, armv7, simulator ]); + var commands = []; + + if (armv6) commands.push ([ "-Diphoneos", "-DHXCPP_CPP11" ]); + if (armv7) commands.push ([ "-Diphoneos", "-DHXCPP_CPP11", "-DHXCPP_ARMV7" ]); + if (simulator) commands.push ([ "-Diphonesim", "-DHXCPP_CPP11" ]); + + CPPHelper.rebuild (project, commands); } diff --git a/tools/platforms/LinuxPlatform.hx b/tools/platforms/LinuxPlatform.hx index d30f199e9..71dde3e45 100644 --- a/tools/platforms/LinuxPlatform.hx +++ b/tools/platforms/LinuxPlatform.hx @@ -249,7 +249,7 @@ class LinuxPlatform extends PlatformTarget { } - if (!targetFlags.exists ("64")) { + if (!targetFlags.exists ("64") && (command == "rebuild" || PlatformHelper.hostArchitecture == Architecture.X86)) { commands.push ([ "-Dlinux" ]); diff --git a/tools/platforms/MacPlatform.hx b/tools/platforms/MacPlatform.hx index 2d5c0ee53..7982ef5d3 100644 --- a/tools/platforms/MacPlatform.hx +++ b/tools/platforms/MacPlatform.hx @@ -200,13 +200,13 @@ class MacPlatform extends PlatformTarget { var commands = []; - if (!targetFlags.exists ("64")) { + if (!targetFlags.exists ("64") && (command == "rebuild" || PlatformHelper.hostArchitecture == Architecture.X64)) { commands.push ([ "-Dmac", "-DHXCPP_M64" ]); } - if (!targetFlags.exists ("32")) { + if (!targetFlags.exists ("32") && (command == "rebuild" || PlatformHelper.hostArchitecture == Architecture.X86)) { commands.push ([ "-Dmac" ]); diff --git a/tools/platforms/TizenPlatform.hx b/tools/platforms/TizenPlatform.hx index a8ad37049..d76e2e9ae 100644 --- a/tools/platforms/TizenPlatform.hx +++ b/tools/platforms/TizenPlatform.hx @@ -119,10 +119,15 @@ class TizenPlatform extends PlatformTarget { public override function rebuild ():Void { - var device = [ "-Dtizen" ]; - var simulator = [ "-Dtizen", "-Dsimulator" ]; + var device = (command == "rebuild" || !targetFlags.exists ("simulator")); + var simulator = (command == "rebuild" || targetFlags.exists ("simulator")); - CPPHelper.rebuild (project, [ device, simulator ]); + var commands = []; + + if (device) commands.push ([ "-Dtizen" ]); + if (simulator) commands.push ([ "-Dtizen", "-Dsimulator" ]); + + CPPHelper.rebuild (project, commands); }