wasm gc: support source map in gradle plugin

This commit is contained in:
Alexey Andreev 2024-10-14 20:37:32 +02:00
parent d68018d2d3
commit 94c50dd1bc
6 changed files with 11 additions and 0 deletions

View File

@ -54,6 +54,7 @@ teavm {
wasmGC { wasmGC {
addedToWebApp = true addedToWebApp = true
mainClass = "org.teavm.samples.benchmark.teavm.BenchmarkStarter" mainClass = "org.teavm.samples.benchmark.teavm.BenchmarkStarter"
sourceMap = true
} }
wasm { wasm {
addedToWebApp = true addedToWebApp = true

View File

@ -407,6 +407,7 @@ public class TeaVMTool {
target.setDebugInfoLevel(debugInformationGenerated ? WasmDebugInfoLevel.FULL : wasmDebugInfoLevel); target.setDebugInfoLevel(debugInformationGenerated ? WasmDebugInfoLevel.FULL : wasmDebugInfoLevel);
target.setDebugInfoLocation(wasmDebugInfoLocation); target.setDebugInfoLocation(wasmDebugInfoLocation);
if (sourceMapsFileGenerated) { if (sourceMapsFileGenerated) {
wasmSourceMapWriter = new SourceMapBuilder();
target.setSourceMapBuilder(wasmSourceMapWriter); target.setSourceMapBuilder(wasmSourceMapWriter);
target.setSourceMapLocation(getResolvedTargetFileName() + ".map"); target.setSourceMapLocation(getResolvedTargetFileName() + ".map");
} }

View File

@ -119,6 +119,7 @@ class TeaVMExtensionImpl extends TeaVMBaseExtensionImpl implements TeaVMExtensio
.map(v -> WasmDebugInfoLocation.valueOf(v.toUpperCase())).orElse(WasmDebugInfoLocation.EXTERNAL)); .map(v -> WasmDebugInfoLocation.valueOf(v.toUpperCase())).orElse(WasmDebugInfoLocation.EXTERNAL));
wasmGC.getDebugInfoLevel().convention(property("wasm-gc.debugInformation.level") wasmGC.getDebugInfoLevel().convention(property("wasm-gc.debugInformation.level")
.map(v -> WasmDebugInfoLevel.valueOf(v.toUpperCase())).orElse(WasmDebugInfoLevel.DEOBFUSCATION)); .map(v -> WasmDebugInfoLevel.valueOf(v.toUpperCase())).orElse(WasmDebugInfoLevel.DEOBFUSCATION));
wasmGC.getSourceMap().convention(property("wasm-gc.sourceMap").map(Boolean::parseBoolean).orElse(false));
} }
private void setupWasiDefaults() { private void setupWasiDefaults() {

View File

@ -225,6 +225,7 @@ public class TeaVMPlugin implements Plugin<Project> {
task.getTargetFileName().convention(wasmGC.getTargetFileName()); task.getTargetFileName().convention(wasmGC.getTargetFileName());
task.getObfuscated().convention(wasmGC.getObfuscated()); task.getObfuscated().convention(wasmGC.getObfuscated());
task.getStrict().convention(wasmGC.getStrict()); task.getStrict().convention(wasmGC.getStrict());
task.getSourceMap().convention(wasmGC.getSourceMap());
}); });
project.getTasks().create(WASM_GC_COPY_RUNTIME_TASK_NAME, CopyWasmGCRuntimeTask.class, task -> { project.getTasks().create(WASM_GC_COPY_RUNTIME_TASK_NAME, CopyWasmGCRuntimeTask.class, task -> {
task.setGroup(TASK_GROUP); task.setGroup(TASK_GROUP);

View File

@ -31,4 +31,6 @@ public interface TeaVMWasmGCConfiguration extends TeaVMCommonConfiguration, TeaV
Property<WasmDebugInfoLocation> getDebugInfoLocation(); Property<WasmDebugInfoLocation> getDebugInfoLocation();
Property<WasmDebugInfoLevel> getDebugInfoLevel(); Property<WasmDebugInfoLevel> getDebugInfoLevel();
Property<Boolean> getSourceMap();
} }

View File

@ -29,6 +29,7 @@ public abstract class GenerateWasmGCTask extends TeaVMTask {
getDebugInfo().convention(true); getDebugInfo().convention(true);
getDebugInfoLevel().convention(WasmDebugInfoLevel.DEOBFUSCATION); getDebugInfoLevel().convention(WasmDebugInfoLevel.DEOBFUSCATION);
getDebugInfoLocation().convention(WasmDebugInfoLocation.EXTERNAL); getDebugInfoLocation().convention(WasmDebugInfoLocation.EXTERNAL);
getSourceMap().convention(false);
} }
@Input @Input
@ -46,11 +47,15 @@ public abstract class GenerateWasmGCTask extends TeaVMTask {
@Input @Input
public abstract Property<WasmDebugInfoLocation> getDebugInfoLocation(); public abstract Property<WasmDebugInfoLocation> getDebugInfoLocation();
@Input
public abstract Property<Boolean> getSourceMap();
@Override @Override
protected void setupBuilder(BuildStrategy builder) { protected void setupBuilder(BuildStrategy builder) {
builder.setStrict(getStrict().get()); builder.setStrict(getStrict().get());
builder.setObfuscated(getObfuscated().get()); builder.setObfuscated(getObfuscated().get());
builder.setDebugInformationGenerated(getDebugInfo().get()); builder.setDebugInformationGenerated(getDebugInfo().get());
builder.setSourceMapsFileGenerated(getSourceMap().get());
switch (getDebugInfoLevel().get()) { switch (getDebugInfoLevel().get()) {
case FULL: case FULL:
builder.setWasmDebugInfoLevel(org.teavm.backend.wasm.WasmDebugInfoLevel.FULL); builder.setWasmDebugInfoLevel(org.teavm.backend.wasm.WasmDebugInfoLevel.FULL);