Skip to content

Commit

Permalink
Add own version of OverridingBool (#2764)
Browse files Browse the repository at this point in the history
Fixes #2754

(cherry picked from commit 1d49cd2)

# Conflicts:
#	clash-lib/clash-lib.cabal
#	clash-lib/src/Clash/Driver/Types.hs
  • Loading branch information
martijnbastiaan authored and mergify[bot] committed Jul 26, 2024
1 parent 5c3f119 commit dd82b3e
Show file tree
Hide file tree
Showing 12 changed files with 60 additions and 25 deletions.
3 changes: 2 additions & 1 deletion clash-ghc/src-bin-8.10/Clash/GHCi/UI.hs
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
import Clash.Backend.VHDL (VHDLState)
import Clash.Backend.Verilog (VerilogState)
import qualified Clash.Driver
import Clash.Driver.Bool (fromGhcOverridingBool)
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))

import Clash.GHC.PartialEval
Expand Down Expand Up @@ -2191,7 +2192,7 @@ makeHDL Proxy startAction optsRef srcs = do
dflags <- GHC.getSessionDynFlags
liftIO $ do startTime <- Clock.getCurrentTime
opts0 <- readIORef optsRef
let opts1 = opts0 { opt_color = useColor dflags }
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
let iw = opt_intWidth opts1
hdl = hdlKind backend
-- determine whether `-outputdir` was used
Expand Down
3 changes: 2 additions & 1 deletion clash-ghc/src-bin-9.0/Clash/GHCi/UI.hs
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
import Clash.Backend.VHDL (VHDLState)
import Clash.Backend.Verilog (VerilogState)
import qualified Clash.Driver
import Clash.Driver.Bool (fromGhcOverridingBool)
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
import Clash.GHC.Evaluator
import Clash.GHC.GenerateBindings
Expand Down Expand Up @@ -2230,7 +2231,7 @@ makeHDL Proxy startAction optsRef srcs = do
dflags <- GHC.getSessionDynFlags
liftIO $ do startTime <- Clock.getCurrentTime
opts0 <- readIORef optsRef
let opts1 = opts0 { opt_color = useColor dflags }
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
let iw = opt_intWidth opts1
hdl = hdlKind backend
-- determine whether `-outputdir` was used
Expand Down
3 changes: 2 additions & 1 deletion clash-ghc/src-bin-9.2/Clash/GHCi/UI.hs
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
import Clash.Backend.VHDL (VHDLState)
import Clash.Backend.Verilog (VerilogState)
import qualified Clash.Driver
import Clash.Driver.Bool (fromGhcOverridingBool)
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
import Clash.GHC.Evaluator
import Clash.GHC.GenerateBindings
Expand Down Expand Up @@ -2307,7 +2308,7 @@ makeHDL Proxy startAction optsRef srcs = do
dflags <- GHC.getSessionDynFlags
liftIO $ do startTime <- Clock.getCurrentTime
opts0 <- readIORef optsRef
let opts1 = opts0 { opt_color = useColor dflags }
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
let iw = opt_intWidth opts1
hdl = hdlKind backend
-- determine whether `-outputdir` was used
Expand Down
3 changes: 2 additions & 1 deletion clash-ghc/src-bin-9.4/Clash/GHCi/UI.hs
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
import Clash.Backend.VHDL (VHDLState)
import Clash.Backend.Verilog (VerilogState)
import qualified Clash.Driver
import Clash.Driver.Bool (fromGhcOverridingBool)
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
import Clash.GHC.Evaluator
import Clash.GHC.GenerateBindings
Expand Down Expand Up @@ -2391,7 +2392,7 @@ makeHDL Proxy startAction optsRef srcs = do
dflags <- GHC.getSessionDynFlags
liftIO $ do startTime <- Clock.getCurrentTime
opts0 <- readIORef optsRef
let opts1 = opts0 { opt_color = useColor dflags }
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
let iw = opt_intWidth opts1
hdl = hdlKind backend
-- determine whether `-outputdir` was used
Expand Down
3 changes: 2 additions & 1 deletion clash-ghc/src-bin-9.6/Clash/GHCi/UI.hs
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
import Clash.Backend.VHDL (VHDLState)
import Clash.Backend.Verilog (VerilogState)
import qualified Clash.Driver
import Clash.Driver.Bool (fromGhcOverridingBool)
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
import Clash.GHC.Evaluator
import Clash.GHC.GenerateBindings
Expand Down Expand Up @@ -2412,7 +2413,7 @@ makeHDL Proxy startAction optsRef srcs = do
dflags <- GHC.getSessionDynFlags
liftIO $ do startTime <- Clock.getCurrentTime
opts0 <- readIORef optsRef
let opts1 = opts0 { opt_color = useColor dflags }
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
let iw = opt_intWidth opts1
hdl = hdlKind backend
-- determine whether `-outputdir` was used
Expand Down
3 changes: 2 additions & 1 deletion clash-ghc/src-bin-9.8/Clash/GHCi/UI.hs
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
import Clash.Backend.VHDL (VHDLState)
import Clash.Backend.Verilog (VerilogState)
import qualified Clash.Driver
import Clash.Driver.Bool (fromGhcOverridingBool)
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
import Clash.GHC.Evaluator
import Clash.GHC.GenerateBindings
Expand Down Expand Up @@ -2413,7 +2414,7 @@ makeHDL Proxy startAction optsRef srcs = do
dflags <- GHC.getSessionDynFlags
liftIO $ do startTime <- Clock.getCurrentTime
opts0 <- readIORef optsRef
let opts1 = opts0 { opt_color = useColor dflags }
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
let iw = opt_intWidth opts1
hdl = hdlKind backend
-- determine whether `-outputdir` was used
Expand Down
3 changes: 2 additions & 1 deletion clash-ghc/src-ghc/Clash/GHC/GenerateBindings.hs
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ import Clash.Core.VarEnv
import qualified Clash.Data.UniqMap as UniqMap
import Clash.Debug (traceIf)
import Clash.Driver (compilePrimitive)
import Clash.Driver.Bool (toGhcOverridingBool)
import Clash.Driver.Types (BindingMap, Binding(..), IsPrim(..), ClashEnv(..), ClashDesign(..), ClashOpts(..))
import Clash.GHC.GHC2Core
(C2C, GHC2CoreState, GHC2CoreEnv (..), tyConMap, coreToId, coreToName, coreToTerm,
Expand Down Expand Up @@ -133,7 +134,7 @@ generateBindings opts startAction primDirs importDirs dbs hdl modName dflagsM =
, partitionEithers -> (unresolvedPrims, pFP)
, customBitRepresentations
, primGuards
, domainConfs ) <- loadModules startAction (opt_color opts) hdl modName dflagsM importDirs
, domainConfs ) <- loadModules startAction (toGhcOverridingBool (opt_color opts)) hdl modName dflagsM importDirs
startTime <- Clock.getCurrentTime
primMapR <- generatePrimMap unresolvedPrims primGuards (concat [pFP, primDirs, importDirs])
tdir <- maybe ghcLibDir (pure . GHC.topDir) dflagsM
Expand Down
5 changes: 5 additions & 0 deletions clash-lib/clash-lib.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,11 @@ Library
Clash.Debug

