From 005b955b8ff214c55501f7f8d3a0db09f0fb8f11 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 20 Oct 2023 17:39:03 +0100 Subject: Store main module on each bin --- .../compiler/backends/GenerateInstructionsBackend.java | 2 -- .../java/org/shedlang/compiler/backends/PatioBackend.java | 2 -- .../org/shedlang/compiler/backends/llvm/LlvmBackend.java | 2 +- .../org/shedlang/compiler/backends/wasm/WasmBackend.java | 2 +- src/main/java/org/shedlang/compiler/config/BinConfig.java | 12 ++++++++++-- .../java/org/shedlang/compiler/config/ProjectConfig.java | 9 --------- 6 files changed, 12 insertions(+), 17 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/backends/GenerateInstructionsBackend.java b/src/main/java/org/shedlang/compiler/backends/GenerateInstructionsBackend.java index 5c27757c..dd33ae89 100644 --- a/src/main/java/org/shedlang/compiler/backends/GenerateInstructionsBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/GenerateInstructionsBackend.java @@ -15,8 +15,6 @@ public class GenerateInstructionsBackend implements Backend { TypeInfos typeInfos, Path targetDir ) { - System.out.println("main: " + config.main()); - for (var namespace : namespaces) { var namespaceName = namespace.namespaceName(); var instructions = namespace.instructions(); diff --git a/src/main/java/org/shedlang/compiler/backends/PatioBackend.java b/src/main/java/org/shedlang/compiler/backends/PatioBackend.java index a647e842..e4edc9bf 100644 --- a/src/main/java/org/shedlang/compiler/backends/PatioBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/PatioBackend.java @@ -17,8 +17,6 @@ public class PatioBackend implements Backend { TypeInfos typeInfos, Path targetDir ) { - System.out.println("main: " + config.main()); - var context = PatioCodeGenContext.forTypeInfos(typeInfos); for (var namespace : namespaces) { 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 77159c8c..80015357 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java @@ -64,7 +64,7 @@ public class LlvmBackend implements Backend { } for (var bin : config.bins()) { - var mainModule = this.generateMain(config.main(), typeInfos); + var mainModule = this.generateMain(bin.mainModule(), typeInfos); var mainObjectPath = compileLlvmModule(mainModule, targetDir.resolve("bins"), bin.name()); var gccArgs = new ArrayList(); 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 218a6f69..06e4bc25 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java @@ -66,7 +66,7 @@ public class WasmBackend implements Backend { ldArgs.add(objectFilePath.toString()); } - var mainModule = this.generateMain(config.main(), typeInfos); + var mainModule = this.generateMain(bin.mainModule(), typeInfos); var mainObjectPath = writeObjectFile(mainModule, targetDir.resolve("bins"), bin.name()); ldArgs.add(mainObjectPath.toString()); diff --git a/src/main/java/org/shedlang/compiler/config/BinConfig.java b/src/main/java/org/shedlang/compiler/config/BinConfig.java index c3e70f2d..1d2a0677 100644 --- a/src/main/java/org/shedlang/compiler/config/BinConfig.java +++ b/src/main/java/org/shedlang/compiler/config/BinConfig.java @@ -1,11 +1,19 @@ package org.shedlang.compiler.config; +import org.shedlang.compiler.types.NamespaceName; import org.tomlj.TomlTable; -public record BinConfig(String name) { +import java.util.Arrays; + +public record BinConfig(String name, NamespaceName mainModule) { public static BinConfig fromToml(TomlTable table) { var name = table.getString("name"); - return new BinConfig(name); + var mainModuleString = table.getString("main-module"); + // TODO: error checking + // TODO: extract namespace name parsing + var mainModule = new NamespaceName(Arrays.asList(mainModuleString.split("/"))); + + return new BinConfig(name, mainModule); } } diff --git a/src/main/java/org/shedlang/compiler/config/ProjectConfig.java b/src/main/java/org/shedlang/compiler/config/ProjectConfig.java index 1d6a9a9f..0e4d22e2 100644 --- a/src/main/java/org/shedlang/compiler/config/ProjectConfig.java +++ b/src/main/java/org/shedlang/compiler/config/ProjectConfig.java @@ -1,12 +1,10 @@ package org.shedlang.compiler.config; -import org.shedlang.compiler.types.NamespaceName; import org.tomlj.Toml; import org.tomlj.TomlTable; import java.io.IOException; import java.nio.file.Path; -import java.util.Arrays; import java.util.List; import java.util.stream.IntStream; @@ -28,13 +26,6 @@ public class ProjectConfig { this.config = config; } - public NamespaceName main() { - var string = config.getString("shed.main"); - // TODO: error checking - // TODO: extract namespace name parsing - return new NamespaceName(Arrays.asList(string.split("/"))); - } - public Path targetDir() { return root.resolve("target"); } -- cgit v1.2.3