Skip to content

Commit

Permalink
organize emscripten build types
Browse files Browse the repository at this point in the history
  • Loading branch information
xpenatan committed Oct 21, 2023
1 parent 03cd69c commit 3903375
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -31,8 +29,7 @@ public void create() {
ExampleLibLoader.init(new Runnable() {
@Override
public void run() {
time = System.currentTimeMillis();
init = true;
initLib();
}
});

Expand All @@ -41,10 +38,10 @@ public void run() {
}

private void initLib() {
if(initLib) {
if(init) {
return;
}
initLib = true;
init = true;

NormalClass normalClass = new NormalClass();

Expand Down Expand Up @@ -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;
}

Expand Down
58 changes: 28 additions & 30 deletions example/lib/generator/src/main/java/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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);
Expand All @@ -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;
}

Expand Down
3 changes: 2 additions & 1 deletion example/lib/teavm/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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/";
Expand Down Expand Up @@ -53,8 +51,6 @@ public EmscriptenLibTarget() {
linkerFlags.add("SINGLE_FILE=1");

libSuffix = ".wasm.js";

// cppIncludes.add("**/jsglue/*.cpp");
}

@Override
Expand Down

0 comments on commit 3903375

Please sign in to comment.