diff --git a/example/app/core/src/main/java/com/github/xpenatan/jparser/example/app/AppTest.java b/example/app/core/src/main/java/com/github/xpenatan/jparser/example/app/AppTest.java index e22a73d..dbdf8fb 100644 --- a/example/app/core/src/main/java/com/github/xpenatan/jparser/example/app/AppTest.java +++ b/example/app/core/src/main/java/com/github/xpenatan/jparser/example/app/AppTest.java @@ -15,9 +15,7 @@ import com.github.xpenatan.jparser.example.lib.idl.helper.FloatArray; public class AppTest extends ApplicationAdapter { - long time = 0; private boolean init = false; - private boolean initLib = false; private SpriteBatch batch; private BitmapFont font; @@ -31,8 +29,7 @@ public void create() { ExampleLibLoader.init(new Runnable() { @Override public void run() { - time = System.currentTimeMillis(); - init = true; + initLib(); } }); @@ -41,10 +38,10 @@ public void run() { } private void initLib() { - if(initLib) { + if(init) { return; } - initLib = true; + init = true; NormalClass normalClass = new NormalClass(); @@ -133,14 +130,7 @@ private void testPrimitive() { public void render() { ScreenUtils.clear(0.4f, 0.4f, 0.4f, 1); - if(init) { - long timeNow = System.currentTimeMillis(); - if((timeNow - time) > 5000) { - initLib(); - } - } - - if(!initLib) { + if(!init) { return; } diff --git a/example/lib/generator/src/main/java/Main.java b/example/lib/generator/src/main/java/Main.java index 87896ce..d801ce9 100644 --- a/example/lib/generator/src/main/java/Main.java +++ b/example/lib/generator/src/main/java/Main.java @@ -102,9 +102,33 @@ private static BuildMultiTarget getWindowTarget() { private static BuildMultiTarget getEmscriptenTarget(IDLReader idlReader) { BuildMultiTarget multiTarget = new BuildMultiTarget(); + int buildType = 1; + + if(buildType == 0) { + // Compile and create a js file + EmscriptenTarget emscriptenTarget = new EmscriptenTarget(idlReader); + emscriptenTarget.headerDirs.add("-Isrc/exampleLib"); + emscriptenTarget.headerDirs.add("-includesrc/exampleLib/CustomCode.h"); + emscriptenTarget.cppIncludes.add("**/src/exampleLib/**.cpp"); + multiTarget.add(emscriptenTarget); + } + else if(buildType == 1) { + // Make a static library + EmscriptenTarget libTarget = new EmscriptenTarget(idlReader); + libTarget.isStatic = true; + libTarget.compileGlueCode = false; + libTarget.headerDirs.add("-Isrc/exampleLib"); + libTarget.cppIncludes.add("**/src/exampleLib/**.cpp"); + multiTarget.add(libTarget); - { - // Make lib as a side module + // Compile glue code and link to make js file + EmscriptenTarget linkTarget = new EmscriptenTarget(idlReader); + linkTarget.headerDirs.add("-includesrc/exampleLib/CustomCode.h"); + linkTarget.linkerFlags.add("../../libs/emscripten/exampleLib.a"); + multiTarget.add(linkTarget); + } + else if(buildType == 2) { + // Make lib as a side module/dynamic linking EmscriptenLibTarget sideTarget = new EmscriptenLibTarget(); sideTarget.libName = "exampleLibside"; sideTarget.headerDirs.add("-Isrc/exampleLib"); @@ -117,7 +141,7 @@ private static BuildMultiTarget getEmscriptenTarget(IDLReader idlReader) { sideTarget.linkerFlags.add("-sSIDE_MODULE=1"); sideTarget.linkerFlags.add("-sEXPORT_ALL=1"); sideTarget.libSuffix = ".wasm"; -// multiTarget.add(sideTarget); + multiTarget.add(sideTarget); // Make lib as a main module EmscriptenTarget mainTarget = new EmscriptenTarget(idlReader); @@ -128,34 +152,8 @@ private static BuildMultiTarget getEmscriptenTarget(IDLReader idlReader) { mainTarget.linkerFlags.add("-fPIC"); mainTarget.linkerFlags.add("-ERROR_ON_UNDEFINED_SYMBOLS=0"); mainTarget.linkerFlags.add("../../libs/emscripten/exampleLibside.wasm"); -// multiTarget.add(mainTarget); + multiTarget.add(mainTarget); } - - { - // Make a static library - EmscriptenTarget libTarget = new EmscriptenTarget(idlReader); - libTarget.isStatic = true; - libTarget.compileGlueCode = false; - libTarget.headerDirs.add("-Isrc/exampleLib"); - libTarget.cppIncludes.add("**/src/exampleLib/**.cpp"); -// multiTarget.add(libTarget); - - // Only Link and make js file - EmscriptenTarget linkTarget = new EmscriptenTarget(idlReader); - linkTarget.compileGlueCode = true; - linkTarget.shouldCompile = true; - linkTarget.headerDirs.add("-includesrc/exampleLib/CustomCode.h"); - linkTarget.linkerFlags.add("../../libs/emscripten/exampleLib.a"); -// multiTarget.add(linkTarget); - } - - // Compile and create a js file - EmscriptenTarget emscriptenTarget = new EmscriptenTarget(idlReader); - emscriptenTarget.headerDirs.add("-Isrc/exampleLib"); - emscriptenTarget.headerDirs.add("-includesrc/exampleLib/CustomCode.h"); - emscriptenTarget.cppIncludes.add("**/src/exampleLib/**.cpp"); - multiTarget.add(emscriptenTarget); - return multiTarget; } diff --git a/example/lib/teavm/build.gradle.kts b/example/lib/teavm/build.gradle.kts index 505a196..df198a4 100644 --- a/example/lib/teavm/build.gradle.kts +++ b/example/lib/teavm/build.gradle.kts @@ -3,9 +3,10 @@ plugins { } val emscriptenFile = "$projectDir/../generator/build/c++/libs/emscripten/exampleLib.wasm.js" +val emscriptenSideFile = "$projectDir/../generator/build/c++/libs/emscripten/exampleLibside.wasm" tasks.jar { - from(emscriptenFile) + from(emscriptenFile, emscriptenSideFile) } diff --git a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/EmscriptenLibTarget.java b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/EmscriptenLibTarget.java index 0e15318..611342f 100644 --- a/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/EmscriptenLibTarget.java +++ b/jParser/builder/src/main/java/com/github/xpenatan/jparser/builder/targets/EmscriptenLibTarget.java @@ -9,9 +9,7 @@ @Deprecated public class EmscriptenLibTarget extends BuildTarget { - String EMSCRIPTEN_ROOT = System.getenv("EMSDK") + "/upstream/emscripten/"; - String WEBIDL_BINDER_SCRIPT = EMSCRIPTEN_ROOT + "tools/webidl_binder.py"; public EmscriptenLibTarget() { this.libDirSuffix = "emscripten/"; @@ -53,8 +51,6 @@ public EmscriptenLibTarget() { linkerFlags.add("SINGLE_FILE=1"); libSuffix = ".wasm.js"; - -// cppIncludes.add("**/jsglue/*.cpp"); } @Override