{
module ParsePkgConf( loadPackageConfig ) where
+#include "HsVersions.h"
+
import Packages ( PackageConfig(..), defaultPackageConfig )
import Lex
import FastString
import SrcLoc
import Outputable
import Panic ( GhcException(..) )
-import Exception ( throwDyn )
-
-#include "HsVersions.h"
+import EXCEPTION ( throwDyn )
}
%%
pkgconf :: { [ PackageConfig ] }
- : '[' pkgs ']' { reverse $2 }
+ : '[' ']' { [] }
+ | '[' pkgs ']' { reverse $2 }
pkgs :: { [ PackageConfig ] }
: pkg { [ $1 ] }
"name" -> returnP (\ p -> p{name = unpackFS $3});
_ -> happyError } }
+ | VARID '=' bool
+ {\p -> case unpackFS $1 of {
+ "auto" -> p{auto = $3};
+ _ -> p } }
+
| VARID '=' strlist
{\p -> case unpackFS $1 of
"import_dirs" -> p{import_dirs = $3}
"extra_ghc_opts" -> p{extra_ghc_opts = $3}
"extra_cc_opts" -> p{extra_cc_opts = $3}
"extra_ld_opts" -> p{extra_ld_opts = $3}
+ "framework_dirs" -> p{framework_dirs = $3}
+ "extra_frameworks"-> p{extra_frameworks= $3}
_other -> p
}
: STRING { [ unpackFS $1 ] }
| strs ',' STRING { unpackFS $3 : $1 }
+bool :: { Bool }
+ : CONID {% case unpackFS $1 of {
+ "True" -> returnP True;
+ "False" -> returnP False;
+ _ -> happyError } }
+
{
happyError :: P a
happyError buf PState{ loc = loc } = PFailed (srcParseErr buf loc)
buf <- hGetStringBuffer conf_filename
let loc = mkSrcLoc (mkFastString conf_filename) 1
exts = ExtFlags {glasgowExtsEF = False,
+ ffiEF = False,
+ arrowsEF = False,
+ withEF = False,
parrEF = False}
case parse buf (mkPState loc exts) of
PFailed err -> do