packages feed

clash-ghc 0.5.4 → 0.5.5

raw patch · 6 files changed

+32/−10 lines, 6 filesdep ~clash-libdep ~clash-prelude

Dependency ranges changed: clash-lib, clash-prelude

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # Changelog for the [`clash-ghc`](http://hackage.haskell.org/package/clash-ghc) package +## 0.5.5 *May 5th 2015*+* New features:+  * `TopEntity` wrappers are now specified as `ANN` annotation pragmas [#42](https://github.com/clash-lang/clash-compiler/issues/42)+ ## 0.5.4 *May 1st 2015* * New features:   * Generate wrappers around `topEntity` that have constant names and types
clash-ghc.cabal view
@@ -1,5 +1,5 @@ Name:                 clash-ghc-Version:              0.5.4+Version:              0.5.5 Synopsis:             CAES Language for Synchronous Hardware Description:   CλaSH (pronounced ‘clash’) is a functional hardware description language that@@ -70,7 +70,8 @@                       unbound-generics          >= 0.1,                       unordered-containers      >= 0.2.1.0, -                      clash-lib                 >= 0.5.2,+                      clash-lib                 >= 0.5.3,+                      clash-prelude             >= 0.7.4,                       clash-vhdl                >= 0.5.3,                       clash-systemverilog       >= 0.5.2,                       clash-prelude             >= 0.7.3,
src-bin/InteractiveUI.hs view
@@ -113,7 +113,6 @@ import           CLaSH.Backend.VHDL (VHDLState) import           CLaSH.Backend.SystemVerilog (SystemVerilogState) import qualified CLaSH.Driver-import           CLaSH.Driver.TopWrapper (generateTopEnt) import           CLaSH.GHC.Evaluator import           CLaSH.GHC.GenerateBindings import           CLaSH.GHC.NetlistTypes@@ -1578,8 +1577,7 @@   liftIO $ do primDir <- CLaSH.Backend.primDir backend               primMap <- CLaSH.Primitives.Util.generatePrimMap [primDir,"."]               forM_ srcs $ \src -> do-                (bindingsMap,tcm) <- generateBindings primMap src (Just dflags)-                topEntM           <- generateTopEnt (dropExtensions $ takeFileName src)+                (bindingsMap,tcm,topEntM) <- generateBindings primMap src (Just dflags)                 CLaSH.Driver.generateHDL bindingsMap (Just backend) primMap tcm                   ghcTypeToHWType reduceConstant topEntM DebugNone 
src-bin/Main.hs view
@@ -152,6 +152,7 @@                                     , DynFlags.Opt_FlexibleContexts                                     , DynFlags.Opt_ConstraintKinds                                     , DynFlags.Opt_TypeFamilies+                                    , DynFlags.Opt_BinaryLiterals                                     ]                 dflagsExtra1 = foldl DynFlags.xopt_unset dflagsExtra                                      [ DynFlags.Opt_ImplicitPrelude
src-ghc/CLaSH/GHC/GenerateBindings.hs view
@@ -15,6 +15,7 @@ import qualified CoreSyn                 as GHC import qualified DynFlags                as GHC +import           CLaSH.Annotations.TopEntity (TopEntity) import           CLaSH.Core.FreeVars     (termFreeIds) import           CLaSH.Core.Term         (Term (..), TmName) import           CLaSH.Core.Type         (Type, TypeView (..), coreView, mkFunTy, splitFunForallTy)@@ -36,9 +37,9 @@   PrimMap   -> String   -> Maybe  (GHC.DynFlags)-  -> IO (BindingMap,HashMap TyConName TyCon)+  -> IO (BindingMap,HashMap TyConName TyCon,Maybe TopEntity) generateBindings primMap modName dflagsM = do-  (bindings,clsOps,unlocatable,fiEnvs) <- loadModules modName dflagsM+  (bindings,clsOps,unlocatable,fiEnvs,topEntM) <- loadModules modName dflagsM   let ((bindingsMap,clsVMap),tcMap) = State.runState (mkBindings primMap bindings clsOps unlocatable) emptyGHC2CoreState       tcCache                       = makeAllTyCons tcMap fiEnvs       allTcCache                    = tysPrimMap `HashMap.union` tcCache@@ -49,7 +50,7 @@                                         [topEntity] -> let droppedBindings = lambdaDropPrep allBindings (fst topEntity)                                                        in  snd $ retype allTcCache ([],droppedBindings) (fst topEntity)                                         _           -> allBindings-  return (retypedBindings,allTcCache)+  return (retypedBindings,allTcCache,topEntM)  -- | clean up cast-removal mess retype :: HashMap TyConName TyCon
src-ghc/CLaSH/GHC/LoadModules.hs view
@@ -8,13 +8,16 @@ where  -- External Modules+import           Data.List                    (nub)+import           Data.Maybe                   (listToMaybe)+import           CLaSH.Annotations.TopEntity  (TopEntity) import           System.Exit                  (ExitCode (..)) import           System.IO                    (hGetLine) import           System.Process               (runInteractiveCommand,                                                waitForProcess)-import           Data.List                    (nub)  -- GHC API+import qualified Annotations import qualified CoreSyn import           DynFlags                     (GeneralFlag (..)) import qualified DynFlags@@ -23,11 +26,13 @@ import qualified HscTypes import qualified MonadUtils import qualified Panic+import qualified Serialized import qualified TidyPgm  import qualified TcRnMonad import qualified TcRnTypes import qualified UniqFM+import qualified Var import qualified FamInst import qualified FamInstEnv @@ -59,6 +64,7 @@         , [(CoreSyn.CoreBndr,Int)]                 -- Class operations         , [CoreSyn.CoreBndr]                       -- Unlocatable Expressions         , FamInstEnv.FamInstEnvs+        , Maybe TopEntity         ) loadModules modName dflagsM = GHC.defaultErrorHandler DynFlags.defaultFatalMessager                               DynFlags.defaultFlushOut $ do@@ -76,6 +82,7 @@                                 , DynFlags.Opt_FlexibleContexts                                 , DynFlags.Opt_ConstraintKinds                                 , DynFlags.Opt_TypeFamilies+                                , DynFlags.Opt_BinaryLiterals                                 ]                   let dfDis = foldl DynFlags.xopt_unset dfEn                                 [ DynFlags.Opt_ImplicitPrelude@@ -129,9 +136,19 @@          hscEnv <- GHC.getSession         famInstEnvs <- TcRnMonad.liftIO $ TcRnMonad.initTcForLookup hscEnv FamInst.tcGetFamInstEnvs+        topEntityAnnotations <- findCLaSHAnnotations (map fst binders)+        let topEntM = listToMaybe topEntityAnnotations -        return (binders ++ externalBndrs,clsOps,unlocatable,(fst famInstEnvs,modFamInstEnvs'))+        return (binders ++ externalBndrs,clsOps,unlocatable,(fst famInstEnvs,modFamInstEnvs'),topEntM)       GHC.Failed -> Panic.pgmError $ $(curLoc) ++ "failed to load module: " ++ modName++findCLaSHAnnotations :: GHC.GhcMonad m+                     => [CoreSyn.CoreBndr]+                     -> m [TopEntity]+findCLaSHAnnotations bndrs = do+  let deserializer = Serialized.deserializeWithData+      targets      = map (Annotations.NamedTarget . Var.varName) bndrs+  concat <$> mapM (GHC.findGlobalAnns deserializer) targets  parseModule :: GHC.GhcMonad m => GHC.ModSummary -> m GHC.ParsedModule parseModule modSum = do