Skip to content

Commit 1d49cd2

Browse files
Add own version of OverridingBool (#2764)
Fixes #2754
1 parent 75dbbeb commit 1d49cd2

File tree

12 files changed

+53
-137
lines changed

12 files changed

+53
-137
lines changed

clash-ghc/src-bin-8.10/Clash/GHCi/UI.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
150150
import Clash.Backend.VHDL (VHDLState)
151151
import Clash.Backend.Verilog (VerilogState)
152152
import qualified Clash.Driver
153+
import Clash.Driver.Bool (fromGhcOverridingBool)
153154
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
154155

155156
import Clash.GHC.PartialEval
@@ -2191,7 +2192,7 @@ makeHDL Proxy startAction optsRef srcs = do
21912192
dflags <- GHC.getSessionDynFlags
21922193
liftIO $ do startTime <- Clock.getCurrentTime
21932194
opts0 <- readIORef optsRef
2194-
let opts1 = opts0 { opt_color = useColor dflags }
2195+
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
21952196
let iw = opt_intWidth opts1
21962197
hdl = hdlKind backend
21972198
-- determine whether `-outputdir` was used

clash-ghc/src-bin-9.0/Clash/GHCi/UI.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
153153
import Clash.Backend.VHDL (VHDLState)
154154
import Clash.Backend.Verilog (VerilogState)
155155
import qualified Clash.Driver
156+
import Clash.Driver.Bool (fromGhcOverridingBool)
156157
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
157158
import Clash.GHC.Evaluator
158159
import Clash.GHC.GenerateBindings
@@ -2230,7 +2231,7 @@ makeHDL Proxy startAction optsRef srcs = do
22302231
dflags <- GHC.getSessionDynFlags
22312232
liftIO $ do startTime <- Clock.getCurrentTime
22322233
opts0 <- readIORef optsRef
2233-
let opts1 = opts0 { opt_color = useColor dflags }
2234+
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
22342235
let iw = opt_intWidth opts1
22352236
hdl = hdlKind backend
22362237
-- determine whether `-outputdir` was used

clash-ghc/src-bin-9.2/Clash/GHCi/UI.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
166166
import Clash.Backend.VHDL (VHDLState)
167167
import Clash.Backend.Verilog (VerilogState)
168168
import qualified Clash.Driver
169+
import Clash.Driver.Bool (fromGhcOverridingBool)
169170
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
170171
import Clash.GHC.Evaluator
171172
import Clash.GHC.GenerateBindings
@@ -2307,7 +2308,7 @@ makeHDL Proxy startAction optsRef srcs = do
23072308
dflags <- GHC.getSessionDynFlags
23082309
liftIO $ do startTime <- Clock.getCurrentTime
23092310
opts0 <- readIORef optsRef
2310-
let opts1 = opts0 { opt_color = useColor dflags }
2311+
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
23112312
let iw = opt_intWidth opts1
23122313
hdl = hdlKind backend
23132314
-- determine whether `-outputdir` was used

clash-ghc/src-bin-9.4/Clash/GHCi/UI.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
173173
import Clash.Backend.VHDL (VHDLState)
174174
import Clash.Backend.Verilog (VerilogState)
175175
import qualified Clash.Driver
176+
import Clash.Driver.Bool (fromGhcOverridingBool)
176177
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
177178
import Clash.GHC.Evaluator
178179
import Clash.GHC.GenerateBindings
@@ -2391,7 +2392,7 @@ makeHDL Proxy startAction optsRef srcs = do
23912392
dflags <- GHC.getSessionDynFlags
23922393
liftIO $ do startTime <- Clock.getCurrentTime
23932394
opts0 <- readIORef optsRef
2394-
let opts1 = opts0 { opt_color = useColor dflags }
2395+
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
23952396
let iw = opt_intWidth opts1
23962397
hdl = hdlKind backend
23972398
-- determine whether `-outputdir` was used

clash-ghc/src-bin-9.6/Clash/GHCi/UI.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
176176
import Clash.Backend.VHDL (VHDLState)
177177
import Clash.Backend.Verilog (VerilogState)
178178
import qualified Clash.Driver
179+
import Clash.Driver.Bool (fromGhcOverridingBool)
179180
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
180181
import Clash.GHC.Evaluator
181182
import Clash.GHC.GenerateBindings
@@ -2412,7 +2413,7 @@ makeHDL Proxy startAction optsRef srcs = do
24122413
dflags <- GHC.getSessionDynFlags
24132414
liftIO $ do startTime <- Clock.getCurrentTime
24142415
opts0 <- readIORef optsRef
2415-
let opts1 = opts0 { opt_color = useColor dflags }
2416+
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
24162417
let iw = opt_intWidth opts1
24172418
hdl = hdlKind backend
24182419
-- determine whether `-outputdir` was used

clash-ghc/src-bin-9.8/Clash/GHCi/UI.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ import Clash.Backend.SystemVerilog (SystemVerilogState)
178178
import Clash.Backend.VHDL (VHDLState)
179179
import Clash.Backend.Verilog (VerilogState)
180180
import qualified Clash.Driver
181+
import Clash.Driver.Bool (fromGhcOverridingBool)
181182
import Clash.Driver.Types (ClashOpts(..), ClashEnv(..), ClashDesign(..))
182183
import Clash.GHC.Evaluator
183184
import Clash.GHC.GenerateBindings
@@ -2413,7 +2414,7 @@ makeHDL Proxy startAction optsRef srcs = do
24132414
dflags <- GHC.getSessionDynFlags
24142415
liftIO $ do startTime <- Clock.getCurrentTime
24152416
opts0 <- readIORef optsRef
2416-
let opts1 = opts0 { opt_color = useColor dflags }
2417+
let opts1 = opts0 { opt_color = fromGhcOverridingBool (useColor dflags) }
24172418
let iw = opt_intWidth opts1
24182419
hdl = hdlKind backend
24192420
-- determine whether `-outputdir` was used

clash-ghc/src-ghc/Clash/GHC/GenerateBindings.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ import Clash.Core.VarEnv
8888
import qualified Clash.Data.UniqMap as UniqMap
8989
import Clash.Debug (traceIf)
9090
import Clash.Driver (compilePrimitive)
91+
import Clash.Driver.Bool (toGhcOverridingBool)
9192
import Clash.Driver.Types (BindingMap, Binding(..), IsPrim(..), ClashEnv(..), ClashDesign(..), ClashOpts(..))
9293
import Clash.GHC.GHC2Core
9394
(C2C, GHC2CoreState, GHC2CoreEnv (..), tyConMap, coreToId, coreToName, coreToTerm,
@@ -133,7 +134,7 @@ generateBindings opts startAction primDirs importDirs dbs hdl modName dflagsM =
133134
, partitionEithers -> (unresolvedPrims, pFP)
134135
, customBitRepresentations
135136
, primGuards
136-
, domainConfs ) <- loadModules startAction (opt_color opts) hdl modName dflagsM importDirs
137+
, domainConfs ) <- loadModules startAction (toGhcOverridingBool (opt_color opts)) hdl modName dflagsM importDirs
137138
startTime <- Clock.getCurrentTime
138139
primMapR <- generatePrimMap unresolvedPrims primGuards (concat [pFP, primDirs, importDirs])
139140
tdir <- maybe ghcLibDir (pure . GHC.topDir) dflagsM

