Skip to content

Commit

Permalink
Initialize defines in HXProject.
Browse files Browse the repository at this point in the history
This way, XML and HXP projects will use the same logic for `targetType`, among other things.
  • Loading branch information
player-03 committed Jan 12, 2024
1 parent 24bc9b2 commit 6725825
Show file tree
Hide file tree
Showing 2 changed files with 174 additions and 175 deletions.
181 changes: 173 additions & 8 deletions src/lime/tools/HXProject.hx
Expand Up @@ -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, []);
Expand All @@ -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();
Expand Down Expand Up @@ -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>();
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
{
Expand Down

0 comments on commit 6725825

Please sign in to comment.