From a35baa09222e3ce89fef37d15ebacd7e08efd525 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 28 Dec 2023 00:08:15 +0000 Subject: Set target in LlvmCompiler --- .../java/org/shedlang/compiler/backends/llvm/LlvmBackend.java | 7 ++++--- .../org/shedlang/compiler/backends/llvm/LlvmCompiler.java | 11 +++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'src/main/java') 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 89b48b5c..7404c8b1 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java @@ -29,7 +29,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; -import static org.shedlang.compiler.backends.llvm.LlvmCompiler.compileLlvmModule; import static org.shedlang.compiler.util.processes.ProcessRunner.runInheritIo; public class LlvmBackend implements Backend { @@ -58,6 +57,8 @@ public class LlvmBackend implements Backend { TypeInfos typeInfos, TargetDir targetDir ) throws IOException, InterruptedException { + var llvmCompiler = LlvmCompiler.forTarget(this.target); + var objectFilePaths = new ArrayList(); var globalContext = PatioToLlvmGlobalContext.EMPTY; @@ -74,7 +75,7 @@ public class LlvmBackend implements Backend { var llvmModule = llvmModuleResult.value(); globalContext = llvmModuleResult.context(); - var objectPath = compileLlvmModule( + var objectPath = llvmCompiler.compileLlvmModule( llvmModule, targetDir.namespace(namespace.namespaceName()) ); @@ -86,7 +87,7 @@ public class LlvmBackend implements Backend { var linkInputs = new ArrayList<>(objectFilePaths); var mainModule = this.generateMain(bin.mainNamespace(), typeInfos, globalContext); - var mainObjectPath = compileLlvmModule(mainModule, targetDir.bin(bin.name())); + var mainObjectPath = llvmCompiler.compileLlvmModule(mainModule, targetDir.bin(bin.name())); linkInputs.add(mainObjectPath); link(linkInputs, targetDir.topLevel(bin.name())); diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java index 0d8ab3cc..9dc6c5b6 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java @@ -15,10 +15,17 @@ import java.util.List; import static org.shedlang.compiler.util.processes.ProcessRunner.runInheritIo; public class LlvmCompiler { - private LlvmCompiler() { + public static LlvmCompiler forTarget(LlvmTarget target) { + return new LlvmCompiler(target); } - public static Path compileLlvmModule( + private final LlvmTarget target; + + private LlvmCompiler(LlvmTarget target) { + this.target = target; + } + + public Path compileLlvmModule( LlvmModule llvmModule, PartialTargetPath targetPath ) throws IOException, InterruptedException { -- cgit v1.2.3