aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-10-20 17:39:03 +0100
committerMichael Williamson <mike@zwobble.org>2023-10-20 17:39:03 +0100
commit005b955b8ff214c55501f7f8d3a0db09f0fb8f11 (patch)
tree041af9d82ae016c576009e78251ec19363054add /src/main/java
parent06a52c7230e5d95ed6ea3093a0312e6eaed43fe4 (diff)
Store main module on each bin
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/GenerateInstructionsBackend.java2
-rw-r--r--src/main/java/org/shedlang/compiler/backends/PatioBackend.java2
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java2
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java2
-rw-r--r--src/main/java/org/shedlang/compiler/config/BinConfig.java12
-rw-r--r--src/main/java/org/shedlang/compiler/config/ProjectConfig.java9
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");
}