X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FParsePkgConf.y;h=1c94edc43ee51414ab316b08b037348a1c65de5b;hb=854ab9a44c4f9a9cb6239bb0af14c150b0e454c6;hp=c6e65801f3491aa19245c91f30136bcfb25b5f51;hpb=10fcd78ccde892feccda3f5eacd221c1de75feea;p=ghc-hetmet.git diff --git a/ghc/compiler/main/ParsePkgConf.y b/ghc/compiler/main/ParsePkgConf.y index c6e6580..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,15 +82,23 @@ 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) loadPackageConfig :: FilePath -> IO [PackageConfig] loadPackageConfig conf_filename = do - buf <- hGetStringBuffer False conf_filename - let loc = mkSrcLoc (_PK_ conf_filename) 1 + buf <- hGetStringBuffer conf_filename + 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