Allow using gcc for or1k.
authorTim 'mithro' Ansell <mithro@mithis.com>
Tue, 19 Apr 2016 03:29:07 +0000 (13:29 +1000)
committerTim 'mithro' Ansell <mithro@mithis.com>
Tue, 19 Apr 2016 04:03:24 +0000 (14:03 +1000)
 * Using CLANG can set by using CLANG=1 or CLANG=0 in the environment.
 * or1k continues to default to CLANG if environment is not net.

litex/soc/integration/cpu_interface.py

index 5e25f8f41b48e5a6821d330b1153d1937bea05f4..506f95d9e89f12e4bccd41792a41111663bfbb88 100644 (file)
@@ -1,3 +1,5 @@
+import os
+
 from litex.gen import *
 
 from litex.soc.interconnect.csr import CSRStatus
@@ -9,18 +11,30 @@ cpu_endianness = {
 }
 
 def get_cpu_mak(cpu):
+    clang = os.getenv("CLANG", "")
+    if clang != "":
+        clang = bool(int(clang))
+    else:
+        clang = None
+
     if cpu == "lm32":
+        assert not clang, "lm32 not supported with clang."
         triple = "lm32-elf"
         cpuflags = "-mbarrel-shift-enabled -mmultiply-enabled -mdivide-enabled -msign-extend-enabled"
-        clang = ""
     elif cpu == "or1k":
-        triple = "or1k-linux"
-        cpuflags = "-mhard-mul -mhard-div -mror -mffl1 -maddc"
-        clang = "1"
+        # Default to CLANG unless told otherwise
+        if clang is None:
+           clang = True
+
+        triple = "or1k-elf"
+        cpuflags = "-mhard-mul -mhard-div -mror"
+        if clang:
+            triple = "or1k-linux"
+            cpuflags += "-mffl1 -maddc"
     elif cpu == "riscv32":
+        assert not clang, "riscv32 not supported with clang."
         triple = "riscv32-unknown-elf"
         cpuflags = "-mno-save-restore"
-        clang = ""
     else:
         raise ValueError("Unsupported CPU type: "+cpu)
     return [
@@ -28,7 +42,7 @@ def get_cpu_mak(cpu):
         ("CPU", cpu),
         ("CPUFLAGS", cpuflags),
         ("CPUENDIANNESS", cpu_endianness[cpu]),
-        ("CLANG", clang)
+        ("CLANG", str(int(clang)))
     ]