Pass __GLASGOW_HASKELL__ to gcc when compiling directory.c
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Fri, 11 Dec 2015 00:24:01 +0000 (00:24 +0000)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Fri, 11 Dec 2015 00:24:01 +0000 (00:24 +0000)
src/Settings/Builders/Gcc.hs

index 6a45740..3437a6c 100644 (file)
@@ -1,14 +1,21 @@
 module Settings.Builders.Gcc (gccArgs, gccMArgs) where
 
 import Expression
+import GHC
 import Oracles
-import Predicates (stagedBuilder)
+import Predicates (package, stagedBuilder)
 import Settings
 
+-- TODO: I had to define symbol __GLASGOW_HASKELL__ as otherwise directory.c is
+-- effectively empty. I presume it was expected that GHC will be used for
+-- compiling all C files, but I don't know why. It seems that directory.c is the
+-- only file which requires special treatment when using GCC.
 gccArgs :: Args
-gccArgs = stagedBuilder Gcc ? mconcat [ commonGccArgs
-                                      , arg "-c", arg =<< getInput
-                                      , arg "-o", arg =<< getOutput ]
+gccArgs = stagedBuilder Gcc ?
+    mconcat [ commonGccArgs
+            , package directory ? arg "-D__GLASGOW_HASKELL__"
+            , arg "-c", arg =<< getInput
+            , arg "-o", arg =<< getOutput ]
 
 -- TODO: handle custom $1_$2_MKDEPENDC_OPTS and
 gccMArgs :: Args