From 6725825469b8cb3113090daeb837f7a72bdc6d9e Mon Sep 17 00:00:00 2001 From: Joseph Cloutier Date: Fri, 12 Jan 2024 14:49:42 -0500 Subject: [PATCH] Initialize defines in `HXProject`. This way, XML and HXP projects will use the same logic for `targetType`, among other things. --- src/lime/tools/HXProject.hx | 181 +++++++++++++++++++++++++++-- src/lime/tools/ProjectXMLParser.hx | 168 +------------------------- 2 files changed, 174 insertions(+), 175 deletions(-) diff --git a/src/lime/tools/HXProject.hx b/src/lime/tools/HXProject.hx index 9c1d38084..9c814bdef 100644 --- a/src/lime/tools/HXProject.hx +++ b/src/lime/tools/HXProject.hx @@ -102,7 +102,7 @@ class HXProject extends Script Haxelib.debug = inputData.haxelibDebug; - initialize(); + initializeStatics(); var classRef = Type.resolveClass(inputData.name); var instance = Type.createInstance(classRef, []); @@ -114,11 +114,11 @@ class HXProject extends Script File.saveContent(outputFile, serializer.toString()); } - public function new() + public function new(defines:Map = null) { super(); - initialize(); + initializeStatics(); command = _command; config = new ConfigData(); @@ -162,13 +162,17 @@ class HXProject extends Script windows = [window]; assets = new Array(); - if (_userDefines != null) + if (defines != null) { - defines = MapTools.copy(_userDefines); + this.defines = MapTools.copy(defines); + } + else if (_userDefines != null) + { + this.defines = MapTools.copy(_userDefines); } else { - defines = new Map(); + this.defines = new Map(); } dependencies = new Array(); @@ -198,6 +202,8 @@ class HXProject extends Script samplePaths = new Array(); splashScreens = new Array(); targetHandlers = new Map(); + + initializeDefines(); } public function clone():HXProject @@ -661,9 +667,168 @@ class HXProject extends Script @:privateAccess projectXML.parseXML(new Access(Xml.parse(xml).firstElement()), ""); merge(projectXML); } - // #end - private static function initialize():Void + + private function initializeDefines():Void + { + switch (platformType) + { + case MOBILE: + defines.set("platformType", "mobile"); + defines.set("mobile", "1"); + + case DESKTOP: + defines.set("platformType", "desktop"); + defines.set("desktop", "1"); + + case WEB: + defines.set("platformType", "web"); + defines.set("web", "1"); + + case CONSOLE: + defines.set("platformType", "console"); + defines.set("console", "1"); + } + + if (targetFlags.exists("neko")) + { + defines.set("targetType", "neko"); + defines.set("native", "1"); + defines.set("neko", "1"); + } + else if (targetFlags.exists("hl")) + { + defines.set("targetType", "hl"); + defines.set("native", "1"); + defines.set("hl", "1"); + } + else if (targetFlags.exists("java")) + { + defines.set("targetType", "java"); + defines.set("native", "1"); + defines.set("java", "1"); + } + else if (targetFlags.exists("nodejs")) + { + defines.set("targetType", "nodejs"); + defines.set("native", "1"); + defines.set("nodejs", "1"); + } + else if (targetFlags.exists("cs")) + { + defines.set("targetType", "cs"); + defines.set("native", "1"); + defines.set("cs", "1"); + } + else if (target == Platform.FIREFOX) + { + defines.set("targetType", "js"); + defines.set("html5", "1"); + } + else if (target == Platform.AIR) + { + defines.set("targetType", "swf"); + defines.set("flash", "1"); + if (targetFlags.exists("ios")) defines.set("ios", "1"); + if (targetFlags.exists("android")) defines.set("android", "1"); + } + else if (target == Platform.WINDOWS && (targetFlags.exists("uwp") || targetFlags.exists("winjs"))) + { + targetFlags.set("uwp", ""); + targetFlags.set("winjs", ""); + + defines.set("targetType", "js"); + defines.set("html5", "1"); + defines.set("uwp", "1"); + defines.set("winjs", "1"); + } + else if (platformType == DESKTOP && target != cast System.hostPlatform) + { + defines.set("native", "1"); + + if (target == Platform.WINDOWS && targetFlags.exists("mingw")) + { + defines.set("targetType", "cpp"); + defines.set("cpp", "1"); + defines.set("mingw", "1"); + } + else + { + defines.set("targetType", "neko"); + defines.set("neko", "1"); + } + } + else if (target == Platform.WEB_ASSEMBLY) + { + defines.set("webassembly", "1"); + defines.set("wasm", "1"); + defines.set("emscripten", "1"); + defines.set("targetType", "cpp"); + defines.set("native", "1"); + defines.set("cpp", "1"); + } + else if (targetFlags.exists("cpp") + || ((platformType != PlatformType.WEB) && !targetFlags.exists("html5"))) + { + defines.set("targetType", "cpp"); + defines.set("native", "1"); + defines.set("cpp", "1"); + } + else if (target == Platform.FLASH) + { + defines.set("targetType", "swf"); + } + + if (debug) + { + defines.set("buildType", "debug"); + defines.set("debug", "1"); + } + else if (targetFlags.exists("final")) + { + defines.set("buildType", "final"); + defines.set("final", "1"); + } + else + { + defines.set("buildType", "release"); + defines.set("release", "1"); + } + + if (targetFlags.exists("static")) + { + defines.set("static_link", "1"); + } + + if (defines.exists("SWF_PLAYER")) + { + environment.set("SWF_PLAYER", defines.get("SWF_PLAYER")); + } + + defines.set(Std.string(target).toLowerCase(), "1"); + defines.set("target", Std.string(target).toLowerCase()); + defines.set("platform", defines.get("target")); + + switch (System.hostPlatform) + { + case WINDOWS: + defines.set("host", "windows"); + case MAC: + defines.set("host", "mac"); + case LINUX: + defines.set("host", "linux"); + default: + defines.set("host", "unknown"); + } + + #if lime + defines.set("lime-tools", "1"); + #end + + defines.set("hxp", "1"); // TODO: Version? + } + + private static function initializeStatics():Void { if (!initialized) { diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index c73514f8a..47165293b 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -27,12 +27,7 @@ class ProjectXMLParser extends HXProject public function new(path:String = "", defines:Map = null, includePaths:Array = null, useExtensionPath:Bool = false) { - super(); - - if (defines != null) - { - this.defines = MapTools.copy(defines); - } + super(defines); if (includePaths != null) { @@ -43,173 +38,12 @@ class ProjectXMLParser extends HXProject this.includePaths = new Array(); } - initialize(); - if (path != "") { process(path, useExtensionPath); } } - private function initialize():Void - { - switch (platformType) - { - case MOBILE: - defines.set("platformType", "mobile"); - defines.set("mobile", "1"); - - case DESKTOP: - defines.set("platformType", "desktop"); - defines.set("desktop", "1"); - - case WEB: - defines.set("platformType", "web"); - defines.set("web", "1"); - - case CONSOLE: - defines.set("platformType", "console"); - defines.set("console", "1"); - } - - if (targetFlags.exists("neko")) - { - defines.set("targetType", "neko"); - defines.set("native", "1"); - defines.set("neko", "1"); - } - else if (targetFlags.exists("hl")) - { - defines.set("targetType", "hl"); - defines.set("native", "1"); - defines.set("hl", "1"); - } - else if (targetFlags.exists("java")) - { - defines.set("targetType", "java"); - defines.set("native", "1"); - defines.set("java", "1"); - } - else if (targetFlags.exists("nodejs")) - { - defines.set("targetType", "nodejs"); - defines.set("native", "1"); - defines.set("nodejs", "1"); - } - else if (targetFlags.exists("cs")) - { - defines.set("targetType", "cs"); - defines.set("native", "1"); - defines.set("cs", "1"); - } - else if (target == Platform.FIREFOX) - { - defines.set("targetType", "js"); - defines.set("html5", "1"); - } - else if (target == Platform.AIR) - { - defines.set("targetType", "swf"); - defines.set("flash", "1"); - if (targetFlags.exists("ios")) defines.set("ios", "1"); - if (targetFlags.exists("android")) defines.set("android", "1"); - } - else if (target == Platform.WINDOWS && (targetFlags.exists("uwp") || targetFlags.exists("winjs"))) - { - targetFlags.set("uwp", ""); - targetFlags.set("winjs", ""); - - defines.set("targetType", "js"); - defines.set("html5", "1"); - defines.set("uwp", "1"); - defines.set("winjs", "1"); - } - else if (platformType == DESKTOP && target != cast System.hostPlatform) - { - defines.set("native", "1"); - - if (target == Platform.WINDOWS && targetFlags.exists("mingw")) - { - defines.set("targetType", "cpp"); - defines.set("cpp", "1"); - defines.set("mingw", "1"); - } - else - { - defines.set("targetType", "neko"); - defines.set("neko", "1"); - } - } - else if (target == Platform.WEB_ASSEMBLY) - { - defines.set("webassembly", "1"); - defines.set("wasm", "1"); - defines.set("emscripten", "1"); - defines.set("targetType", "cpp"); - defines.set("native", "1"); - defines.set("cpp", "1"); - } - else if (targetFlags.exists("cpp") - || ((platformType != PlatformType.WEB) && !targetFlags.exists("html5"))) - { - defines.set("targetType", "cpp"); - defines.set("native", "1"); - defines.set("cpp", "1"); - } - else if (target == Platform.FLASH) - { - defines.set("targetType", "swf"); - } - - if (debug) - { - defines.set("buildType", "debug"); - defines.set("debug", "1"); - } - else if (targetFlags.exists("final")) - { - defines.set("buildType", "final"); - defines.set("final", "1"); - } - else - { - defines.set("buildType", "release"); - defines.set("release", "1"); - } - - if (targetFlags.exists("static")) - { - defines.set("static_link", "1"); - } - - if (defines.exists("SWF_PLAYER")) - { - environment.set("SWF_PLAYER", defines.get("SWF_PLAYER")); - } - - defines.set(Std.string(target).toLowerCase(), "1"); - defines.set("target", Std.string(target).toLowerCase()); - defines.set("platform", defines.get("target")); - - switch (System.hostPlatform) - { - case WINDOWS: - defines.set("host", "windows"); - case MAC: - defines.set("host", "mac"); - case LINUX: - defines.set("host", "linux"); - default: - defines.set("host", "unknown"); - } - - #if lime - defines.set("lime-tools", "1"); - #end - - defines.set("hxp", "1"); // TODO: Version? - } - private function isValidElement(element:Access, section:String):Bool { if (element.x.get("if") != null)