diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-10-20 17:39:03 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-10-20 17:39:03 +0100 |
| commit | 005b955b8ff214c55501f7f8d3a0db09f0fb8f11 (patch) | |
| tree | 041af9d82ae016c576009e78251ec19363054add /src/main/java | |
| parent | 06a52c7230e5d95ed6ea3093a0312e6eaed43fe4 (diff) | |
Store main module on each bin
Diffstat (limited to 'src/main/java')
6 files changed, 12 insertions, 17 deletions
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<String>(); 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"); } |
