Initialize defines in HXProject.
This way, XML and HXP projects will use the same logic for `targetType`, among other things.
This commit is contained in:
@@ -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<String, Dynamic> = null)
|
||||
{
|
||||
super();
|
||||
|
||||
initialize();
|
||||
initializeStatics();
|
||||
|
||||
command = _command;
|
||||
config = new ConfigData();
|
||||
@@ -162,13 +162,17 @@ class HXProject extends Script
|
||||
windows = [window];
|
||||
assets = new Array<Asset>();
|
||||
|
||||
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<String, String>();
|
||||
this.defines = new Map<String, String>();
|
||||
}
|
||||
|
||||
dependencies = new Array<Dependency>();
|
||||
@@ -198,6 +202,8 @@ class HXProject extends Script
|
||||
samplePaths = new Array<String>();
|
||||
splashScreens = new Array<SplashScreen>();
|
||||
targetHandlers = new Map<String, String>();
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -27,12 +27,7 @@ class ProjectXMLParser extends HXProject
|
||||
|
||||
public function new(path:String = "", defines:Map<String, Dynamic> = null, includePaths:Array<String> = 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<String>();
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user