Made optimisation flags overridable per-platform.
authorDavid Cock <david.cock@inf.ethz.ch>
Fri, 28 Aug 2015 14:55:59 +0000 (16:55 +0200)
committerDavid Cock <david.cock@inf.ethz.ch>
Fri, 28 Aug 2015 14:55:59 +0000 (16:55 +0200)
armv7-m needs to avoid -O2.

Signed-off-by: David Cock <david.cock@inf.ethz.ch>

18 files changed:
hake/ARM11MP.hs
hake/ARMv5.hs
hake/ARMv7.hs
hake/ARMv7_M.hs
hake/ARMv8.hs
hake/ArchDefaults.hs
hake/Config.hs.arm-gcc-4.9-2014q4
hake/Config.hs.arm-gcc-4.9-2015q1
hake/Config.hs.arm-gcc-4.9-2015q2
hake/Config.hs.linaro-gcc-4.8-2015.06
hake/Config.hs.linaro-gcc-4.9-2014.11
hake/Config.hs.linaro-gcc-4.9-2015.02
hake/Config.hs.linaro-gcc-4.9-2015.05
hake/Config.hs.ubuntu
hake/K1om.hs
hake/X86_32.hs
hake/X86_64.hs
hake/XScale.hs

index a5b8f23..4e3efc8 100644 (file)
@@ -75,12 +75,12 @@ options = (ArchDefaults.options arch archFamily) {
 --
 -- Compilers
 --
-cCompiler = ArchDefaults.cCompiler arch compiler
-cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler
+cCompiler = ArchDefaults.cCompiler arch compiler Config.cOptFlags
+cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler Config.cOptFlags
 makeDepend = ArchDefaults.makeDepend arch compiler
 makeCxxDepend  = ArchDefaults.makeCxxDepend arch cxxcompiler
-cToAssembler = ArchDefaults.cToAssembler arch compiler
-assembler = ArchDefaults.assembler arch compiler
+cToAssembler = ArchDefaults.cToAssembler arch compiler Config.cOptFlags
+assembler = ArchDefaults.assembler arch compiler Config.cOptFlags
 archive = ArchDefaults.archive arch
 linker = ArchDefaults.linker arch compiler
 cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
@@ -138,8 +138,9 @@ linkKernel opts objs libs kbin =
     let linkscript = "/kernel/linker.lds"
         kbootable  = kbin ++ ".bin"
     in
-        Rules [ Rule ([ Str compiler, Str Config.cOptFlags,
-                      NStr "-T", In BuildTree arch linkscript,
+        Rules [ Rule ([ Str compiler ] ++
+                    map Str Config.cOptFlags ++
+                    [ NStr "-T", In BuildTree arch linkscript,
                       Str "-o", Out arch kbin
                     ]
                     ++ (optLdFlags opts)
index 307c9fc..0a27488 100644 (file)
@@ -90,12 +90,12 @@ options = (ArchDefaults.options arch archFamily) {
 --
 -- Compilers
 --
-cCompiler = ArchDefaults.cCompiler arch compiler
-cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler
+cCompiler = ArchDefaults.cCompiler arch compiler Config.cOptFlags
+cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler Config.cOptFlags
 makeDepend = ArchDefaults.makeDepend arch compiler
 makeCxxDepend  = ArchDefaults.makeCxxDepend arch cxxcompiler
-cToAssembler = ArchDefaults.cToAssembler arch compiler
-assembler = ArchDefaults.assembler arch compiler
+cToAssembler = ArchDefaults.cToAssembler arch compiler Config.cOptFlags
+assembler = ArchDefaults.assembler arch compiler Config.cOptFlags
 archive = ArchDefaults.archive arch
 linker = ArchDefaults.linker arch compiler
 cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
@@ -158,8 +158,9 @@ linkKernel opts objs libs kbin =
     let linkscript = "/kernel/linker.lds"
         kbootable  = kbin ++ ".bin"
     in
-        Rules [ Rule ([ Str compiler, Str Config.cOptFlags,
-                      NStr "-T", In BuildTree arch linkscript,
+        Rules [ Rule ([ Str compiler ] ++
+                      map Str Config.cOptFlags ++
+                    [ NStr "-T", In BuildTree arch linkscript,
                       Str "-o", Out arch kbin
                     ]
                     ++ (optLdFlags opts)
index 204d3a7..ab7ab19 100644 (file)
@@ -95,12 +95,12 @@ options = (ArchDefaults.options arch archFamily) {
 --
 -- Compilers
 --
-cCompiler = ArchDefaults.cCompiler arch compiler
-cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler
+cCompiler = ArchDefaults.cCompiler arch compiler Config.cOptFlags
+cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler Config.cOptFlags
 makeDepend = ArchDefaults.makeDepend arch compiler
 makeCxxDepend  = ArchDefaults.makeCxxDepend arch cxxcompiler
-cToAssembler = ArchDefaults.cToAssembler arch compiler
-assembler = ArchDefaults.assembler arch compiler
+cToAssembler = ArchDefaults.cToAssembler arch compiler Config.cOptFlags
+assembler = ArchDefaults.assembler arch compiler Config.cOptFlags
 archive = ArchDefaults.archive arch
 linker = ArchDefaults.linker arch compiler
 cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
@@ -169,8 +169,9 @@ linkKernel opts objs libs name =
         kbinary    = "/sbin/" ++ name
         kbootable  = kbinary ++ ".bin"
     in
-        Rules [ Rule ([ Str compiler, Str Config.cOptFlags,
-                      NStr "-T", In BuildTree arch linkscript,
+        Rules [ Rule ([ Str compiler ] ++
+                    map Str Config.cOptFlags ++
+                    [ NStr "-T", In BuildTree arch linkscript,
                       Str "-o", Out arch kbinary,
                       NStr "-Wl,-Map,", Out arch kernelmap
                     ]
index 9a7e46e..bce1e4f 100644 (file)
@@ -16,6 +16,7 @@ module ARMv7_M where
 import HakeTypes
 import qualified Config
 import qualified ArchDefaults
+import Data.List
 
 -------------------------------------------------------------------------
 --
@@ -26,12 +27,12 @@ import qualified ArchDefaults
 arch = "armv7-m"
 archFamily = "arm"
 
-compiler    = Config.arm_cc
-objcopy     = Config.arm_objcopy
-objdump     = Config.arm_objdump
-ar          = Config.arm_ar
-ranlib      = Config.arm_ranlib
-cxxcompiler = Config.arm_cxx
+compiler    = Config.thumb_cc
+objcopy     = Config.thumb_objcopy
+objdump     = Config.thumb_objdump
+ar          = Config.thumb_ar
+ranlib      = Config.thumb_ranlib
+cxxcompiler = Config.thumb_cxx
 
 ourCommonFlags = [ Str "-fno-unwind-tables",
                    Str "-Wno-packed-bitfield-compat",
@@ -96,12 +97,16 @@ options = (ArchDefaults.options arch archFamily) {
 --
 -- Compilers
 --
-cCompiler = ArchDefaults.cCompiler arch compiler
-cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler
+
+-- Heavy optimisation causes GCC to fail with unresolvable register spill.
+v7m_optFlags = (Config.cOptFlags \\ ["-O2", "-O3"]) ++ ["-Os"]
+
+cCompiler = ArchDefaults.cCompiler arch compiler v7m_optFlags
+cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler v7m_optFlags
 makeDepend = ArchDefaults.makeDepend arch compiler
 makeCxxDepend  = ArchDefaults.makeCxxDepend arch cxxcompiler
-cToAssembler = ArchDefaults.cToAssembler arch compiler
-assembler = ArchDefaults.assembler arch compiler
+cToAssembler = ArchDefaults.cToAssembler arch compiler v7m_optFlags
+assembler = ArchDefaults.assembler arch compiler v7m_optFlags
 archive = ArchDefaults.archive arch
 linker = ArchDefaults.linker arch compiler
 cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
@@ -171,8 +176,9 @@ linkKernel opts objs libs name =
         kbinary    = "/sbin/" ++ name
         kbootable  = kbinary ++ ".bin"
     in
-        Rules [ Rule ([ Str compiler, Str Config.cOptFlags,
-                      NStr "-T", In BuildTree arch linkscript,
+        Rules [ Rule ([ Str compiler ] ++
+                      map Str Config.cOptFlags ++
+                    [ NStr "-T", In BuildTree arch linkscript,
                       Str "-o", Out arch kbinary,
                       NStr "-Wl,-Map,", Out arch kernelmap
                     ]
index fdc7297..a7c41aa 100644 (file)
@@ -92,12 +92,12 @@ options = (ArchDefaults.options arch archFamily) {
 --
 -- Compilers
 --
-cCompiler = ArchDefaults.cCompiler arch compiler
-cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler
+cCompiler = ArchDefaults.cCompiler arch compiler Config.cOptFlags
+cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler Config.cOptFlags
 makeDepend = ArchDefaults.makeDepend arch compiler
 makeCxxDepend  = ArchDefaults.makeCxxDepend arch cxxcompiler
-cToAssembler = ArchDefaults.cToAssembler arch compiler
-assembler = ArchDefaults.assembler arch compiler
+cToAssembler = ArchDefaults.cToAssembler arch compiler Config.cOptFlags
+assembler = ArchDefaults.assembler arch compiler Config.cOptFlags
 archive = ArchDefaults.archive arch
 linker = ArchDefaults.linker arch compiler
 cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
@@ -157,8 +157,9 @@ linkKernel opts objs libs name =
         kbinary    = "/sbin/" ++ name
         kbootable  = kbinary ++ ".bin"
     in
-        Rules [ Rule ([ Str compiler, Str Config.cOptFlags,
-                      NStr "-T", In BuildTree arch linkscript,
+        Rules [ Rule ([ Str compiler ] ++
+                    map Str Config.cOptFlags ++
+                    [ NStr "-T", In BuildTree arch linkscript,
                       Str "-o", Out arch kbinary,
                       NStr "-Wl,-Map,", Out arch kernelmap
                     ]
index a122346..bbab7d9 100644 (file)
@@ -71,15 +71,15 @@ cStdIncs arch archFamily =
       NoDep BuildTree arch "." ]
                       
 ldFlags arch = 
-    [ Str Config.cOptFlags,
-      In InstallTree arch "/lib/crt0.o",
+    map Str Config.cOptFlags ++
+    [ In InstallTree arch "/lib/crt0.o",
       In InstallTree arch "/lib/crtbegin.o",
       Str "-fno-builtin",
       Str "-nostdlib" ]
           
 ldCxxFlags arch = 
-    [ Str Config.cOptFlags,
-      In InstallTree arch "/lib/crt0.o",
+    map Str Config.cOptFlags ++
+    [ In InstallTree arch "/lib/crt0.o",
       In InstallTree arch "/lib/crtbegin.o",
       Str "-fno-builtin",
       Str "-nostdlib" ]
@@ -142,7 +142,9 @@ options arch archFamily = Options {
 --
 -- C compiler
 --
-cCompiler arch compiler opts phase src obj = 
+cCompiler :: String -> String -> [String] -> Options -> String ->
+             String -> String -> [RuleToken]
+cCompiler arch compiler opt_flags opts phase src obj = 
     let incls = (extraIncludes opts) ++ (optIncludes opts)
         flags = (optFlags opts) 
                 ++ (optDefines opts)
@@ -150,24 +152,27 @@ cCompiler arch compiler opts phase src obj =
                 ++ [ Str f | f <- extraDefines opts ]
         deps = (optDependencies opts) ++ (extraDependencies opts)
     in
-      [ Str compiler ] ++ flags ++ [ Str Config.cOptFlags ]
+      [ Str compiler ] ++ flags ++ (map Str opt_flags)
       ++ concat [ [ NStr "-I", i ] | i <- incls ] 
       ++ [ Str "-o", Out arch obj,
            Str "-c", In (if phase == "src" then SrcTree else BuildTree) phase src ]
       ++ deps
+
 --
 -- the C preprocessor, like C compiler but with -E
 --
-cPreprocessor arch compiler opts phase src obj = 
+cPreprocessor :: String -> String -> [String] -> Options -> String ->
+                 String -> String -> [RuleToken]
+cPreprocessor arch compiler opt_flags opts phase src obj = 
     let incls = (extraIncludes opts) ++ (optIncludes opts)
         flags = (optFlags opts) 
                 ++ (optDefines opts)
                 ++ [ Str f | f <- extraFlags opts ]
                 ++ [ Str f | f <- extraDefines opts ]
         deps = (optDependencies opts) ++ (extraDependencies opts)
-        cOptFlags = unwords ((words Config.cOptFlags) \\ ["-g"])
+        cOptFlags = opt_flags \\ ["-g"]
     in
-      [ Str compiler ] ++ flags ++ [ Str cOptFlags ]
+      [ Str compiler ] ++ flags ++ (map Str cOptFlags)
       ++ concat [ [ NStr "-I", i ] | i <- incls ] 
       ++ [ Str "-o", Out arch obj,
            Str "-E", In (if phase == "src" then SrcTree else BuildTree) phase src ]
@@ -176,7 +181,7 @@ cPreprocessor arch compiler opts phase src obj =
 --
 -- C++ compiler
 --
-cxxCompiler arch cxxcompiler opts phase src obj = 
+cxxCompiler arch cxxcompiler opt_flags opts phase src obj = 
     let incls = (extraIncludes opts) ++ (optIncludes opts)
         flags = (optCxxFlags opts) 
                 ++ (optDefines opts)
@@ -184,7 +189,7 @@ cxxCompiler arch cxxcompiler opts phase src obj =
                 ++ [ Str f | f <- extraDefines opts ]
         deps = (optDependencies opts) ++ (extraDependencies opts)
     in
-      [ Str cxxcompiler ] ++ flags ++ [ Str Config.cOptFlags ]
+      [ Str cxxcompiler ] ++ flags ++ (map Str opt_flags)
       ++ concat [ [ NStr "-I", i ] | i <- incls ] 
       ++ [ Str "-o", Out arch obj,
            Str "-c", In (if phase == "src" then SrcTree else BuildTree) phase src ]
@@ -233,16 +238,19 @@ makeCxxDepend arch cxxcompiler opts phase src obj depfile =
 --
 -- Compile a C program to assembler
 --
-cToAssembler :: String -> String -> Options -> String -> String -> String -> String -> [ RuleToken ]
-cToAssembler arch compiler  opts phase src afile objdepfile =
+cToAssembler :: String -> String -> [String] -> Options -> String -> String ->
+                String -> String -> [ RuleToken ]
+cToAssembler arch compiler opt_flags opts phase src afile objdepfile =
     let incls = (extraIncludes opts) ++ (optIncludes opts)
         flags = (optFlags opts) 
                 ++ (optDefines opts)
                 ++ [ Str f | f <- extraFlags opts ]
                 ++ [ Str f | f <- extraDefines opts ]
-        deps = [ Dep BuildTree arch objdepfile ] ++ (optDependencies opts) ++ (extraDependencies opts)
+        deps = [ Dep BuildTree arch objdepfile ] ++
+               (optDependencies opts) ++
+               (extraDependencies opts)
     in
-      [ Str compiler ] ++ flags ++ [ Str Config.cOptFlags ]
+      [ Str compiler ] ++ flags ++ (map Str opt_flags)
       ++ concat [ [ NStr "-I", i ] | i <- incls ] 
       ++ [ Str "-o ", Out arch afile, 
            Str "-S ", In (if phase == "src" then SrcTree else BuildTree) phase src ]
@@ -251,8 +259,9 @@ cToAssembler arch compiler  opts phase src afile objdepfile =
 --
 -- Assemble an assembly language file
 --
-assembler :: String -> String -> Options -> String -> String -> [ RuleToken ]
-assembler arch compiler opts src obj = 
+assembler :: String -> String -> [ String ] -> Options -> String ->
+             String -> [ RuleToken ]
+assembler arch compiler opt_flags opts src obj = 
     let incls = (extraIncludes opts) ++ (optIncludes opts)
         flags = (optFlags opts) 
                 ++ (optDefines opts)
@@ -260,7 +269,7 @@ assembler arch compiler opts src obj =
                 ++ [ Str f | f <- extraDefines opts ]
         deps = (optDependencies opts) ++ (extraDependencies opts)
     in
-      [ Str compiler ] ++ flags ++ [ Str Config.cOptFlags ]
+      [ Str compiler ] ++ flags ++ (map Str opt_flags)
       ++ concat [ [ NStr "-I", i ] | i <- incls ] 
       ++ [ Str "-o ", Out arch obj, Str "-c ", In SrcTree "src" src ]
       ++ deps
index 045bcbe..17d119a 100644 (file)
@@ -62,8 +62,8 @@ architectures :: [String]
 -- architectures = undefined -- (set by hake.sh, see end of file)
 
 -- Optimisation flags (-Ox -g etc.) passed to compiler
-cOptFlags :: String
-cOptFlags = "-g -O2"
+cOptFlags :: [String]
+cOptFlags = ["-g", "-O2"]
 
 -- Selects which libc to compile with, "oldc" or "newlib"
 libc :: String
index 6aa7ad5..6116ad9 100644 (file)
@@ -62,8 +62,8 @@ architectures :: [String]
 -- architectures = undefined -- (set by hake.sh, see end of file)
 
 -- Optimisation flags (-Ox -g etc.) passed to compiler
-cOptFlags :: String
-cOptFlags = "-g -O2"
+cOptFlags :: [String]
+cOptFlags = ["-g", "-O2"]
 
 -- Selects which libc to compile with, "oldc" or "newlib"
 libc :: String
index 093f5b5..361c957 100644 (file)
@@ -62,8 +62,8 @@ architectures :: [String]
 -- architectures = undefined -- (set by hake.sh, see end of file)
 
 -- Optimisation flags (-Ox -g etc.) passed to compiler
-cOptFlags :: String
-cOptFlags = "-g -O2"
+cOptFlags :: [String]
+cOptFlags = ["-g", "-O2"]
 
 -- Selects which libc to compile with, "oldc" or "newlib"
 libc :: String
index a37e586..82f23b8 100644 (file)
@@ -62,8 +62,8 @@ architectures :: [String]
 -- architectures = undefined -- (set by hake.sh, see end of file)
 
 -- Optimisation flags (-Ox -g etc.) passed to compiler
-cOptFlags :: String
-cOptFlags = "-g -O2"
+cOptFlags :: [String]
+cOptFlags = ["-g", "-O2"]
 
 -- Selects which libc to compile with, "oldc" or "newlib"
 libc :: String
index edf6eb2..8ef08b5 100644 (file)
@@ -62,8 +62,8 @@ architectures :: [String]
 -- architectures = undefined -- (set by hake.sh, see end of file)
 
 -- Optimisation flags (-Ox -g etc.) passed to compiler
-cOptFlags :: String
-cOptFlags = "-g -O2"
+cOptFlags :: [String]
+cOptFlags = ["-g", "-O2"]
 
 -- Selects which libc to compile with, "oldc" or "newlib"
 libc :: String
index 1760ab2..de3983b 100644 (file)
@@ -62,8 +62,8 @@ architectures :: [String]
 -- architectures = undefined -- (set by hake.sh, see end of file)
 
 -- Optimisation flags (-Ox -g etc.) passed to compiler
-cOptFlags :: String
-cOptFlags = "-g -O2"
+cOptFlags :: [String]
+cOptFlags = ["-g", "-O2"]
 
 -- Selects which libc to compile with, "oldc" or "newlib"
 libc :: String
index d461e74..57b5ff0 100644 (file)
@@ -62,8 +62,8 @@ architectures :: [String]
 -- architectures = undefined -- (set by hake.sh, see end of file)
 
 -- Optimisation flags (-Ox -g etc.) passed to compiler
-cOptFlags :: String
-cOptFlags = "-g -O2"
+cOptFlags :: [String]
+cOptFlags = ["-g", "-O2"]
 
 -- Selects which libc to compile with, "oldc" or "newlib"
 libc :: String
index 40431ba..00d57ae 100644 (file)
@@ -25,6 +25,7 @@ import System.FilePath
 --
 findTool path prefix tool = path </> (prefix ++ tool)
 
+-- ARM toolchain
 arm_gnu_path = ""
 arm_gnu_prefix = "arm-linux-gnueabi-"
 arm_gnu_tool = findTool arm_gnu_path arm_gnu_prefix
@@ -36,9 +37,27 @@ arm_ar       = arm_gnu_tool "ar"
 arm_ranlib   = arm_gnu_tool "ranlib"
 arm_cxx      = arm_gnu_tool "g++"
 
-x86_cc       = "gcc"
-x86_cxx      = "g++"
+-- ARM thumb (e.g. -M profile) toolchain
+thumb_gnu_path = "/opt/gcc-arm-none-eabi-4_6-2012q4/bin"
+thumb_gnu_prefix = "arm-none-eabi-"
+thumb_gnu_tool = findTool thumb_gnu_path thumb_gnu_prefix
 
+thumb_cc       = thumb_gnu_tool "gcc"
+thumb_objcopy  = thumb_gnu_tool "objcopy"
+thumb_objdump  = thumb_gnu_tool "objdump"
+thumb_ar       = thumb_gnu_tool "ar"
+thumb_ranlib   = thumb_gnu_tool "ranlib"
+thumb_cxx      = thumb_gnu_tool "g++"
+
+-- X86 (32/64) toolchain
+x86_gnu_path = ""
+x86_gnu_prefix = ""
+x86_gnu_tool = findTool x86_gnu_path x86_gnu_prefix
+
+x86_cc       = x86_gnu_tool "gcc"
+x86_cxx      = x86_gnu_tool "g++"
+
+-- Xeon Phi toolchain
 k1om_gnu_path = ""
 k1om_gnu_prefix = "k1om-mpss-linux-"
 k1om_gnu_tool = findTool k1om_gnu_path k1om_gnu_prefix
@@ -68,8 +87,8 @@ architectures :: [String]
 -- architectures = undefined -- (set by hake.sh, see end of file)
 
 -- Optimisation flags (-Ox -g etc.) passed to compiler
-cOptFlags :: String
-cOptFlags = "-g -O2"
+cOptFlags :: [String]
+cOptFlags = ["-g", "-O2"]
 
 -- Selects which libc to compile with, "oldc" or "newlib"
 libc :: String
index 9f148cf..14e2736 100644 (file)
@@ -166,12 +166,12 @@ kernelLdFlags = [ Str s | s <- [ "-Wl,-N ",
 --
 -- Compilers
 --
-cCompiler = ArchDefaults.cCompiler arch compiler
-cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler
+cCompiler = ArchDefaults.cCompiler arch compiler Config.cOptFlags
+cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler Config.cOptFlags
 makeDepend = ArchDefaults.makeDepend arch compiler
 makeCxxDepend  = ArchDefaults.makeCxxDepend arch cxxcompiler
-cToAssembler = ArchDefaults.cToAssembler arch compiler
-assembler = ArchDefaults.assembler arch compiler
+cToAssembler = ArchDefaults.cToAssembler arch compiler Config.cOptFlags
+assembler = ArchDefaults.assembler arch compiler Config.cOptFlags
 archive = ArchDefaults.archive arch
 linker = ArchDefaults.linker arch compiler
 cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
@@ -183,8 +183,9 @@ linkKernel :: Options -> [String] -> [String]  -> String -> HRule
 linkKernel opts objs libs kbin = 
     let linkscript = "/kernel/linker.lds"
     in
-      Rules [ Rule ([ Str compiler, Str Config.cOptFlags,
-                      NStr "-T", In BuildTree arch "/kernel/linker.lds",
+      Rules [ Rule ([ Str compiler ] ++
+                    map Str Config.cOptFlags ++
+                    [ NStr "-T", In BuildTree arch "/kernel/linker.lds",
                       Str "-o", Out arch kbin 
                     ]
                     ++ (optLdFlags opts)
index c1eef9d..865dd99 100644 (file)
@@ -110,12 +110,12 @@ kernelLdFlags = [ Str s | s <- [ "-Wl,-N",
 --
 -- Compilers
 --
-cCompiler = ArchDefaults.cCompiler arch compiler
-cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler
+cCompiler = ArchDefaults.cCompiler arch compiler Config.cOptFlags
+cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler Config.cOptFlags
 makeDepend = ArchDefaults.makeDepend arch compiler
 makeCxxDepend  = ArchDefaults.makeCxxDepend arch cxxcompiler
-cToAssembler = ArchDefaults.cToAssembler arch compiler
-assembler = ArchDefaults.assembler arch compiler
+cToAssembler = ArchDefaults.cToAssembler arch compiler Config.cOptFlags
+assembler = ArchDefaults.assembler arch compiler Config.cOptFlags
 archive = ArchDefaults.archive arch
 linker = ArchDefaults.linker arch compiler
 cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
@@ -125,8 +125,9 @@ cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
 -- 
 linkKernel :: Options -> [String] -> [String] -> String -> HRule
 linkKernel opts objs libs kbin = 
-    Rules [ Rule ([ Str compiler, Str Config.cOptFlags,
-                    NStr "-T", In BuildTree arch "/kernel/linker.lds",
+    Rules [ Rule ([ Str compiler ] ++
+                    map Str Config.cOptFlags ++
+                  [ NStr "-T", In BuildTree arch "/kernel/linker.lds",
                     Str "-o", Out arch kbin 
                   ]
                   ++ (optLdFlags opts)
index 270168e..4e24168 100644 (file)
@@ -115,12 +115,12 @@ kernelLdFlags = [ Str s | s <- [ "-Wl,-N",
 --
 -- Compilers
 --
-cCompiler = ArchDefaults.cCompiler arch compiler
-cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler
+cCompiler = ArchDefaults.cCompiler arch compiler Config.cOptFlags
+cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler Config.cOptFlags
 makeDepend = ArchDefaults.makeDepend arch compiler
 makeCxxDepend  = ArchDefaults.makeCxxDepend arch cxxcompiler
-cToAssembler = ArchDefaults.cToAssembler arch compiler
-assembler = ArchDefaults.assembler arch compiler
+cToAssembler = ArchDefaults.cToAssembler arch compiler Config.cOptFlags
+assembler = ArchDefaults.assembler arch compiler Config.cOptFlags
 archive = ArchDefaults.archive arch
 linker = ArchDefaults.linker arch compiler
 cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
@@ -132,8 +132,9 @@ linkKernel :: Options -> [String] -> [String] -> String -> HRule
 linkKernel opts objs libs kbin = 
     let linkscript = "/kernel/linker.lds"
     in
-      Rules [ Rule ([ Str compiler, Str Config.cOptFlags,
-                      NStr "-T", In BuildTree arch "/kernel/linker.lds",
+      Rules [ Rule ([ Str compiler ] ++
+                    map Str Config.cOptFlags ++
+                    [ NStr "-T", In BuildTree arch "/kernel/linker.lds",
                       Str "-o", Out arch kbin 
                     ]
                     ++ (optLdFlags opts)
index 408f22b..f3a1336 100644 (file)
@@ -90,12 +90,12 @@ options = (ArchDefaults.options arch archFamily) {
 --
 -- Compilers
 --
-cCompiler = ArchDefaults.cCompiler arch compiler
-cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler
+cCompiler = ArchDefaults.cCompiler arch compiler Config.cOptFlags
+cxxCompiler = ArchDefaults.cxxCompiler arch cxxcompiler Config.cOptFlags
 makeDepend = ArchDefaults.makeDepend arch compiler
 makeCxxDepend  = ArchDefaults.makeCxxDepend arch cxxcompiler
-cToAssembler = ArchDefaults.cToAssembler arch compiler
-assembler = ArchDefaults.assembler arch compiler
+cToAssembler = ArchDefaults.cToAssembler arch compiler Config.cOptFlags
+assembler = ArchDefaults.assembler arch compiler Config.cOptFlags
 archive = ArchDefaults.archive arch
 linker = ArchDefaults.linker arch compiler
 cxxlinker = ArchDefaults.cxxlinker arch cxxcompiler
@@ -160,10 +160,11 @@ linkKernel opts objs libs kbin =
     let linkscript = "/kernel/linker.lds"
         kbootable  = kbin ++ ".bin"
     in
-        Rules [ Rule ([ Str compiler, Str Config.cOptFlags,
-                      NStr "-T", In BuildTree arch linkscript,
-                      Str "-o", Out arch kbin
-                    ]
+        Rules [ Rule ([ Str compiler ] ++
+                      map Str Config.cOptFlags ++
+                      [ NStr "-T", In BuildTree arch linkscript,
+                        Str "-o", Out arch kbin
+                      ]
                     ++ (optLdFlags opts)
                     ++
                     [ In BuildTree arch o | o <- objs ]