aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-28 00:20:45 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-28 00:20:45 +0000
commit08d8d6c651baf72c86714b46df3794ee8227d98a (patch)
treef99a96a040450c67d84c1ce748e1c23da3c9fc14 /src/main/java
parentc0cbe0057519db843a1a4ce2beb97e0ff54ece17 (diff)
Add clang flags to support linking on i686
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java2
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmTarget.java14
2 files changed, 13 insertions, 3 deletions
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 c15d431c..4a74b6d9 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java
@@ -113,6 +113,8 @@ public class LlvmBackend implements Backend {
.toString()
);
+ clangArgs.addAll(this.target.clangFlags());
+
runInheritIo(clangArgs);
}
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmTarget.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmTarget.java
index cf2d09ad..ea462382 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmTarget.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmTarget.java
@@ -1,15 +1,19 @@
package org.shedlang.compiler.backends.llvm;
+import java.util.List;
+
public enum LlvmTarget {
- AMD64("amd64", "x86_64-unknown-linux-gnu"),
- I686("i686", "i686-unknown-linux-gnu");
+ AMD64("amd64", "x86_64-unknown-linux-gnu", List.of()),
+ I686("i686", "i686-unknown-linux-gnu", List.of("-m32"));
private final String targetName;
private final String targetTriple;
+ private final List<String> clangFlags;
- LlvmTarget(String targetName, String targetTriple) {
+ LlvmTarget(String targetName, String targetTriple, List<String> clangFlags) {
this.targetName = targetName;
this.targetTriple = targetTriple;
+ this.clangFlags = clangFlags;
}
public String targetName() {
@@ -19,4 +23,8 @@ public enum LlvmTarget {
public String targetTriple() {
return this.targetTriple;
}
+
+ public List<String> clangFlags() {
+ return this.clangFlags;
+ }
}