diff --git a/samples/benchmark/build.gradle.kts b/samples/benchmark/build.gradle.kts index db9565d103..6144fa8660 100644 --- a/samples/benchmark/build.gradle.kts +++ b/samples/benchmark/build.gradle.kts @@ -54,6 +54,7 @@ teavm { wasmGC { addedToWebApp = true mainClass = "org.teavm.samples.benchmark.teavm.BenchmarkStarter" + sourceMap = true } wasm { addedToWebApp = true diff --git a/tools/core/src/main/java/org/teavm/tooling/TeaVMTool.java b/tools/core/src/main/java/org/teavm/tooling/TeaVMTool.java index d5cdfc837e..b30b994fea 100644 --- a/tools/core/src/main/java/org/teavm/tooling/TeaVMTool.java +++ b/tools/core/src/main/java/org/teavm/tooling/TeaVMTool.java @@ -407,6 +407,7 @@ private WasmGCTarget prepareWebAssemblyGCTarget() { target.setDebugInfoLevel(debugInformationGenerated ? WasmDebugInfoLevel.FULL : wasmDebugInfoLevel); target.setDebugInfoLocation(wasmDebugInfoLocation); if (sourceMapsFileGenerated) { + wasmSourceMapWriter = new SourceMapBuilder(); target.setSourceMapBuilder(wasmSourceMapWriter); target.setSourceMapLocation(getResolvedTargetFileName() + ".map"); } diff --git a/tools/gradle/src/main/java/org/teavm/gradle/TeaVMExtensionImpl.java b/tools/gradle/src/main/java/org/teavm/gradle/TeaVMExtensionImpl.java index b15efca44c..e494c7b3eb 100644 --- a/tools/gradle/src/main/java/org/teavm/gradle/TeaVMExtensionImpl.java +++ b/tools/gradle/src/main/java/org/teavm/gradle/TeaVMExtensionImpl.java @@ -119,6 +119,7 @@ private void setupWasmGCDefaults() { .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() { diff --git a/tools/gradle/src/main/java/org/teavm/gradle/TeaVMPlugin.java b/tools/gradle/src/main/java/org/teavm/gradle/TeaVMPlugin.java index 5d824a484a..263f932420 100644 --- a/tools/gradle/src/main/java/org/teavm/gradle/TeaVMPlugin.java +++ b/tools/gradle/src/main/java/org/teavm/gradle/TeaVMPlugin.java @@ -225,6 +225,7 @@ private void registerWasmGCTask(Project project, Configuration configuration) { 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); diff --git a/tools/gradle/src/main/java/org/teavm/gradle/api/TeaVMWasmGCConfiguration.java b/tools/gradle/src/main/java/org/teavm/gradle/api/TeaVMWasmGCConfiguration.java index bac4bb61c7..f4e73bdba4 100644 --- a/tools/gradle/src/main/java/org/teavm/gradle/api/TeaVMWasmGCConfiguration.java +++ b/tools/gradle/src/main/java/org/teavm/gradle/api/TeaVMWasmGCConfiguration.java @@ -31,4 +31,6 @@ public interface TeaVMWasmGCConfiguration extends TeaVMCommonConfiguration, TeaV Property getDebugInfoLocation(); Property getDebugInfoLevel(); + + Property getSourceMap(); } diff --git a/tools/gradle/src/main/java/org/teavm/gradle/tasks/GenerateWasmGCTask.java b/tools/gradle/src/main/java/org/teavm/gradle/tasks/GenerateWasmGCTask.java index 18922b2429..e524e3d75f 100644 --- a/tools/gradle/src/main/java/org/teavm/gradle/tasks/GenerateWasmGCTask.java +++ b/tools/gradle/src/main/java/org/teavm/gradle/tasks/GenerateWasmGCTask.java @@ -29,6 +29,7 @@ public GenerateWasmGCTask() { getDebugInfo().convention(true); getDebugInfoLevel().convention(WasmDebugInfoLevel.DEOBFUSCATION); getDebugInfoLocation().convention(WasmDebugInfoLocation.EXTERNAL); + getSourceMap().convention(false); } @Input @@ -46,11 +47,15 @@ public GenerateWasmGCTask() { @Input public abstract Property getDebugInfoLocation(); + @Input + public abstract Property 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);