diff options
| author | aarne <aarne@cs.chalmers.se> | 2006-02-23 09:58:59 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2006-02-23 09:58:59 +0000 |
| commit | c5666fabddca9eaf9786a310bc14d77ffc0bc51e (patch) | |
| tree | d7f5c3d380e1d867461e12d9390b82563758efa9 /src/GF/Infra | |
| parent | 97485761cbde1e92f557285815fc88ebe60058ca (diff) | |
the -gfc option
Diffstat (limited to 'src/GF/Infra')
| -rw-r--r-- | src/GF/Infra/ReadFiles.hs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/GF/Infra/ReadFiles.hs b/src/GF/Infra/ReadFiles.hs index 538af5b8f..bb0d5e630 100644 --- a/src/GF/Infra/ReadFiles.hs +++ b/src/GF/Infra/ReadFiles.hs @@ -62,7 +62,7 @@ getAllFiles opts ps env file = do else do - ds2 <- ioeIO $ mapM (selectFormat env) pds1 + ds2 <- ioeIO $ mapM (selectFormat opts env) pds1 let ds4 = needCompile opts (map fst ds0) ds2 return ds4 @@ -80,15 +80,19 @@ data CompStatus = -- for gfc, we also return ModTime to cope with earlier compilation of libs -selectFormat :: ModEnv -> (InitPath,ModName) -> +selectFormat :: Options -> ModEnv -> (InitPath,ModName) -> IO (ModName,(InitPath,(CompStatus,Maybe ModTime))) -selectFormat env (p,f) = do + +selectFormat opts env (p,f) = do let pf = prefixPathName p f let mtenv = lookup f env -- Nothing if f is not in env let rtenv = lookup (resModName f) env + let fromComp = oElem isCompiled opts -- i -gfc mtgfc <- getModTime $ gfcFile pf mtgf <- getModTime $ gfFile pf let stat = case (rtenv,mtenv,mtgfc,mtgf) of + (_,Just tenv,_,_) | fromComp -> (CSEnv, Just tenv) + (_,_,Just tgfc,_) | fromComp -> (CSRead,Just tgfc) (Just tenv,_,_,Just tgf) | laterModTime tenv tgf -> (CSEnvR,Just tenv) (_,Just tenv,_,Just tgf) | laterModTime tenv tgf -> (CSEnv, Just tenv) (_,_,Just tgfc,Just tgf) | laterModTime tgfc tgf -> (CSRead,Just tgfc) @@ -96,7 +100,6 @@ selectFormat env (p,f) = do _ -> (CSComp,Nothing) return $ (f, (p,stat)) - needCompile :: Options -> [ModuleHeader] -> [(ModName,(InitPath,(CompStatus,Maybe ModTime)))] -> [FullPath] |
