aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-26 20:48:30 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-26 20:48:30 +0000
commite5c82b3b1a35797e37178419e81c31f5cec2182a (patch)
tree9e5b683219cb3bc097e67b9a8f6a8f35dce77681 /src/main/java
parentee68f20f44ee031abc8d264ff72ba4a832604767 (diff)
Add separate wasm32 and (unsupported) wasm64 targets
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/Backends.java3
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java20
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/WasmTarget.java16
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;
+ }
+}