diff --git a/src/haxe/io/Bytes.hx b/src/haxe/io/Bytes.hx index fe48a362d..ac2c2bb5e 100644 --- a/src/haxe/io/Bytes.hx +++ b/src/haxe/io/Bytes.hx @@ -55,7 +55,7 @@ class Bytes return untyped $sget(b, pos); #elseif flash return b[pos]; - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) return untyped b[pos]; #elseif java return untyped b[pos] & 0xFF; @@ -72,7 +72,7 @@ class Bytes untyped $sset(b, pos, v); #elseif flash b[pos] = v; - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) untyped b[pos] = v; #elseif java b[pos] = cast v; @@ -104,7 +104,7 @@ class Bytes cs.system.Array.Copy(src.b, srcpos, b, pos, len); #elseif python python.Syntax.code("self.b[{0}:{0}+{1}] = src.b[srcpos:srcpos+{1}]", pos, len); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) b.blit(pos, src.b, srcpos, len); #else var b1 = b; @@ -136,7 +136,7 @@ class Bytes pos += len & ~3; for (i in 0...len & 3) set(pos++, value); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) untyped __global__.__hxcpp_memory_memset(b, pos, len, value); #else for (i in 0...len) @@ -206,7 +206,7 @@ class Bytes return length - other.length; // #elseif cs // TODO: memcmp if unsafe flag is on - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) return b.memcmp(other.b); #else var b1 = b; @@ -232,7 +232,7 @@ class Bytes #elseif flash b.position = pos; return b.readDouble(); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) if (pos < 0 || pos + 8 > length) throw Error.OutsideBounds; return untyped __global__.__hxcpp_memory_get_double(b, pos); #else @@ -254,7 +254,7 @@ class Bytes #elseif flash b.position = pos; return b.readFloat(); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) if (pos < 0 || pos + 4 > length) throw Error.OutsideBounds; return untyped __global__.__hxcpp_memory_get_float(b, pos); #else @@ -278,7 +278,7 @@ class Bytes #elseif flash b.position = pos; b.writeDouble(v); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) if (pos < 0 || pos + 8 > length) throw Error.OutsideBounds; untyped __global__.__hxcpp_memory_set_double(b, pos, v); #else @@ -304,7 +304,7 @@ class Bytes #elseif flash b.position = pos; b.writeFloat(v); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) if (pos < 0 || pos + 4 > length) throw Error.OutsideBounds; untyped __global__.__hxcpp_memory_set_float(b, pos, v); #else @@ -398,7 +398,7 @@ class Bytes #elseif flash b.position = pos; return b.readUTFBytes(len); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) var result:String = ""; untyped __global__.__hxcpp_string_of_bytes(b, result, pos, len); return result; @@ -510,7 +510,7 @@ class Bytes var b = new flash.utils.ByteArray(); b.length = length; return new Bytes(length, b); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) var a = new BytesData(); if (length > 0) cpp.NativeArray.setSize(a, length); return new Bytes(length, a); @@ -540,7 +540,7 @@ class Bytes var b = new flash.utils.ByteArray(); b.writeUTFBytes(s); return new Bytes(b.length, b); - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) var a = new BytesData(); untyped __global__.__hxcpp_bytes_of_string(a, s); return new Bytes(a.length, a); @@ -638,7 +638,7 @@ class Bytes return untyped __dollar__sget(b, pos); #elseif flash return b[pos]; - #elseif (cpp || emscripten) + #elseif (cpp || webassembly) return untyped b.unsafeGet(pos); #elseif java return untyped b[pos] & 0xFF; diff --git a/src/lime/_internal/backend/native/NativeApplication.hx b/src/lime/_internal/backend/native/NativeApplication.hx index 1e3d6bf68..c27e5d47b 100644 --- a/src/lime/_internal/backend/native/NativeApplication.hx +++ b/src/lime/_internal/backend/native/NativeApplication.hx @@ -145,7 +145,7 @@ class NativeApplication #elseif lime_cffi var result = NativeCFFI.lime_application_exec(handle); - #if (!emscripten && !ios && !nodejs) + #if (!webassembly && !ios && !nodejs) parent.onExit.dispatch(result); #end diff --git a/src/lime/_internal/backend/native/NativeAudioSource.hx b/src/lime/_internal/backend/native/NativeAudioSource.hx index d44f6a26a..37c04fb79 100644 --- a/src/lime/_internal/backend/native/NativeAudioSource.hx +++ b/src/lime/_internal/backend/native/NativeAudioSource.hx @@ -562,7 +562,7 @@ class NativeAudioSource { if (handle != null) { - #if !emscripten + #if !webassembly var value = AL.getSource3f(handle, AL.POSITION); position.x = value[0]; position.y = value[1]; diff --git a/src/lime/_internal/macros/DefineMacro.hx b/src/lime/_internal/macros/DefineMacro.hx index 3c460f852..3359583b8 100644 --- a/src/lime/_internal/macros/DefineMacro.hx +++ b/src/lime/_internal/macros/DefineMacro.hx @@ -49,8 +49,11 @@ class DefineMacro Compiler.define("mobile"); if (cffi) Compiler.define("lime-opengles"); } - else if (Context.defined("emscripten")) + else if (Context.defined("webassembly") || Context.defined("wasm") || Context.defined("emscripten")) { + Compiler.define("webassembly"); + Compiler.define("wasm"); + Compiler.define("emscripten"); Compiler.define("web"); if (cffi) Compiler.define("lime-opengles"); } diff --git a/src/lime/system/CFFI.hx b/src/lime/system/CFFI.hx index 08b42b0e5..fed0f62d4 100644 --- a/src/lime/system/CFFI.hx +++ b/src/lime/system/CFFI.hx @@ -90,7 +90,7 @@ class CFFI } else { - #if (cpp && (iphone || emscripten || android || static_link || tvos)) + #if (cpp && (iphone || webassembly || android || static_link || tvos)) return cpp.Lib.load(library, method, args); #end diff --git a/src/lime/system/ThreadPool.hx b/src/lime/system/ThreadPool.hx index 83d824b55..61ad1027b 100644 --- a/src/lime/system/ThreadPool.hx +++ b/src/lime/system/ThreadPool.hx @@ -7,7 +7,7 @@ import lime.app.Event; #if haxe4 import sys.thread.Deque; import sys.thread.Thread; -#elseif (cpp || emscripten) +#elseif (cpp || webassembly) import cpp.vm.Deque; import cpp.vm.Thread; #elseif neko @@ -30,7 +30,7 @@ class ThreadPool public var onProgress = new EventVoid>(); public var onRun = new EventVoid>(); - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) @:noCompletion private var __synchronous:Bool; @:noCompletion private var __workCompleted:Int; @:noCompletion private var __workIncoming = new Deque(); @@ -45,12 +45,12 @@ class ThreadPool currentThreads = 0; - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) __workQueued = 0; __workCompleted = 0; #end - #if (emscripten || force_synchronous) + #if (webassembly || force_synchronous) __synchronous = true; #end } @@ -67,7 +67,7 @@ class ThreadPool // } public function queue(state:Dynamic = null):Void { - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) // TODO: Better way to handle this? if (Application.current != null && Application.current.window != null && !__synchronous) @@ -98,7 +98,7 @@ class ThreadPool public function sendComplete(state:Dynamic = null):Void { - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(COMPLETE, state)); @@ -111,7 +111,7 @@ class ThreadPool public function sendError(state:Dynamic = null):Void { - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(ERROR, state)); @@ -124,7 +124,7 @@ class ThreadPool public function sendProgress(state:Dynamic = null):Void { - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(PROGRESS, state)); @@ -137,7 +137,7 @@ class ThreadPool @:noCompletion private function runWork(state:Dynamic = null):Void { - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) if (!__synchronous) { __workResult.add(new ThreadPoolMessage(WORK, state)); @@ -150,7 +150,7 @@ class ThreadPool doWork.dispatch(state); } - #if (cpp || neko || emscripten) + #if (cpp || neko || webassembly) @:noCompletion private function __doWork():Void { while (true) diff --git a/src/lime/tools/AssetHelper.hx b/src/lime/tools/AssetHelper.hx index ec1d1ef31..2f9ef857c 100644 --- a/src/lime/tools/AssetHelper.hx +++ b/src/lime/tools/AssetHelper.hx @@ -264,7 +264,7 @@ class AssetHelper } else { - if (project.target == EMSCRIPTEN + if (project.target == WEB_ASSEMBLY && (asset.embed != false || (asset.library != null && libraries.exists(asset.library) && libraries[asset.library].preload))) { diff --git a/src/lime/tools/HXProject.hx b/src/lime/tools/HXProject.hx index 6d9e55ba9..34e1265e6 100644 --- a/src/lime/tools/HXProject.hx +++ b/src/lime/tools/HXProject.hx @@ -135,7 +135,7 @@ class HXProject extends Script case AIR if (targetFlags.exists("ios") || targetFlags.exists("android")): PlatformType.MOBILE; - case FLASH, HTML5, FIREFOX, EMSCRIPTEN: + case FLASH, HTML5, FIREFOX, WEB_ASSEMBLY: PlatformType.WEB; case ANDROID, BLACKBERRY, IOS, TIZEN, WEBOS, TVOS: diff --git a/src/lime/tools/Platform.hx b/src/lime/tools/Platform.hx index 0eb76bfad..8036db22f 100644 --- a/src/lime/tools/Platform.hx +++ b/src/lime/tools/Platform.hx @@ -16,6 +16,7 @@ package lime.tools; var PS4 = "ps4"; var TIZEN = "tizen"; var VITA = "vita"; + var WEB_ASSEMBLY = "webassembly"; var WINDOWS = "windows"; var WEBOS = "webos"; var WIIU = "wiiu"; diff --git a/src/lime/tools/ProjectXMLParser.hx b/src/lime/tools/ProjectXMLParser.hx index aa79825e6..43ea126db 100644 --- a/src/lime/tools/ProjectXMLParser.hx +++ b/src/lime/tools/ProjectXMLParser.hx @@ -142,7 +142,7 @@ class ProjectXMLParser extends HXProject } else if (targetFlags.exists("cpp") || ((platformType != PlatformType.WEB) && !targetFlags.exists("html5")) - || target == Platform.EMSCRIPTEN) + || target == Platform.WEB_ASSEMBLY) { defines.set("targetType", "cpp"); defines.set("native", "1"); diff --git a/templates/emscripten/cpp/Main.cpp b/templates/emscripten/cpp/Main.cpp deleted file mode 100644 index 8e76d1f18..000000000 --- a/templates/emscripten/cpp/Main.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Main.mm - * - * Boot code for lime. - * - */ - -#include - -extern "C" const char *hxRunLibrary (); -extern "C" void hxcpp_set_top_of_stack (); - -extern "C" int zlib_register_prims (); -extern "C" int lime_register_prims (); -::foreach ndlls::::if (registerStatics)::extern "C" int ::nameSafe::_register_prims ();::end:: -::end:: - - -extern "C" int main (int argc, char *argv[]) { - - hxcpp_set_top_of_stack (); - - zlib_register_prims (); - lime_register_prims (); - ::foreach ndlls::::if (registerStatics)::::nameSafe::_register_prims ();::end:: - ::end:: - - const char *err = NULL; - err = hxRunLibrary (); - - if (err) { - - printf (" Error %s\n", err); - return -1; - - } - - return 0; - -} \ No newline at end of file diff --git a/templates/haxe/ApplicationMain.hx b/templates/haxe/ApplicationMain.hx index 2221f3719..422fbcb03 100644 --- a/templates/haxe/ApplicationMain.hx +++ b/templates/haxe/ApplicationMain.hx @@ -125,7 +125,7 @@ import ::APP_MAIN::; var result = app.exec(); - #if (sys && !ios && !nodejs && !emscripten) + #if (sys && !ios && !nodejs && !webassembly) lime.system.System.exit(result); #end diff --git a/templates/haxe/ManifestResources.hx b/templates/haxe/ManifestResources.hx index cfaede1fb..0aaab0e4b 100644 --- a/templates/haxe/ManifestResources.hx +++ b/templates/haxe/ManifestResources.hx @@ -55,7 +55,7 @@ import sys.FileSystem; if (rootPath == null) { - #if (ios || tvos || emscripten) + #if (ios || tvos || webassembly) rootPath = "assets/"; #elseif android rootPath = ""; diff --git a/templates/emscripten/hxml/debug.hxml b/templates/webassembly/hxml/debug.hxml similarity index 85% rename from templates/emscripten/hxml/debug.hxml rename to templates/webassembly/hxml/debug.hxml index e2efde5e1..2d9034044 100644 --- a/templates/emscripten/hxml/debug.hxml +++ b/templates/webassembly/hxml/debug.hxml @@ -2,6 +2,8 @@ -cp ::OUTPUT_DIR::/haxe -cpp ::CPP_DIR:: --macro keep("::APP_MAIN::") +-D webassembly +-D wasm -D emscripten -D webgl -debug diff --git a/templates/emscripten/hxml/final.hxml b/templates/webassembly/hxml/final.hxml similarity index 85% rename from templates/emscripten/hxml/final.hxml rename to templates/webassembly/hxml/final.hxml index fc6e82599..f0158709d 100644 --- a/templates/emscripten/hxml/final.hxml +++ b/templates/webassembly/hxml/final.hxml @@ -2,6 +2,8 @@ -cp ::OUTPUT_DIR::/haxe -cpp ::CPP_DIR:: --macro keep("::APP_MAIN::") +-D webassembly +-D wasm -D emscripten -D webgl -D final diff --git a/templates/emscripten/hxml/release.hxml b/templates/webassembly/hxml/release.hxml similarity index 84% rename from templates/emscripten/hxml/release.hxml rename to templates/webassembly/hxml/release.hxml index d2b14aa11..606c6e887 100644 --- a/templates/emscripten/hxml/release.hxml +++ b/templates/webassembly/hxml/release.hxml @@ -2,5 +2,7 @@ -cp ::OUTPUT_DIR::/haxe -cpp ::CPP_DIR:: --macro keep("::APP_MAIN::") +-D webassembly +-D wasm -D emscripten -D webgl diff --git a/templates/emscripten/output.js b/templates/webassembly/output.js similarity index 100% rename from templates/emscripten/output.js rename to templates/webassembly/output.js diff --git a/templates/emscripten/template/index.html b/templates/webassembly/template/index.html similarity index 100% rename from templates/emscripten/template/index.html rename to templates/webassembly/template/index.html diff --git a/tools/CommandLineTools.hx b/tools/CommandLineTools.hx index 62d143da8..d6248e174 100644 --- a/tools/CommandLineTools.hx +++ b/tools/CommandLineTools.hx @@ -287,8 +287,8 @@ class CommandLineTools target = Platform.LINUX; targetFlags.set("rpi", ""); - case "webassembly", "wasm": - target = Platform.EMSCRIPTEN; + case "webassembly", "wasm", "emscripten": + target = Platform.WEB_ASSEMBLY; targetFlags.set("webassembly", ""); default: @@ -622,8 +622,8 @@ class CommandLineTools // platform = new FirefoxPlatform (command, project, targetFlags); - case EMSCRIPTEN: - platform = new EmscriptenPlatform(command, project, targetFlags); + case WEB_ASSEMBLY: + platform = new WebAssemblyPlatform(command, project, targetFlags); case TVOS: platform = new TVOSPlatform(command, project, targetFlags); @@ -916,7 +916,6 @@ class CommandLineTools Log.println(" \x1b[1mair\x1b[0m -- Create an AIR application"); Log.println(" \x1b[1mandroid\x1b[0m -- Create an Android application"); // Log.println (" \x1b[1mblackberry\x1b[0m -- Create a BlackBerry application"); - Log.println(" \x1b[1memscripten\x1b[0m -- Create an Emscripten application"); Log.println(" \x1b[1mflash\x1b[0m -- Create a Flash SWF application"); Log.println(" \x1b[1mhtml5\x1b[0m -- Create an HTML5 application"); Log.println(" \x1b[1mios\x1b[0m -- Create an iOS application"); @@ -925,6 +924,7 @@ class CommandLineTools // Log.println (" \x1b[1mtizen\x1b[0m -- Create a Tizen application"); Log.println(" \x1b[1mtvos\x1b[0m -- Create a tvOS application"); // Log.println (" \x1b[1mwebos\x1b[0m -- Create a webOS application"); + Log.println(" \x1b[1mwebassembly\x1b[0m -- Create a WebAssembly application"); Log.println(" \x1b[1mwindows\x1b[0m -- Create a Windows application"); Log.println(""); @@ -947,7 +947,7 @@ class CommandLineTools // Log.println (" \x1b[1mappletvsim\x1b[0m -- Alias for \x1b[1mtvos -simulator\x1b[0m"); Log.println(" \x1b[1mrpi\x1b[0;3m/\x1b[0m\x1b[1mraspberrypi\x1b[0m -- Alias for \x1b[1mlinux -rpi\x1b[0m"); Log.println(" \x1b[1melectron\x1b[0m -- Alias for \x1b[1mhtml5 -electron\x1b[0m"); - Log.println(" \x1b[1mwebassembly\x1b[0;3m/\x1b[0m\x1b[1mwasm\x1b[0m -- Alias for \x1b[1memscripten -webassembly\x1b[0m"); + Log.println(" \x1b[1mwasm/emscripten\x1b[0m -- Alias for \x1b[1mwebassembly\x1b[0m"); } Log.println(""); @@ -1030,16 +1030,15 @@ class CommandLineTools if (command != "run" && command != "trace") { - Log.println(" \x1b[3m(emscripten)\x1b[0m \x1b[1m-webassembly\x1b[0m -- Compile for WebAssembly instead of asm.js"); - Log.println(" \x1b[3m(emscripten|html5)\x1b[0m \x1b[1m-minify\x1b[0m -- Minify application file"); + Log.println(" \x1b[3m(html5|webassembly)\x1b[0m \x1b[1m-minify\x1b[0m -- Minify application file"); } if (command == "run" || command == "test") { - Log.println(" \x1b[3m(emscripten|html5|flash)\x1b[0m \x1b[1m-nolaunch\x1b[0m -- Begin test server without launching"); + Log.println(" \x1b[3m(html5|flash|webassembly)\x1b[0m \x1b[1m-nolaunch\x1b[0m -- Begin test server without launching"); // Log.println (" \x1b[3m(html5)\x1b[0m \x1b[1m-minify\x1b[0m -- Minify output using the Google Closure compiler"); // Log.println (" \x1b[3m(html5)\x1b[0m \x1b[1m-minify -yui\x1b[0m -- Minify output using the YUI compressor"); - Log.println(" \x1b[3m(emscripten|html5|flash)\x1b[0m \x1b[1m--port=\x1b[0;3mvalue\x1b[0m -- Set port for test server"); + Log.println(" \x1b[3m(html5|flash|webassembly)\x1b[0m \x1b[1m--port=\x1b[0;3mvalue\x1b[0m -- Set port for test server"); } Log.println(""); @@ -1562,8 +1561,8 @@ class CommandLineTools target = Platform.LINUX; targetFlags.set("rpi", ""); - case "webassembly", "wasm": - target = Platform.EMSCRIPTEN; + case "webassembly", "wasm", "emscripten": + target = Platform.WEB_ASSEMBLY; targetFlags.set("webassembly", ""); case "winjs", "uwp": diff --git a/tools/platforms/EmscriptenPlatform.hx b/tools/platforms/WebAssemblyPlatform.hx similarity index 89% rename from tools/platforms/EmscriptenPlatform.hx rename to tools/platforms/WebAssemblyPlatform.hx index 51396756c..d79827769 100644 --- a/tools/platforms/EmscriptenPlatform.hx +++ b/tools/platforms/WebAssemblyPlatform.hx @@ -21,7 +21,7 @@ import lime.tools.ProjectHelper; import sys.io.File; import sys.FileSystem; -class EmscriptenPlatform extends PlatformTarget +class WebAssemblyPlatform extends PlatformTarget { private var dependencyPath:String; private var outputFile:String; @@ -94,8 +94,8 @@ class EmscriptenPlatform extends PlatformTarget defaults.merge(project); project = defaults; - targetDirectory = Path.combine(project.app.path, project.config.getString("emscripten.output-directory", "emscripten")); - dependencyPath = project.config.getString("emscripten.dependency-path", "lib"); + targetDirectory = Path.combine(project.app.path, project.config.getString("webassembly.output-directory", "webassembly")); + dependencyPath = project.config.getString("webassembly.dependency-path", "lib"); outputFile = targetDirectory + "/bin/" + project.app.file + ".js"; } @@ -114,11 +114,11 @@ class EmscriptenPlatform extends PlatformTarget if (sdkPath == null) { - Log.error("You must define EMSCRIPTEN_SDK with the path to your Emscripten SDK"); + Log.error("You must define EMSCRIPTEN_SDK with the path to your Emscripten SDK."); } var hxml = targetDirectory + "/haxe/" + buildType + ".hxml"; - var args = [hxml, "-D", "emscripten", "-D", "webgl", "-D", "static_link"]; + var args = [hxml, "-D", "webassembly", "-D", "wasm", "-D", "emscripten", "-D", "webgl", "-D", "static_link"]; if (Log.verbose) { @@ -130,7 +130,7 @@ class EmscriptenPlatform extends PlatformTarget if (noOutput) return; - CPPHelper.compile(project, targetDirectory + "/obj", ["-Demscripten", "-Dwebgl", "-Dstatic_link"]); + CPPHelper.compile(project, targetDirectory + "/obj", ["-Dwebassembly", "-Dwasm", "-Demscripten", "-Dwebgl", "-Dstatic_link"]); // CPPHelper.compile(project, targetDirectory + "/obj", ["-Demscripten", "-Dwebgl", "-Dstatic_link"], "BuildMain.xml"); project.path(sdkPath); @@ -165,7 +165,7 @@ class EmscriptenPlatform extends PlatformTarget "ApplicationMain.o" ]); - if (project.targetFlags.exists("webassembly") || project.targetFlags.exists("wasm") || !project.targetFlags.exists("asmjs")) + if (!project.targetFlags.exists("asmjs")) { args.push("-s"); args.push("WASM=1"); @@ -190,19 +190,10 @@ class EmscriptenPlatform extends PlatformTarget } } - if (project.targetFlags.exists("final")) + if (project.targetFlags.exists("final") || project.defines.exists("disable-exception-catching") || project.targetFlags.exists("disable-exception-catching")) { args.push("-s"); args.push("DISABLE_EXCEPTION_CATCHING=1"); - args.push("-O3"); - } - else if (!project.debug) - { - args.push("-s"); - args.push("DISABLE_EXCEPTION_CATCHING=1"); - // args.push ("-s"); - // args.push ("OUTLINING_LIMIT=70000"); - args.push("-O2"); } else { @@ -213,6 +204,20 @@ class EmscriptenPlatform extends PlatformTarget args.push("NO_DISABLE_EXCEPTION_CATCHING=1"); args.push("-s"); args.push("ASSERTIONS=1"); + } + + if (project.targetFlags.exists("final")) + { + args.push("-O3"); + } + else if (!project.debug) + { + // args.push ("-s"); + // args.push ("OUTLINING_LIMIT=70000"); + args.push("-O2"); + } + else + { args.push("-O1"); } @@ -279,7 +284,7 @@ class EmscriptenPlatform extends PlatformTarget } } - System.copyFileTemplate(project.templatePaths, "emscripten/output.js", outputFile, context); + System.copyFileTemplate(project.templatePaths, "webassembly/output.js", outputFile, context); } if (project.targetFlags.exists("minify")) @@ -316,7 +321,7 @@ class EmscriptenPlatform extends PlatformTarget public override function deploy():Void { - DeploymentHelper.deploy(project, targetFlags, targetDirectory, "Emscripten"); + DeploymentHelper.deploy(project, targetFlags, targetDirectory, "WebAssembly"); } public override function display():Void @@ -353,7 +358,7 @@ class EmscriptenPlatform extends PlatformTarget public override function rebuild():Void { - CPPHelper.rebuild(project, [["-Demscripten", "-Dstatic_link"]]); + CPPHelper.rebuild(project, [["-Dwebassembly", "-Dwasm", "-Demscripten", "-Dstatic_link"]]); } public override function run():Void @@ -378,10 +383,10 @@ class EmscriptenPlatform extends PlatformTarget } } - for (asset in project.assets) - { - asset.resourceName = "assets/" + asset.resourceName; - } + // for (asset in project.assets) + // { + // asset.resourceName = "assets/" + asset.resourceName; + // } var destination = targetDirectory + "/bin/"; System.mkdir(destination); @@ -462,10 +467,10 @@ class EmscriptenPlatform extends PlatformTarget } } - ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/template", destination, context); + ProjectHelper.recursiveSmartCopyTemplate(project, "webassembly/template", destination, context); ProjectHelper.recursiveSmartCopyTemplate(project, "haxe", targetDirectory + "/haxe", context); - ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/hxml", targetDirectory + "/haxe", context); - // ProjectHelper.recursiveSmartCopyTemplate(project, "emscripten/cpp", targetDirectory + "/obj", context); + ProjectHelper.recursiveSmartCopyTemplate(project, "webassembly/hxml", targetDirectory + "/haxe", context); + // ProjectHelper.recursiveSmartCopyTemplate(project, "webassembly/cpp", targetDirectory + "/obj", context); ProjectHelper.recursiveSmartCopyTemplate(project, "cpp/static", targetDirectory + "/obj", context); for (asset in project.assets) diff --git a/tools/utils/PlatformSetup.hx b/tools/utils/PlatformSetup.hx index 986948ae7..8f7c6be91 100644 --- a/tools/utils/PlatformSetup.hx +++ b/tools/utils/PlatformSetup.hx @@ -369,9 +369,6 @@ class PlatformSetup // setupBlackBerry (); - case "emscripten", "webassembly", "wasm": - setupEmscripten(); - case "html5": Log.println("\x1b[0;3mNo additional configuration is required.\x1b[0m"); // setupHTML5 (); @@ -398,6 +395,9 @@ class PlatformSetup // setupTizen (); + case "webassembly", "wasm", "emscripten": + setupWebAssembly(); + case "webos": // setupWebOS (); @@ -625,18 +625,6 @@ class PlatformSetup Log.println("Setup complete."); } - public static function setupEmscripten():Void - { - Log.println("\x1b[1mIn order to build for WebAssembly or asm.js, you must download"); - Log.println("and install the Emscripten SDK."); - Log.println(""); - - getDefineValue("EMSCRIPTEN_SDK", "Path to Emscripten SDK"); - - Log.println(""); - Log.println("Setup complete."); - } - public static function setupHaxelib(haxelib:Haxelib, dependency:Bool = false):Void { setupHaxelibs.set(haxelib.name, true); @@ -1165,6 +1153,20 @@ class PlatformSetup } } + public static function setupWebAssembly():Void + { + Log.println("\x1b[1mIn order to build for WebAssembly or asm.js, you must download"); + Log.println("and install the Emscripten SDK."); + Log.println(""); + Log.println("After install, the SDK path may be at \"emsdk/upstream/emscripten\""); + Log.println(""); + + getDefineValue("EMSCRIPTEN_SDK", "Path to Emscripten SDK"); + + Log.println(""); + Log.println("Setup complete."); + } + public static function setupWindows():Void { Log.println("\x1b[1mIn order to build native executables for Windows, you must have a");