X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FParsePkgConf.y;h=1c94edc43ee51414ab316b08b037348a1c65de5b;hb=b30bffd8efe94fd5c58608eea3b50e4b11042c98;hp=f710b150dd6e7c38e45f5eb915626235cde44a35;hpb=0e8e53db37d75d506d3a5b2804342442a5142d59;p=ghc-hetmet.git diff --git a/ghc/compiler/main/ParsePkgConf.y b/ghc/compiler/main/ParsePkgConf.y index f710b15..1c94edc 100644 --- a/ghc/compiler/main/ParsePkgConf.y +++ b/ghc/compiler/main/ParsePkgConf.y @@ -1,6 +1,8 @@ { module ParsePkgConf( loadPackageConfig ) where +#include "HsVersions.h" + import Packages ( PackageConfig(..), defaultPackageConfig ) import Lex import FastString @@ -8,9 +10,7 @@ import StringBuffer import SrcLoc import Outputable import Panic ( GhcException(..) ) -import Exception ( throwDyn ) - -#include "HsVersions.h" +import EXCEPTION ( throwDyn ) } @@ -32,7 +32,8 @@ import Exception ( throwDyn ) %% pkgconf :: { [ PackageConfig ] } - : '[' pkgs ']' { reverse $2 } + : '[' ']' { [] } + | '[' pkgs ']' { reverse $2 } pkgs :: { [ PackageConfig ] } : pkg { [ $1 ] } @@ -51,6 +52,11 @@ field :: { PackageConfig -> PackageConfig } "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} @@ -63,6 +69,8 @@ field :: { PackageConfig -> PackageConfig } "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 } @@ -74,6 +82,12 @@ strs :: { [String] } : 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) @@ -81,8 +95,10 @@ happyError buf PState{ loc = loc } = PFailed (srcParseErr buf loc) loadPackageConfig :: FilePath -> IO [PackageConfig] loadPackageConfig conf_filename = do buf <- hGetStringBuffer conf_filename - let loc = mkSrcLoc (_PK_ conf_filename) 1 + let loc = mkSrcLoc (mkFastString conf_filename) 1 exts = ExtFlags {glasgowExtsEF = False, + ffiEF = False, + withEF = False, parrEF = False} case parse buf (mkPState loc exts) of PFailed err -> do