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 {
addedToWebApp = true
mainClass = "org.teavm.samples.benchmark.teavm.BenchmarkStarter"
sourceMap = true
}
wasm {
addedToWebApp = true

View File

@ -407,6 +407,7 @@ public class TeaVMTool {
target.setDebugInfoLevel(debugInformationGenerated ? WasmDebugInfoLevel.FULL : wasmDebugInfoLevel);
target.setDebugInfoLocation(wasmDebugInfoLocation);
if (sourceMapsFileGenerated) {
wasmSourceMapWriter = new SourceMapBuilder();
target.setSourceMapBuilder(wasmSourceMapWriter);
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));
wasmGC.getDebugInfoLevel().convention(property("wasm-gc.debugInformation.level")
.map(v -> WasmDebugInfoLevel.valueOf(v.toUpperCase())).orElse(WasmDebugInfoLevel.DEOBFUSCATION));
wasmGC.getSourceMap().convention(property("wasm-gc.sourceMap").map(Boolean::parseBoolean).orElse(false));
}
private void setupWasiDefaults() {

View File

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

View File

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

View File

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