From 957410553cb0ebdcfb00b933f893735be3c7e681 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 29 Mar 2026 09:40:06 +0100 Subject: Load target ISA in patio-to-cranelift --- .../backends/cranelift/CraneliftBackend.java | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src/main/java') 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 97d0a156..d66f9a92 100644 --- a/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/cranelift/CraneliftBackend.java @@ -18,7 +18,19 @@ import java.util.List; import static org.shedlang.compiler.util.processes.ProcessRunner.runInheritIo; public class CraneliftBackend { - public static Path compileCompilationUnit( + public static final CraneliftBackend AMD64 = forTarget(LlvmTarget.AMD64); + + public static CraneliftBackend forTarget(LlvmTarget target) { + return new CraneliftBackend(target); + } + + private final LlvmTarget target; + + private CraneliftBackend(LlvmTarget target) { + this.target = target; + } + + public Path compileCompilationUnit( PatioCompilationUnit patio, PartialTargetPath partialTargetPath ) throws IOException, InterruptedException { @@ -32,19 +44,21 @@ public class CraneliftBackend { runInheritIo(List.of( ShedCompilerFiles.getRoot().resolve("patio-to-cranelift/target/debug/patio-to-cranelift").toString(), - patioPath.toString() + patioPath.toString(), + "--target", + this.target.targetTriple() )); var objectFilePath = partialTargetPath.withExtension(".o"); return objectFilePath; } - public static void link( + public void link( List inputs, Path outputPath, ShedRuntime shedRuntime ) throws ProcessError, InterruptedException { // TODO: extract linking if it's not specific to LLVM. - LlvmBackend.forTarget(LlvmTarget.AMD64).link(inputs, outputPath, shedRuntime); + LlvmBackend.forTarget(this.target).link(inputs, outputPath, shedRuntime); } } -- cgit v1.2.3