aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-04-12 10:17:13 +0100
committerMichael Williamson <mike@zwobble.org>2026-04-12 10:17:13 +0100
commit8831821e326a14e57d08ed9b1c8da1e5e3f7cf9a (patch)
tree0f6304114d3513863227ef88901c46c8d7682da0
parent1c6e2b6df2531c3c56644f1d7957a1e7a8e7fe00 (diff)
Make targets independent of specific backends
-rw-r--r--src/main/java/org/shedlang/compiler/backends/BackendFactory.java2
-rw-r--r--src/main/java/org/shedlang/compiler/backends/Backends.java1
-rw-r--r--src/main/java/org/shedlang/compiler/backends/PatioNativeCHeadersBackend.java1
-rw-r--r--src/main/java/org/shedlang/compiler/backends/PatioTextBackend.java1
-rw-r--r--src/main/java/org/shedlang/compiler/backends/ShidTextBackend.java1
-rw-r--r--src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java10
-rw-r--r--src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackendFactory.java8
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java11
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackendFactory.java9
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java38
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContext.java4
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmGlobalContext.java10
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmModuleContext.java6
-rw-r--r--src/main/java/org/shedlang/compiler/backends/targets/NativeTarget.java (renamed from src/main/java/org/shedlang/compiler/backends/llvm/LlvmTarget.java)6
-rw-r--r--src/main/java/org/shedlang/compiler/backends/targets/ShedTarget.java (renamed from src/main/java/org/shedlang/compiler/backends/ShedTarget.java)2
-rw-r--r--src/main/java/org/shedlang/compiler/backends/targets/WasmTarget.java (renamed from src/main/java/org/shedlang/compiler/backends/wasm/WasmTarget.java)2
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java1
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java1
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/WasmBackendFactory.java3
-rw-r--r--src/main/java/org/shedlang/compiler/cli/ShedCli.java2
-rw-r--r--src/main/java/org/shedlang/compiler/cli/UnsupportedTargetError.java2
-rw-r--r--src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftAmd64Tests.java6
-rw-r--r--src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftTests.java8
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/PatioToAmd64Tests.java6
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/PatioToI686Tests.java6
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java9
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java6
-rw-r--r--src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm32Tests.java2
-rw-r--r--src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm64Tests.java2
-rw-r--r--src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasmTests.java1
-rw-r--r--src/test/java/org/shedlang/compiler/backends/wasm/Wasm32ExampleTests.java1
-rw-r--r--src/test/java/org/shedlang/compiler/backends/wasm/Wasm64ExampleTests.java1
-rw-r--r--src/test/java/org/shedlang/compiler/backends/wasm/WasmTesting.java1
-rw-r--r--src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatTesting.java2
34 files changed, 98 insertions, 74 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/BackendFactory.java b/src/main/java/org/shedlang/compiler/backends/BackendFactory.java
index 66b0bc9d..6c5482fd 100644
--- a/src/main/java/org/shedlang/compiler/backends/BackendFactory.java
+++ b/src/main/java/org/shedlang/compiler/backends/BackendFactory.java
@@ -1,5 +1,7 @@
package org.shedlang.compiler.backends;
+import org.shedlang.compiler.backends.targets.ShedTarget;
+
import java.util.Optional;
public interface BackendFactory {
diff --git a/src/main/java/org/shedlang/compiler/backends/Backends.java b/src/main/java/org/shedlang/compiler/backends/Backends.java
index 333f73ad..2c6da38a 100644
--- a/src/main/java/org/shedlang/compiler/backends/Backends.java
+++ b/src/main/java/org/shedlang/compiler/backends/Backends.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.backends;
import org.shedlang.compiler.backends.cranelift.CraneliftBackendFactory;
import org.shedlang.compiler.backends.llvm.LlvmBackendFactory;
+import org.shedlang.compiler.backends.targets.ShedTarget;
import org.shedlang.compiler.backends.wasm.WasmBackendFactory;
import java.util.List;
diff --git a/src/main/java/org/shedlang/compiler/backends/PatioNativeCHeadersBackend.java b/src/main/java/org/shedlang/compiler/backends/PatioNativeCHeadersBackend.java
index 84f7332a..fcd1ef4f 100644
--- a/src/main/java/org/shedlang/compiler/backends/PatioNativeCHeadersBackend.java
+++ b/src/main/java/org/shedlang/compiler/backends/PatioNativeCHeadersBackend.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.backends;
import org.shedlang.compiler.backends.paths.PartialTargetPath;
import org.shedlang.compiler.backends.paths.TargetDir;
+import org.shedlang.compiler.backends.targets.ShedTarget;
import org.shedlang.compiler.config.ProfileConfig;
import org.shedlang.compiler.config.ProjectConfig;
import org.shedlang.compiler.patio.PatioCompilationUnit;
diff --git a/src/main/java/org/shedlang/compiler/backends/PatioTextBackend.java b/src/main/java/org/shedlang/compiler/backends/PatioTextBackend.java
index e93c7644..7c563b5d 100644
--- a/src/main/java/org/shedlang/compiler/backends/PatioTextBackend.java
+++ b/src/main/java/org/shedlang/compiler/backends/PatioTextBackend.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.backends;
import org.shedlang.compiler.backends.paths.PartialTargetPath;
import org.shedlang.compiler.backends.paths.TargetDir;
+import org.shedlang.compiler.backends.targets.ShedTarget;
import org.shedlang.compiler.config.ProfileConfig;
import org.shedlang.compiler.config.ProjectConfig;
import org.shedlang.compiler.patio.PatioCompilationUnit;
diff --git a/src/main/java/org/shedlang/compiler/backends/ShidTextBackend.java b/src/main/java/org/shedlang/compiler/backends/ShidTextBackend.java
index 56174101..39ff9bd9 100644
--- a/src/main/java/org/shedlang/compiler/backends/ShidTextBackend.java
+++ b/src/main/java/org/shedlang/compiler/backends/ShidTextBackend.java
@@ -1,6 +1,7 @@
package org.shedlang.compiler.backends;
import org.shedlang.compiler.backends.paths.TargetDir;
+import org.shedlang.compiler.backends.targets.ShedTarget;
import org.shedlang.compiler.config.ProfileConfig;
import org.shedlang.compiler.config.ProjectConfig;
import org.shedlang.compiler.shid.ShidNamespace;
diff --git a/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java b/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java
index 584fd7d0..75794092 100644
--- a/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java
+++ b/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java
@@ -5,7 +5,7 @@ import org.pcollections.PVector;
import org.shedlang.compiler.backends.Backend;
import org.shedlang.compiler.backends.PatioBackends;
import org.shedlang.compiler.backends.llvm.LlvmBackend;
-import org.shedlang.compiler.backends.llvm.LlvmTarget;
+import org.shedlang.compiler.backends.targets.NativeTarget;
import org.shedlang.compiler.backends.paths.PartialTargetPath;
import org.shedlang.compiler.backends.paths.TargetDir;
import org.shedlang.compiler.config.ProfileConfig;
@@ -30,15 +30,15 @@ import java.util.Optional;
import static org.shedlang.compiler.util.processes.ProcessRunner.runInheritIo;
public class CraneliftBackend implements Backend {
- public static final CraneliftBackend AMD64 = forTarget(LlvmTarget.AMD64);
+ public static final CraneliftBackend AMD64 = forTarget(NativeTarget.AMD64);
- public static CraneliftBackend forTarget(LlvmTarget target) {
+ public static CraneliftBackend forTarget(NativeTarget target) {
return new CraneliftBackend(target);
}
- private final LlvmTarget target;
+ private final NativeTarget target;
- private CraneliftBackend(LlvmTarget target) {
+ private CraneliftBackend(NativeTarget target) {
this.target = target;
}
diff --git a/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackendFactory.java b/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackendFactory.java
index b933d975..32c3c527 100644
--- a/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackendFactory.java
+++ b/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackendFactory.java
@@ -2,8 +2,8 @@ package org.shedlang.compiler.backends.cranelift;
import org.shedlang.compiler.backends.Backend;
import org.shedlang.compiler.backends.BackendFactory;
-import org.shedlang.compiler.backends.ShedTarget;
-import org.shedlang.compiler.backends.llvm.LlvmTarget;
+import org.shedlang.compiler.backends.targets.ShedTarget;
+import org.shedlang.compiler.backends.targets.NativeTarget;
import java.util.Optional;
@@ -15,8 +15,8 @@ public class CraneliftBackendFactory implements BackendFactory {
@Override
public Optional<Backend> backendForTarget(ShedTarget target) {
- Optional<LlvmTarget> llvmTarget = switch (target) {
- case AMD64 -> Optional.of(LlvmTarget.AMD64);
+ Optional<NativeTarget> llvmTarget = switch (target) {
+ case AMD64 -> Optional.of(NativeTarget.AMD64);
default -> Optional.empty();
};
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java
index 0789467a..78177ec4 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java
@@ -15,6 +15,7 @@ import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableGlobal;
import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableLocal;
import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes;
import org.shedlang.compiler.backends.paths.TargetDir;
+import org.shedlang.compiler.backends.targets.NativeTarget;
import org.shedlang.compiler.config.ProfileConfig;
import org.shedlang.compiler.config.ProjectConfig;
import org.shedlang.compiler.patio.PatioCompilationUnit;
@@ -34,16 +35,16 @@ import java.util.Optional;
import static org.shedlang.compiler.util.processes.ProcessRunner.runInheritIo;
public class LlvmBackend implements Backend {
- public static final LlvmBackend AMD64 = new LlvmBackend(LlvmTarget.AMD64);
- public static final LlvmBackend I686 = new LlvmBackend(LlvmTarget.I686);
+ public static final LlvmBackend AMD64 = new LlvmBackend(NativeTarget.AMD64);
+ public static final LlvmBackend I686 = new LlvmBackend(NativeTarget.I686);
- public static LlvmBackend forTarget(LlvmTarget target) {
+ public static LlvmBackend forTarget(NativeTarget target) {
return new LlvmBackend(target);
}
- private final LlvmTarget target;
+ private final NativeTarget target;
- private LlvmBackend(LlvmTarget target) {
+ private LlvmBackend(NativeTarget target) {
this.target = target;
}
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackendFactory.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackendFactory.java
index 301a912b..7bcc6dd4 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackendFactory.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackendFactory.java
@@ -2,7 +2,8 @@ package org.shedlang.compiler.backends.llvm;
import org.shedlang.compiler.backends.Backend;
import org.shedlang.compiler.backends.BackendFactory;
-import org.shedlang.compiler.backends.ShedTarget;
+import org.shedlang.compiler.backends.targets.NativeTarget;
+import org.shedlang.compiler.backends.targets.ShedTarget;
import java.util.Optional;
@@ -14,9 +15,9 @@ public class LlvmBackendFactory implements BackendFactory {
@Override
public Optional<Backend> backendForTarget(ShedTarget target) {
- Optional<LlvmTarget> llvmTarget = switch (target) {
- case AMD64 -> Optional.of(LlvmTarget.AMD64);
- case I686 -> Optional.of(LlvmTarget.I686);
+ Optional<NativeTarget> llvmTarget = switch (target) {
+ case AMD64 -> Optional.of(NativeTarget.AMD64);
+ case I686 -> Optional.of(NativeTarget.I686);
default -> Optional.empty();
};
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
index a49752e0..8093941e 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
@@ -3,7 +3,7 @@ package org.shedlang.compiler.backends.llvm.codegen;
import org.pcollections.PVector;
import org.pcollections.TreePVector;
import org.shedlang.compiler.backends.llvm.LlvmCodeGenLocalVariableSpace;
-import org.shedlang.compiler.backends.llvm.LlvmTarget;
+import org.shedlang.compiler.backends.targets.NativeTarget;
import org.shedlang.compiler.backends.llvm.codegen.errors.SizeofJmpBufError;
import org.shedlang.compiler.backends.llvm.ir.ast.*;
import org.shedlang.compiler.backends.llvm.ir.ast.instructions.*;
@@ -32,13 +32,13 @@ import java.util.stream.StreamSupport;
public class PatioToLlvm {
private static final LlvmType EXCEPTION_TAG_TYPE = LlvmTypes.INT_32;
- private static LlvmType exceptionValueType(LlvmTarget target) {
+ private static LlvmType exceptionValueType(NativeTarget target) {
return target.patioIntType();
}
- private static final ConcurrentMap<LlvmTarget, Integer> JMP_BUF_SIZE = new ConcurrentHashMap<>();
+ private static final ConcurrentMap<NativeTarget, Integer> JMP_BUF_SIZE = new ConcurrentHashMap<>();
- private static int readJmpBufSize(LlvmTarget target) {
+ private static int readJmpBufSize(NativeTarget target) {
try {
var sizeofJmpBufString = Files.readString(
ShedCompilerFiles.getRoot()
@@ -52,7 +52,7 @@ public class PatioToLlvm {
}
}
- private static LlvmType jmpBufType(LlvmTarget target) {
+ private static LlvmType jmpBufType(NativeTarget target) {
if (!JMP_BUF_SIZE.containsKey(target)) {
JMP_BUF_SIZE.put(target, readJmpBufSize(target));
}
@@ -60,7 +60,7 @@ public class PatioToLlvm {
return LlvmTypes.array(JMP_BUF_SIZE.get(target), LlvmTypes.INT_8);
}
- private static LlvmFunctionDeclaration setjmpDeclaration(LlvmTarget target) {
+ private static LlvmFunctionDeclaration setjmpDeclaration(NativeTarget target) {
return new LlvmFunctionDeclaration(
"_setjmp",
target.cIntType(),
@@ -79,7 +79,7 @@ public class PatioToLlvm {
false
);
- private static LlvmGlobalDefinition exceptionValueDeclaration(LlvmTarget target) {
+ private static LlvmGlobalDefinition exceptionValueDeclaration(NativeTarget target) {
return new LlvmGlobalDefinition(
"patio__runtime__exceptions_exception_value",
exceptionValueType(target),
@@ -90,7 +90,7 @@ public class PatioToLlvm {
);
}
- private static LlvmFunctionDeclaration throwDeclaration(LlvmTarget target) {
+ private static LlvmFunctionDeclaration throwDeclaration(NativeTarget target) {
return new LlvmFunctionDeclaration(
"patio__runtime__exceptions_throw",
LlvmTypes.pointer(LlvmTypes.VOID),
@@ -1072,7 +1072,7 @@ public class PatioToLlvm {
private static LlvmType patioDataOffsetToLlvmType(
PatioDataLayout patioDataLayout,
List<Integer> patioOffsets,
- LlvmTarget target
+ NativeTarget target
) {
return patioDataOffsetToLlvmType(
patioDataLayout,
@@ -1084,7 +1084,7 @@ public class PatioToLlvm {
private static LlvmType patioDataOffsetToLlvmType(
PatioDataLayout patioDataLayout,
PVector<Integer> patioOffsets,
- LlvmTarget target
+ NativeTarget target
) {
return patioDataLayoutToLlvmType(
PatioOffsets.offsetDataLayout(patioDataLayout, patioOffsets),
@@ -1216,7 +1216,7 @@ public class PatioToLlvm {
private static LlvmOperand patioIntValueToLlvmOperand(
PatioIntValue intValue,
PatioType patioDestinationType,
- LlvmTarget target
+ NativeTarget target
) {
return switch (intValue) {
case PatioIntValueByteOffsetOf byteOffsetOf ->
@@ -1241,7 +1241,7 @@ public class PatioToLlvm {
private static LlvmType patioReturnTypesToLlvmType(
List<PatioType> patioReturnTypes,
- LlvmTarget target
+ NativeTarget target
) {
var llvmReturnTypes = patioReturnTypes.stream()
.map(patioReturnType -> patioTypeToLlvmType(patioReturnType, target))
@@ -1261,7 +1261,7 @@ public class PatioToLlvm {
private static LlvmType patioTypeToLlvmType(
PatioType patioType,
- LlvmTarget target
+ NativeTarget target
) {
return switch (patioType) {
case PatioBoolType patioBoolType ->
@@ -1286,7 +1286,7 @@ public class PatioToLlvm {
private static LlvmType patioDataLayoutToLlvmType(
PatioDataLayout layout,
- LlvmTarget target
+ NativeTarget target
) {
return switch (layout) {
case PatioDataLayoutArray patioDataLayoutArray ->
@@ -1328,7 +1328,7 @@ public class PatioToLlvm {
private static LlvmOperand patioDataLayoutToZeroedLlvmOperand(
PatioDataLayout layout,
- LlvmTarget target
+ NativeTarget target
) {
return switch (layout) {
case PatioDataLayoutArray patioDataLayoutArray ->
@@ -1378,7 +1378,7 @@ public class PatioToLlvm {
private static LlvmOperand patioDataValueToLlvmOperand(
PatioDataValue value,
- LlvmTarget target
+ NativeTarget target
) {
return switch (value) {
case PatioDataValueArray patioDataValueArray -> {
@@ -1432,7 +1432,7 @@ public class PatioToLlvm {
private static LlvmOperand sizeOf(
PatioDataLayout layout,
PatioType patioDestinationType,
- LlvmTarget target
+ NativeTarget target
) {
var llvmType = patioDataLayoutToLlvmType(
layout,
@@ -1445,7 +1445,7 @@ public class PatioToLlvm {
private static LlvmOperand sizeOf(
LlvmType type,
PatioType patioDestinationType,
- LlvmTarget target
+ NativeTarget target
) {
var sizePtr = new LlvmOperandGetElementPtr(
LlvmTypes.pointer(type),
@@ -1462,7 +1462,7 @@ public class PatioToLlvm {
PatioDataLayout patioDataLayout,
List<Integer> patioOffset,
PatioType patioDestinationType,
- LlvmTarget target
+ NativeTarget target
) {
var offsetPtr = new LlvmOperandGetElementPtr(
LlvmTypes.pointer(patioDataLayoutToLlvmType(
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContext.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContext.java
index ca419896..31154679 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContext.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContext.java
@@ -5,7 +5,7 @@ import org.pcollections.PStack;
import org.pcollections.PVector;
import org.shedlang.compiler.backends.NameAllocator;
import org.shedlang.compiler.backends.llvm.LlvmCodeGenLocalVariableSpace;
-import org.shedlang.compiler.backends.llvm.LlvmTarget;
+import org.shedlang.compiler.backends.targets.NativeTarget;
import org.shedlang.compiler.backends.llvm.ir.ast.LlvmBasicBlock;
import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmBrUnconditional;
import org.shedlang.compiler.backends.llvm.ir.ast.instructions.LlvmInstruction;
@@ -61,7 +61,7 @@ class PatioToLlvmFunctionContext {
this.loopLabels = loopLabels;
}
- LlvmTarget target() {
+ NativeTarget target() {
return this.moduleContext.target();
}
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmGlobalContext.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmGlobalContext.java
index 4077ce6e..292fdd5f 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmGlobalContext.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmGlobalContext.java
@@ -1,26 +1,26 @@
package org.shedlang.compiler.backends.llvm.codegen;
import org.pcollections.PMap;
-import org.shedlang.compiler.backends.llvm.LlvmTarget;
+import org.shedlang.compiler.backends.targets.NativeTarget;
import org.shedlang.compiler.util.P;
public class PatioToLlvmGlobalContext {
- public static PatioToLlvmGlobalContext empty(LlvmTarget target) {
+ public static PatioToLlvmGlobalContext empty(NativeTarget target) {
return new PatioToLlvmGlobalContext(target, P.map());
}
- private final LlvmTarget target;
+ private final NativeTarget target;
private final PMap<String, Integer> exceptionTypeNameToTag;
private PatioToLlvmGlobalContext(
- LlvmTarget target,
+ NativeTarget target,
PMap<String, Integer> exceptionTypeNameToTag
) {
this.target = target;
this.exceptionTypeNameToTag = exceptionTypeNameToTag;
}
- public LlvmTarget target() {
+ public NativeTarget target() {
return this.target;
}
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmModuleContext.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmModuleContext.java
index e5a36d14..abad8cdb 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmModuleContext.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmModuleContext.java
@@ -1,13 +1,13 @@
package org.shedlang.compiler.backends.llvm.codegen;
import org.pcollections.PVector;
-import org.shedlang.compiler.backends.llvm.LlvmTarget;
+import org.shedlang.compiler.backends.targets.NativeTarget;
import org.shedlang.compiler.backends.llvm.ir.ast.LlvmModule;
import org.shedlang.compiler.backends.llvm.ir.ast.LlvmTopLevelEntity;
import org.shedlang.compiler.util.P;
class PatioToLlvmModuleContext {
- static PatioToLlvmModuleContext empty(LlvmTarget target) {
+ static PatioToLlvmModuleContext empty(NativeTarget target) {
return of(PatioToLlvmGlobalContext.empty(target));
}
@@ -33,7 +33,7 @@ class PatioToLlvmModuleContext {
));
}
- LlvmTarget target() {
+ NativeTarget target() {
return this.globalContext.target();
}
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmTarget.java b/src/main/java/org/shedlang/compiler/backends/targets/NativeTarget.java
index 35159998..69fb9044 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmTarget.java
+++ b/src/main/java/org/shedlang/compiler/backends/targets/NativeTarget.java
@@ -1,11 +1,11 @@
-package org.shedlang.compiler.backends.llvm;
+package org.shedlang.compiler.backends.targets;
import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypeScalar;
import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes;
import java.util.List;
-public enum LlvmTarget {
+public enum NativeTarget {
AMD64("amd64", "x86_64-unknown-linux-gnu", LlvmTypes.INT_64, List.of()),
I686("i686", "i686-unknown-linux-gnu", LlvmTypes.INT_32, List.of("-m32"));
@@ -14,7 +14,7 @@ public enum LlvmTarget {
private final LlvmTypeScalar sizeT;
private final List<String> clangFlags;
- LlvmTarget(
+ NativeTarget(
String targetName,
String targetTriple,
LlvmTypeScalar sizeT,
diff --git a/src/main/java/org/shedlang/compiler/backends/ShedTarget.java b/src/main/java/org/shedlang/compiler/backends/targets/ShedTarget.java
index d99de131..e65129b5 100644
--- a/src/main/java/org/shedlang/compiler/backends/ShedTarget.java
+++ b/src/main/java/org/shedlang/compiler/backends/targets/ShedTarget.java
@@ -1,4 +1,4 @@
-package org.shedlang.compiler.backends;
+package org.shedlang.compiler.backends.targets;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmTarget.java b/src/main/java/org/shedlang/compiler/backends/targets/WasmTarget.java
index 920b1cab..42aeea5c 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmTarget.java
+++ b/src/main/java/org/shedlang/compiler/backends/targets/WasmTarget.java
@@ -1,4 +1,4 @@
-package org.shedlang.compiler.backends.wasm;
+package org.shedlang.compiler.backends.targets;
import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmIndexType;
import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmValueType;
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
index 0260f120..8edbc42f 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -3,6 +3,7 @@ package org.shedlang.compiler.backends.wasm;
import org.pcollections.PMap;
import org.pcollections.PStack;
import org.pcollections.PVector;
+import org.shedlang.compiler.backends.targets.WasmTarget;
import org.shedlang.compiler.backends.wasm.structure.ast.instructions.*;
import org.shedlang.compiler.backends.wasm.structure.ast.linking.WasmMemoryAddress;
import org.shedlang.compiler.backends.wasm.structure.ast.modules.*;
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 7b9411b4..d39cae99 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java
@@ -5,6 +5,7 @@ import org.shedlang.compiler.backends.Backend;
import org.shedlang.compiler.backends.PatioBackends;
import org.shedlang.compiler.backends.paths.PartialTargetPath;
import org.shedlang.compiler.backends.paths.TargetDir;
+import org.shedlang.compiler.backends.targets.WasmTarget;
import org.shedlang.compiler.backends.wasm.structure.WasmBinaryFormat;
import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmCall;
import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmDrop;
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackendFactory.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackendFactory.java
index 439bc05d..574c4220 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackendFactory.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackendFactory.java
@@ -2,7 +2,8 @@ package org.shedlang.compiler.backends.wasm;
import org.shedlang.compiler.backends.Backend;
import org.shedlang.compiler.backends.BackendFactory;
-import org.shedlang.compiler.backends.ShedTarget;
+import org.shedlang.compiler.backends.targets.ShedTarget;
+import org.shedlang.compiler.backends.targets.WasmTarget;
import java.util.Optional;
diff --git a/src/main/java/org/shedlang/compiler/cli/ShedCli.java b/src/main/java/org/shedlang/compiler/cli/ShedCli.java
index 9ae3fb75..2c3e7a78 100644
--- a/src/main/java/org/shedlang/compiler/cli/ShedCli.java
+++ b/src/main/java/org/shedlang/compiler/cli/ShedCli.java
@@ -6,7 +6,7 @@ import net.sourceforge.argparse4j.inf.ArgumentParserException;
import net.sourceforge.argparse4j.inf.Namespace;
import org.shedlang.compiler.ShedCompiler;
import org.shedlang.compiler.backends.Backends;
-import org.shedlang.compiler.backends.ShedTarget;
+import org.shedlang.compiler.backends.targets.ShedTarget;
import org.shedlang.compiler.errors.CompilerError;
import org.shedlang.compiler.sources.NullSource;
diff --git a/src/main/java/org/shedlang/compiler/cli/UnsupportedTargetError.java b/src/main/java/org/shedlang/compiler/cli/UnsupportedTargetError.java
index 265c2cdc..0a78433c 100644
--- a/src/main/java/org/shedlang/compiler/cli/UnsupportedTargetError.java
+++ b/src/main/java/org/shedlang/compiler/cli/UnsupportedTargetError.java
@@ -1,6 +1,6 @@
package org.shedlang.compiler.cli;
-import org.shedlang.compiler.backends.ShedTarget;
+import org.shedlang.compiler.backends.targets.ShedTarget;
import org.shedlang.compiler.errors.CompilerError;
import org.shedlang.compiler.sources.Sources;
diff --git a/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftAmd64Tests.java b/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftAmd64Tests.java
index c58e475c..e4095cad 100644
--- a/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftAmd64Tests.java
+++ b/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftAmd64Tests.java
@@ -1,12 +1,12 @@
package org.shedlang.compiler.backends.cranelift;
import org.junit.jupiter.api.Disabled;
-import org.shedlang.compiler.backends.llvm.LlvmTarget;
+import org.shedlang.compiler.backends.targets.NativeTarget;
@Disabled
public class PatioToCraneliftAmd64Tests extends PatioToCraneliftTests {
@Override
- protected LlvmTarget llvmTarget() {
- return LlvmTarget.AMD64;
+ protected NativeTarget target() {
+ return NativeTarget.AMD64;
}
}
diff --git a/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftTests.java b/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftTests.java
index 10f33a5e..dc7aea65 100644
--- a/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/cranelift/PatioToCraneliftTests.java
@@ -1,6 +1,6 @@
package org.shedlang.compiler.backends.cranelift;
-import org.shedlang.compiler.backends.llvm.LlvmTarget;
+import org.shedlang.compiler.backends.targets.NativeTarget;
import org.shedlang.compiler.backends.paths.PartialTargetPath;
import org.shedlang.compiler.patio.PatioCompilationUnit;
import org.shedlang.compiler.patio.PatioExampleTests;
@@ -47,7 +47,7 @@ public abstract class PatioToCraneliftTests extends PatioExampleTests {
Files.createDirectories(Path.of("tests-tmp"));
var workingDirectory = Files.createTempDirectory(Path.of("tests-tmp"), "PatioToCraneliftTests");
- var backend = CraneliftBackend.forTarget(this.llvmTarget());
+ var backend = CraneliftBackend.forTarget(this.target());
var objectFilePath = backend.compileCompilationUnit(
patio,
new PartialTargetPath(workingDirectory.resolve("main"))
@@ -55,7 +55,7 @@ public abstract class PatioToCraneliftTests extends PatioExampleTests {
var executablePath = workingDirectory.resolve("main");
- var runtime = ShedRuntime.defaultRuntime(LlvmTarget.AMD64.targetName());
+ var runtime = ShedRuntime.defaultRuntime(NativeTarget.AMD64.targetName());
backend.link(
List.of(
objectFilePath,
@@ -68,5 +68,5 @@ public abstract class PatioToCraneliftTests extends PatioExampleTests {
return TestProcessRunner.runCaptureOutput(List.of(executablePath.toString()));
}
- protected abstract LlvmTarget llvmTarget();
+ protected abstract NativeTarget target();
}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToAmd64Tests.java b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToAmd64Tests.java
index 472100e9..2170ab02 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToAmd64Tests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToAmd64Tests.java
@@ -1,8 +1,10 @@
package org.shedlang.compiler.backends.llvm;
+import org.shedlang.compiler.backends.targets.NativeTarget;
+
public class PatioToAmd64Tests extends PatioToLlvmTests {
@Override
- protected LlvmTarget llvmTarget() {
- return LlvmTarget.AMD64;
+ protected NativeTarget target() {
+ return NativeTarget.AMD64;
}
}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToI686Tests.java b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToI686Tests.java
index cff521d3..7d80a768 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToI686Tests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToI686Tests.java
@@ -1,8 +1,10 @@
package org.shedlang.compiler.backends.llvm;
+import org.shedlang.compiler.backends.targets.NativeTarget;
+
public class PatioToI686Tests extends PatioToLlvmTests {
@Override
- protected LlvmTarget llvmTarget() {
- return LlvmTarget.I686;
+ protected NativeTarget target() {
+ return NativeTarget.I686;
}
}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java
index 9a11c648..0237becb 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/PatioToLlvmTests.java
@@ -10,6 +10,7 @@ import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmOperandInt;
import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableGlobal;
import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes;
import org.shedlang.compiler.backends.paths.PartialTargetPath;
+import org.shedlang.compiler.backends.targets.NativeTarget;
import org.shedlang.compiler.patio.PatioCompilationUnit;
import org.shedlang.compiler.patio.PatioExampleTests;
import org.shedlang.compiler.runtime.ShedRuntime;
@@ -27,7 +28,7 @@ public abstract class PatioToLlvmTests extends PatioExampleTests {
protected ExecutionResult executeCompilationUnit(PatioCompilationUnit patio) throws IOException, InterruptedException {
var llvmModuleResult = PatioToLlvm.generateCompilationUnit(
patio,
- PatioToLlvmGlobalContext.empty(this.llvmTarget())
+ PatioToLlvmGlobalContext.empty(this.target())
);
var llvmModule = llvmModuleResult.value();
@@ -61,8 +62,8 @@ public abstract class PatioToLlvmTests extends PatioExampleTests {
var executablePath = workingDirectory.resolve("main");
- var runtime = ShedRuntime.defaultRuntime(llvmTarget().targetName());
- LlvmBackend.forTarget(this.llvmTarget()).link(
+ var runtime = ShedRuntime.defaultRuntime(target().targetName());
+ LlvmBackend.forTarget(this.target()).link(
List.of(
objectFilePath,
runtime.dir().resolve("libpatio_test.a")
@@ -74,5 +75,5 @@ public abstract class PatioToLlvmTests extends PatioExampleTests {
return TestProcessRunner.runCaptureOutput(List.of(executablePath.toString()));
}
- protected abstract LlvmTarget llvmTarget();
+ protected abstract NativeTarget target();
}
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java
index 7792519c..f6d31c46 100644
--- a/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvmFunctionContextTests.java
@@ -1,7 +1,7 @@
package org.shedlang.compiler.backends.llvm.codegen;
import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.backends.llvm.LlvmTarget;
+import org.shedlang.compiler.backends.targets.NativeTarget;
import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes;
@@ -15,7 +15,7 @@ import static org.zwobble.precisely.Matchers.isSequence;
public class PatioToLlvmFunctionContextTests {
@Test
public void whenThereAreNoInstructionsOutsideOfBasicBlockThenToBasicBlocksReturnsBasicBlocks() {
- var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.empty(LlvmTarget.AMD64));
+ var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.empty(NativeTarget.AMD64));
var addInstruction = LlvmIr.add(
LlvmIr.variableLocal("a"),
LlvmTypes.INT_64,
@@ -35,7 +35,7 @@ public class PatioToLlvmFunctionContextTests {
@Test
public void whenThereAreInstructionsOutsideOfBasicBlockThenToBasicBlocksThrowsException() {
- var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.empty(LlvmTarget.AMD64));
+ var context = PatioToLlvmFunctionContext.of(PatioToLlvmModuleContext.empty(NativeTarget.AMD64));
var addInstruction = LlvmIr.add(
LlvmIr.variableLocal("a"),
LlvmTypes.INT_64,
diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm32Tests.java b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm32Tests.java
index 44626dca..1e630963 100644
--- a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm32Tests.java
+++ b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm32Tests.java
@@ -1,5 +1,7 @@
package org.shedlang.compiler.backends.wasm;
+import org.shedlang.compiler.backends.targets.WasmTarget;
+
public class PatioToWasm32Tests extends PatioToWasmTests {
@Override
protected WasmTarget wasmTarget() {
diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm64Tests.java b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm64Tests.java
index d73bf2c8..c11a0e3e 100644
--- a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm64Tests.java
+++ b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasm64Tests.java
@@ -1,5 +1,7 @@
package org.shedlang.compiler.backends.wasm;
+import org.shedlang.compiler.backends.targets.WasmTarget;
+
public class PatioToWasm64Tests extends PatioToWasmTests {
@Override
protected WasmTarget wasmTarget() {
diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasmTests.java b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasmTests.java
index 946c49fb..833defa4 100644
--- a/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasmTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/wasm/PatioToWasmTests.java
@@ -1,5 +1,6 @@
package org.shedlang.compiler.backends.wasm;
+import org.shedlang.compiler.backends.targets.WasmTarget;
import org.shedlang.compiler.backends.wasm.structure.WasmBinaryFormat;
import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmCall;
import org.shedlang.compiler.backends.wasm.structure.ast.instructions.WasmExpression;
diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/Wasm32ExampleTests.java b/src/test/java/org/shedlang/compiler/backends/wasm/Wasm32ExampleTests.java
index 06c1b040..4c257e1b 100644
--- a/src/test/java/org/shedlang/compiler/backends/wasm/Wasm32ExampleTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/wasm/Wasm32ExampleTests.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.backends.wasm;
import org.shedlang.compiler.backends.Backend;
import org.shedlang.compiler.backends.ExampleTests;
+import org.shedlang.compiler.backends.targets.WasmTarget;
import java.util.List;
import java.util.Set;
diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/Wasm64ExampleTests.java b/src/test/java/org/shedlang/compiler/backends/wasm/Wasm64ExampleTests.java
index fdc1cf28..04e1d08c 100644
--- a/src/test/java/org/shedlang/compiler/backends/wasm/Wasm64ExampleTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/wasm/Wasm64ExampleTests.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.backends.wasm;
import org.shedlang.compiler.backends.Backend;
import org.shedlang.compiler.backends.ExampleTests;
+import org.shedlang.compiler.backends.targets.WasmTarget;
import java.util.List;
import java.util.Set;
diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/WasmTesting.java b/src/test/java/org/shedlang/compiler/backends/wasm/WasmTesting.java
index f4f86440..d437b56a 100644
--- a/src/test/java/org/shedlang/compiler/backends/wasm/WasmTesting.java
+++ b/src/test/java/org/shedlang/compiler/backends/wasm/WasmTesting.java
@@ -1,6 +1,7 @@
package org.shedlang.compiler.backends.wasm;
import org.pcollections.PVector;
+import org.shedlang.compiler.backends.targets.WasmTarget;
import org.shedlang.compiler.filesystem.ShedCompilerFiles;
import org.shedlang.compiler.util.P;
diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatTesting.java b/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatTesting.java
index 61e7eba1..60213f81 100644
--- a/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatTesting.java
+++ b/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatTesting.java
@@ -1,6 +1,6 @@
package org.shedlang.compiler.backends.wasm.structure.binary;
-import org.shedlang.compiler.backends.wasm.WasmTarget;
+import org.shedlang.compiler.backends.targets.WasmTarget;
import org.shedlang.compiler.backends.wasm.structure.ast.modules.WasmModule;
import org.shedlang.compiler.testing.TestProcessRunner;
import org.shedlang.compiler.util.P;