Clash.Driver
<<<<<<< HEAD
=======
Clash.Driver.Bool
Clash.Driver.BrokenGhcs
>>>>>>> 1d49cd2a5 (Add own version of `OverridingBool` (#2764))
Clash.Driver.Manifest
Clash.Driver.Types

Expand Down
34 changes: 34 additions & 0 deletions clash-lib/src/Clash/Driver/Bool.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{-|
Copyright : (C) 2024, Martijn Bastiaan
License : BSD2 (see the file LICENSE)
Maintainer : QBayLogic B.V. <[email protected]>
-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveAnyClass #-}

module Clash.Driver.Bool where

import Control.DeepSeq (NFData)
import Data.Hashable (Hashable)
import GHC.Generics (Generic)

#if MIN_VERSION_ghc(9,4,0)
import qualified GHC.Data.Bool as Ghc
#elif MIN_VERSION_ghc(9,0,0)
import qualified GHC.Utils.Misc as Ghc
#else
import qualified Util as Ghc
#endif

data OverridingBool = Auto | Never | Always
deriving (Show, Read, Eq, Ord, Enum, Bounded, Hashable, Generic, NFData)

toGhcOverridingBool :: OverridingBool -> Ghc.OverridingBool
toGhcOverridingBool Auto = Ghc.Auto
toGhcOverridingBool Never = Ghc.Never
toGhcOverridingBool Always = Ghc.Always

fromGhcOverridingBool :: Ghc.OverridingBool -> OverridingBool
fromGhcOverridingBool Ghc.Auto = Auto
fromGhcOverridingBool Ghc.Never = Never
fromGhcOverridingBool Ghc.Always = Always
9 changes: 1 addition & 8 deletions clash-lib/src/Clash/Driver/Manifest.hs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ import Text.Read (readMaybe)
import Clash.Annotations.TopEntity.Extra ()
import Clash.Backend (Backend (hdlType), Usage (External))
import Clash.Core.Name (nameOcc)
import Clash.Driver.Bool (OverridingBool(..))
import Clash.Driver.Types
import Clash.Primitives.Types
import Clash.Core.Var (Id, varName)
Expand All @@ -66,14 +67,6 @@ import Clash.Primitives.Util (hashCompiledPrimMap)
import Clash.Signal (VDomainConfiguration(..))
import Clash.Util.Graph (callGraphBindings)

#if MIN_VERSION_ghc(9,4,0)
import GHC.Data.Bool (OverridingBool(..))
#elif MIN_VERSION_ghc(9,0,0)
import GHC.Utils.Misc (OverridingBool(..))
#else
import Util (OverridingBool(..))
#endif

data PortDirection
= In | Out | InOut
deriving (Generic, Eq, Read, Show)
Expand Down
8 changes: 5 additions & 3 deletions clash-lib/src/Clash/Driver/Types.hs
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,12 @@ import GHC.Generics (Generic)
#if MIN_VERSION_ghc(9,4,0)
import GHC.Types.Basic (InlineSpec)
import GHC.Types.SrcLoc (SrcSpan)
import GHC.Data.Bool (OverridingBool(..))
#elif MIN_VERSION_ghc(9,0,0)
import GHC.Types.Basic (InlineSpec)
import GHC.Types.SrcLoc (SrcSpan)
import GHC.Utils.Misc (OverridingBool(..))
#else
import BasicTypes (InlineSpec)
import SrcLoc (SrcSpan)
import Util (OverridingBool(..))
#endif

import Clash.Annotations.BitRepresentation.Internal (CustomReprs)
Expand All @@ -64,6 +61,7 @@ import Clash.Core.Term (Term)
import Clash.Core.TyCon (TyConMap, TyConName)
import Clash.Core.Var (Id)
import Clash.Core.VarEnv (VarEnv)
import Clash.Driver.Bool (OverridingBool(..))
import Clash.Netlist.BlackBox.Types (HdlSyn (..))
import {-# SOURCE #-} Clash.Netlist.Types (PreserveCase(..), TopEntityT)
import Clash.Primitives.Types (CompiledPrimMap)
Expand Down Expand Up @@ -401,6 +399,7 @@ data ClashOpts = ClashOpts
-- ^ Timescale precision set in Verilog files. E.g., setting this would sets
-- the second part of @`timescale 100fs/100fs@.
}
<<<<<<< HEAD
deriving (Show)

instance NFData ClashOpts where
Expand Down Expand Up @@ -510,6 +509,9 @@ instance Hashable ClashOpts where
hashOverridingBool s1 Always = hashWithSalt s1 (1 :: Int)
hashOverridingBool s1 Never = hashWithSalt s1 (2 :: Int)
infixl 0 `hashOverridingBool`
=======
deriving (Show, Eq, NFData, Generic, Hashable)
>>>>>>> 1d49cd2a5 (Add own version of `OverridingBool` (#2764))

defClashOpts :: ClashOpts
defClashOpts
Expand Down
8 changes: 1 addition & 7 deletions clash-lib/src/Clash/Netlist/BlackBox.hs
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,6 @@ import System.Console.ANSI
, ConsoleIntensity(BoldIntensity), ConsoleLayer(Foreground), ColorIntensity(Vivid))
import System.IO
(hPutStrLn, stderr, hFlush, hIsTerminalDevice)
#if MIN_VERSION_ghc(9,4,0)
import GHC.Data.Bool (OverridingBool(..))
#elif MIN_VERSION_ghc(9,0,0)
import GHC.Utils.Misc (OverridingBool(..))
#else
import Util (OverridingBool(..))
#endif

import Clash.Annotations.Primitive
( PrimitiveGuard(HasBlackBox, DontTranslate)
Expand Down Expand Up @@ -92,6 +85,7 @@ import {-# SOURCE #-} Clash.Netlist
import qualified Clash.Backend as Backend
import qualified Clash.Data.UniqMap as UniqMap
import Clash.Debug (debugIsOn)
import Clash.Driver.Bool (OverridingBool(..))
import Clash.Driver.Types
(ClashOpts(opt_primWarn, opt_color, opt_werror))
import Clash.Netlist.BlackBox.Types as B
Expand Down

0 comments on commit dd82b3e

Please sign in to comment.