diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-26 20:48:30 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-26 20:48:30 +0000 |
| commit | e5c82b3b1a35797e37178419e81c31f5cec2182a (patch) | |
| tree | 9e5b683219cb3bc097e67b9a8f6a8f35dce77681 /src/main/java | |
| parent | ee68f20f44ee031abc8d264ff72ba4a832604767 (diff) | |
Add separate wasm32 and (unsupported) wasm64 targets
Diffstat (limited to 'src/main/java')
3 files changed, 33 insertions, 6 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/Backends.java b/src/main/java/org/shedlang/compiler/backends/Backends.java index 6c596c6c..be0a512d 100644 --- a/src/main/java/org/shedlang/compiler/backends/Backends.java +++ b/src/main/java/org/shedlang/compiler/backends/Backends.java @@ -18,7 +18,8 @@ public class Backends { LlvmBackend.INSTANCE, PatioTextBackend.INSTANCE, ShidTextBackend.INSTANCE, - WasmBackend.INSTANCE + WasmBackend.WASM32, + WasmBackend.WASM64 ) .map(backend -> Map.entry(backend.targetName(), backend)) .collect(PCollectors.toOrderedPMap()); diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java index 77eeee70..33859085 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java @@ -30,11 +30,18 @@ import java.util.List; import static org.shedlang.compiler.util.processes.ProcessRunner.runInheritIo; public class WasmBackend implements Backend { - public static final WasmBackend INSTANCE = new WasmBackend(); + public static final WasmBackend WASM32 = new WasmBackend(WasmTarget.WASM32); + public static final WasmBackend WASM64 = new WasmBackend(WasmTarget.WASM64); + + private final WasmTarget target; + + public WasmBackend(WasmTarget target) { + this.target = target; + } @Override public String targetName() { - return "wasm32"; + return this.target.targetName(); } @Override @@ -71,7 +78,7 @@ public class WasmBackend implements Backend { } } - public static void link(List<Path> inputs, Path target) throws ProcessError, InterruptedException { + public void link(List<Path> inputs, Path target) throws ProcessError, InterruptedException { var ldArgs = new ArrayList<String>(); ldArgs.add("wasm-ld"); @@ -82,8 +89,11 @@ public class WasmBackend implements Backend { ldArgs.add(input.toString()); } - ldArgs.add(ShedCompilerFiles.getRoot().resolve("runtime/target/wasm32/libshed.a").toString()); - ldArgs.add(ShedCompilerFiles.getRoot().resolve("runtime/target/wasm32/libwalloc.a").toString()); + var runtimeDir = ShedCompilerFiles.getRoot() + .resolve("runtime/target") + .resolve(this.target.targetName()); + ldArgs.add(runtimeDir.resolve("libshed.a").toString()); + ldArgs.add(runtimeDir.resolve("libwalloc.a").toString()); runInheritIo(ldArgs); } diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmTarget.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmTarget.java new file mode 100644 index 00000000..7157e946 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmTarget.java @@ -0,0 +1,16 @@ +package org.shedlang.compiler.backends.wasm; + +public enum WasmTarget { + WASM32("wasm32"), + WASM64("wasm64"); + + private final String targetName; + + WasmTarget(String name) { + this.targetName = name; + } + + public String targetName() { + return targetName; + } +} |