clash-lib/clash-lib.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ Library
241241
Clash.Debug
242242

243243
Clash.Driver
244+
Clash.Driver.Bool
244245
Clash.Driver.BrokenGhcs
245246
Clash.Driver.Manifest
246247
Clash.Driver.Types

clash-lib/src/Clash/Driver/Bool.hs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{-|
2+
Copyright : (C) 2024, Martijn Bastiaan
3+
License : BSD2 (see the file LICENSE)
4+
Maintainer : QBayLogic B.V. <[email protected]>
5+
-}
6+
{-# LANGUAGE CPP #-}
7+
{-# LANGUAGE DeriveAnyClass #-}
8+
9+
module Clash.Driver.Bool where
10+
11+
import Control.DeepSeq (NFData)
12+
import Data.Hashable (Hashable)
13+
import GHC.Generics (Generic)
14+
15+
#if MIN_VERSION_ghc(9,4,0)
16+
import qualified GHC.Data.Bool as Ghc
17+
#elif MIN_VERSION_ghc(9,0,0)
18+
import qualified GHC.Utils.Misc as Ghc
19+
#else
20+
import qualified Util as Ghc
21+
#endif
22+
23+
data OverridingBool = Auto | Never | Always
24+
deriving (Show, Read, Eq, Ord, Enum, Bounded, Hashable, Generic, NFData)
25+
26+
toGhcOverridingBool :: OverridingBool -> Ghc.OverridingBool
27+
toGhcOverridingBool Auto = Ghc.Auto
28+
toGhcOverridingBool Never = Ghc.Never
29+
toGhcOverridingBool Always = Ghc.Always
30+
31+
fromGhcOverridingBool :: Ghc.OverridingBool -> OverridingBool
32+
fromGhcOverridingBool Ghc.Auto = Auto
33+
fromGhcOverridingBool Ghc.Never = Never
34+
fromGhcOverridingBool Ghc.Always = Always

clash-lib/src/Clash/Driver/Manifest.hs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ import Text.Read (readMaybe)
5454
import Clash.Annotations.TopEntity.Extra ()
5555
import Clash.Backend (Backend (hdlType), Usage (External))
5656
import Clash.Core.Name (nameOcc)
57+
import Clash.Driver.Bool (OverridingBool(..))
5758
import Clash.Driver.Types
5859
import Clash.Primitives.Types
5960
import Clash.Core.Var (Id, varName)
@@ -66,14 +67,6 @@ import Clash.Primitives.Util (hashCompiledPrimMap)
6667
import Clash.Signal (VDomainConfiguration(..))
6768
import Clash.Util.Graph (callGraphBindings)
6869

69-
#if MIN_VERSION_ghc(9,4,0)
70-
import GHC.Data.Bool (OverridingBool(..))
71-
#elif MIN_VERSION_ghc(9,0,0)
72-
import GHC.Utils.Misc (OverridingBool(..))
73-
#else
74-
import Util (OverridingBool(..))
75-
#endif
76-
7770
data PortDirection
7871
= In | Out | InOut
7972
deriving (Generic, Eq, Read, Show)

0 commit comments

Comments
 (0)