From 4481a82d1be1ef49c90dba268dbec73a6cfa2727 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sat, 25 Mar 2017 20:23:55 -0500 Subject: [PATCH] Add 'clashi' program and 'clash-ghc' package (#209) Fixes #208. Signed-off-by: Austin Seipp --- clash-ghc/{src-bin => cbits}/PosixSource.h | 0 clash-ghc/{src-bin => cbits}/hschooks.c | 0 clash-ghc/clash-ghc.cabal | 29 +++++++++++++------ .../src-bin/{ => CLaSH}/GHCi/HsVersions.h | 0 clash-ghc/src-bin/{ => CLaSH}/GHCi/UI.hs | 10 +++---- clash-ghc/src-bin/{ => CLaSH}/GHCi/UI/Info.hs | 2 +- .../src-bin/{ => CLaSH}/GHCi/UI/Monad.hs | 4 +-- clash-ghc/src-bin/{ => CLaSH}/GHCi/UI/Tags.hs | 4 +-- clash-ghc/src-bin/{ => CLaSH}/Main.hs | 12 ++++---- clash-ghc/src-ghc/Batch.hs | 16 ++++++++++ clash-ghc/src-ghc/Interactive.hs | 16 ++++++++++ 11 files changed, 69 insertions(+), 24 deletions(-) rename clash-ghc/{src-bin => cbits}/PosixSource.h (100%) rename clash-ghc/{src-bin => cbits}/hschooks.c (100%) rename clash-ghc/src-bin/{ => CLaSH}/GHCi/HsVersions.h (100%) rename clash-ghc/src-bin/{ => CLaSH}/GHCi/UI.hs (99%) rename clash-ghc/src-bin/{ => CLaSH}/GHCi/UI/Info.hs (99%) rename clash-ghc/src-bin/{ => CLaSH}/GHCi/UI/Monad.hs (99%) rename clash-ghc/src-bin/{ => CLaSH}/GHCi/UI/Tags.hs (99%) rename clash-ghc/src-bin/{ => CLaSH}/Main.hs (99%) create mode 100644 clash-ghc/src-ghc/Batch.hs create mode 100644 clash-ghc/src-ghc/Interactive.hs diff --git a/clash-ghc/src-bin/PosixSource.h b/clash-ghc/cbits/PosixSource.h similarity index 100% rename from clash-ghc/src-bin/PosixSource.h rename to clash-ghc/cbits/PosixSource.h diff --git a/clash-ghc/src-bin/hschooks.c b/clash-ghc/cbits/hschooks.c similarity index 100% rename from clash-ghc/src-bin/hschooks.c rename to clash-ghc/cbits/hschooks.c diff --git a/clash-ghc/clash-ghc.cabal b/clash-ghc/clash-ghc.cabal index 37c42eaf2f..e27ce2f877 100644 --- a/clash-ghc/clash-ghc.cabal +++ b/clash-ghc/clash-ghc.cabal @@ -43,8 +43,8 @@ Build-type: Simple Extra-source-files: README.md, CHANGELOG.md, LICENSE_GHC, - src-bin/PosixSource.h, - src-bin/GHCi/HsVersions.h + cbits/PosixSource.h, + src-bin/CLaSH/GHCi/HsVersions.h Cabal-version: >=1.10 @@ -52,9 +52,18 @@ source-repository head type: git location: https://github.com/clash-lang/clash-compiler.git -Executable clash +executable clash + Main-Is: src-ghc/Batch.hs + Build-Depends: base, clash-ghc + GHC-Options: -Wall + +executable clashi + Main-Is: src-ghc/Interactive.hs + Build-Depends: base, clash-ghc + GHC-Options: -Wall + +library HS-Source-Dirs: src-ghc src-bin - Main-Is: Main.hs default-language: Haskell2010 GHC-Options: -Wall -fno-warn-name-shadowing @@ -112,12 +121,14 @@ Executable clash else Build-Depends: unix >= 2.7.1 && < 2.8 - C-Sources: src-bin/hschooks.c + Include-dirs: cbits + C-Sources: cbits/hschooks.c - Other-Modules: GHCi.UI - GHCi.UI.Info - GHCi.UI.Monad - GHCi.UI.Tags + Exposed-Modules: CLaSH.Main + Other-Modules: CLaSH.GHCi.UI + CLaSH.GHCi.UI.Info + CLaSH.GHCi.UI.Monad + CLaSH.GHCi.UI.Tags CLaSH.GHC.CLaSHFlags CLaSH.GHC.Evaluator diff --git a/clash-ghc/src-bin/GHCi/HsVersions.h b/clash-ghc/src-bin/CLaSH/GHCi/HsVersions.h similarity index 100% rename from clash-ghc/src-bin/GHCi/HsVersions.h rename to clash-ghc/src-bin/CLaSH/GHCi/HsVersions.h diff --git a/clash-ghc/src-bin/GHCi/UI.hs b/clash-ghc/src-bin/CLaSH/GHCi/UI.hs similarity index 99% rename from clash-ghc/src-bin/GHCi/UI.hs rename to clash-ghc/src-bin/CLaSH/GHCi/UI.hs index 4de392d4e9..1e99784965 100644 --- a/clash-ghc/src-bin/GHCi/UI.hs +++ b/clash-ghc/src-bin/CLaSH/GHCi/UI.hs @@ -20,7 +20,7 @@ -- ----------------------------------------------------------------------------- -module GHCi.UI ( +module CLaSH.GHCi.UI ( interactiveUI, GhciSettings(..), defaultGhciSettings, @@ -32,10 +32,10 @@ module GHCi.UI ( #include "HsVersions.h" -- GHCi -import qualified GHCi.UI.Monad as GhciMonad ( args, runStmt, runDecls ) -import GHCi.UI.Monad hiding ( args, runStmt, runDecls ) -import GHCi.UI.Tags -import GHCi.UI.Info +import qualified CLaSH.GHCi.UI.Monad as GhciMonad ( args, runStmt, runDecls ) +import CLaSH.GHCi.UI.Monad hiding ( args, runStmt, runDecls ) +import CLaSH.GHCi.UI.Tags +import CLaSH.GHCi.UI.Info import Debugger -- The GHC interface diff --git a/clash-ghc/src-bin/GHCi/UI/Info.hs b/clash-ghc/src-bin/CLaSH/GHCi/UI/Info.hs similarity index 99% rename from clash-ghc/src-bin/GHCi/UI/Info.hs rename to clash-ghc/src-bin/CLaSH/GHCi/UI/Info.hs index 2c44e3f8e2..23e9bec035 100644 --- a/clash-ghc/src-bin/GHCi/UI/Info.hs +++ b/clash-ghc/src-bin/CLaSH/GHCi/UI/Info.hs @@ -4,7 +4,7 @@ {-# LANGUAGE ScopedTypeVariables #-} -- | Get information on modules, expreesions, and identifiers -module GHCi.UI.Info +module CLaSH.GHCi.UI.Info ( ModInfo(..) , SpanInfo(..) , spanInfoFromRealSrcSpan diff --git a/clash-ghc/src-bin/GHCi/UI/Monad.hs b/clash-ghc/src-bin/CLaSH/GHCi/UI/Monad.hs similarity index 99% rename from clash-ghc/src-bin/GHCi/UI/Monad.hs rename to clash-ghc/src-bin/CLaSH/GHCi/UI/Monad.hs index 26909ccb8d..72c3e2eb00 100644 --- a/clash-ghc/src-bin/GHCi/UI/Monad.hs +++ b/clash-ghc/src-bin/CLaSH/GHCi/UI/Monad.hs @@ -10,7 +10,7 @@ -- ----------------------------------------------------------------------------- -module GHCi.UI.Monad ( +module CLaSH.GHCi.UI.Monad ( GHCi(..), startGHCi, GHCiState(..), setGHCiState, getGHCiState, modifyGHCiState, GHCiOption(..), isOptionSet, setOption, unsetOption, @@ -31,7 +31,7 @@ module GHCi.UI.Monad ( #include "../HsVersions.h" -import GHCi.UI.Info (ModInfo) +import CLaSH.GHCi.UI.Info (ModInfo) import qualified GHC import GhcMonad hiding (liftIO) import Outputable hiding (printForUser, printForUserPartWay) diff --git a/clash-ghc/src-bin/GHCi/UI/Tags.hs b/clash-ghc/src-bin/CLaSH/GHCi/UI/Tags.hs similarity index 99% rename from clash-ghc/src-bin/GHCi/UI/Tags.hs rename to clash-ghc/src-bin/CLaSH/GHCi/UI/Tags.hs index 8a06eb3583..a0be8d2319 100644 --- a/clash-ghc/src-bin/GHCi/UI/Tags.hs +++ b/clash-ghc/src-bin/CLaSH/GHCi/UI/Tags.hs @@ -7,7 +7,7 @@ ----------------------------------------------------------------------------- {-# OPTIONS_GHC -fno-warn-name-shadowing #-} -module GHCi.UI.Tags ( +module CLaSH.GHCi.UI.Tags ( createCTagsWithLineNumbersCmd, createCTagsWithRegExesCmd, createETagsFileCmd @@ -15,7 +15,7 @@ module GHCi.UI.Tags ( import Exception import GHC -import GHCi.UI.Monad +import CLaSH.GHCi.UI.Monad import Outputable -- ToDo: figure out whether we need these, and put something appropriate diff --git a/clash-ghc/src-bin/Main.hs b/clash-ghc/src-bin/CLaSH/Main.hs similarity index 99% rename from clash-ghc/src-bin/Main.hs rename to clash-ghc/src-bin/CLaSH/Main.hs index 7f1b0f8133..7b28cdd0c0 100644 --- a/clash-ghc/src-bin/Main.hs +++ b/clash-ghc/src-bin/CLaSH/Main.hs @@ -9,7 +9,7 @@ -- ----------------------------------------------------------------------------- -module Main (main) where +module CLaSH.Main (defaultMain) where #include "MachDeps.h" @@ -27,7 +27,7 @@ import HscMain ( newHscEnv ) import DriverPipeline ( oneShot, compileFile ) import DriverMkDepend ( doMkDependHS ) #ifdef GHCI -import GHCi.UI ( interactiveUI, ghciWelcomeMsg, defaultGhciSettings ) +import CLaSH.GHCi.UI ( interactiveUI, ghciWelcomeMsg, defaultGhciSettings ) #endif -- Frontend plugins @@ -75,7 +75,7 @@ import Data.Maybe -- clash additions import Paths_clash_ghc -import GHCi.UI (makeHDL) +import CLaSH.GHCi.UI (makeHDL) import Exception (gcatch) import Data.IORef (IORef, newIORef, readIORef) import qualified Data.Version (showVersion) @@ -106,8 +106,10 @@ import CLaSH.GHC.LoadModules (ghcLibDir) ----------------------------------------------------------------------------- -- GHC's command-line interface -main :: IO () -main = do +-- | Run the Clash compiler with a given set of arguments. This is equivalent to +-- simply invoking the main @clash@ binary with the same arguments. +defaultMain :: [String] -> IO () +defaultMain = flip withArgs $ do initGCStatistics -- See Note [-Bsymbolic and hooks] hSetBuffering stdout LineBuffering hSetBuffering stderr LineBuffering diff --git a/clash-ghc/src-ghc/Batch.hs b/clash-ghc/src-ghc/Batch.hs new file mode 100644 index 0000000000..8f1d377e25 --- /dev/null +++ b/clash-ghc/src-ghc/Batch.hs @@ -0,0 +1,16 @@ +{-| + Copyright : (C) 2013-2017, University of Twente + License : BSD2 (see the file LICENSE) + Maintainer : Christiaan Baaij + + Entry point for the @clash@ executable. +-} +module Main + ( main -- :: IO () + ) where + +import System.Environment ( getArgs ) +import CLaSH.Main ( defaultMain ) + +main :: IO () +main = getArgs >>= defaultMain diff --git a/clash-ghc/src-ghc/Interactive.hs b/clash-ghc/src-ghc/Interactive.hs new file mode 100644 index 0000000000..704a506527 --- /dev/null +++ b/clash-ghc/src-ghc/Interactive.hs @@ -0,0 +1,16 @@ +{-| + Copyright : (C) 2013-2017, University of Twente + License : BSD2 (see the file LICENSE) + Maintainer : Christiaan Baaij + + Entry point for the @clashi@ executable. +-} +module Main + ( main -- :: IO () + ) where + +import System.Environment ( getArgs ) +import CLaSH.Main ( defaultMain ) + +main :: IO () +main = getArgs >>= defaultMain . ("--interactive":)