Cabal-version:        2.2
Name:                 clash-lib
Version:              1.2.0
Synopsis:             CAES Language for Synchronous Hardware - As a Library
Description:
  Clash is a functional hardware description language that borrows both its
  syntax and semantics from the functional programming language Haskell. The
  Clash compiler transforms these high-level descriptions to low-level
  synthesizable VHDL, Verilog, or SystemVerilog.
  .
  Features of Clash:
  .
  * Strongly typed, but with a very high degree of type inference, enabling both
    safe and fast prototyping using concise descriptions.
  .
  * Interactive REPL: load your designs in an interpreter and easily test all
    your component without needing to setup a test bench.
  .
  * Higher-order functions, with type inference, result in designs that are
    fully parametric by default.
  .
  * Synchronous sequential circuit design based on streams of values, called
    @Signal@s, lead to natural descriptions of feedback loops.
  .
  * Support for multiple clock domains, with type safe clock domain crossing.
  .
  .
  This package provides:
  .
  * The CoreHW internal language: SystemF + Letrec + Case-decomposition
  .
  * The normalisation process that brings CoreHW in a normal form that can be
  converted to a netlist
  .
  * Blackbox/Primitive Handling
  .
  .
  Front-ends (for: parsing, typecheck, etc.) are provided by separate packages:
  .
  * <https://hackage.haskell.org/package/clash-ghc GHC/Haskell Frontend>
  .
  * <https://github.com/christiaanb/Idris-dev Idris Frontend>
  .
  .
  Prelude library: <https://hackage.haskell.org/package/clash-prelude>
Homepage:             https://clash-lang.org/
bug-reports:          https://github.com/clash-lang/clash-compiler/issues
License:              BSD-2-Clause
License-file:         LICENSE
Author:               The Clash Authors
Maintainer:           QBayLogic B.V. <devops@qbaylogic.com>
Copyright:            Copyright © 2012-2016, University of Twente,
                                  2016-2019, Myrtle Software Ltd,
                                  2017-2019, QBayLogic B.V., Google Inc.
Category:             Hardware
Build-type:           Simple

Extra-source-files:
  README.md,
  CHANGELOG.md,
  src/ClashDebug.h

Data-files:
  prims/common/*.json,
  prims/commonverilog/*.json,
  prims/verilog/*.json,
  prims/systemverilog/*.json,
  prims/vhdl/*.json

source-repository head
  type: git
  location: https://github.com/clash-lang/clash-compiler.git
  subdir: clash-lib

flag debug
   description:
     Build a debug compiler
   default: False
   manual: True

flag history
   description:
     Emit rewrite history to disk
   default: False
   manual: True

flag unittests
  description:
    You can disable testing with unittests using `-f-unittests`.
  default: True
  manual: True

common common-options
  default-language:   Haskell2010
  default-extensions: BangPatterns
                      BinaryLiterals
                      DataKinds
                      DefaultSignatures
                      DeriveDataTypeable
                      DeriveFoldable
                      DeriveFunctor
                      DeriveGeneric
                      DeriveLift
                      DeriveTraversable
                      DerivingStrategies
                      InstanceSigs
                      KindSignatures
                      ScopedTypeVariables
                      StandaloneDeriving
                      TupleSections
                      TypeApplications
                      TypeOperators
                      ViewPatterns

  if impl(ghc >= 8.6)
      default-extensions: NoStarIsType


Library
  import:             common-options
  HS-Source-Dirs:     src

  ghc-options:        -Wall -Wcompat
  CPP-Options:        -DCABAL

  other-extensions:   CPP
                      DeriveAnyClass
                      FlexibleContexts
                      FlexibleInstances
                      GeneralizedNewtypeDeriving
                      LambdaCase
                      MultiParamTypeClasses
                      OverloadedStrings
                      RankNTypes
                      RecordWildCards
                      TemplateHaskell

  Build-depends:      aeson                   >= 0.6.2.0  && < 1.5,
                      ansi-terminal           >= 0.8.0.0  && < 0.11,
                      attoparsec              >= 0.10.4.0 && < 0.14,
                      base                    >= 4.11     && < 5,
                      binary                  >= 0.8.5    && < 0.11,
                      bytestring              >= 0.10.0.2 && < 0.11,
                      clash-prelude           == 1.2.0,
                      concurrent-supply       >= 0.1.7    && < 0.2,
                      containers              >= 0.5.0.0  && < 0.7,
                      data-binary-ieee754     >= 0.4.4    && < 0.6,
                      data-default            >= 0.7      && < 0.8,
                      deepseq                 >= 1.3.0.2  && < 1.5,
                      dlist                   >= 0.8      && < 0.9,
                      directory               >= 1.2.0.1  && < 1.4,
                      errors                  >= 1.4.2    && < 2.4,
                      exceptions              >= 0.8.3    && < 0.11.0,
                      extra                   >= 1.6.18   && < 1.7,
                      filepath                >= 1.3.0.1  && < 1.5,
                      ghc                     >= 8.4.0    && < 8.9,
                      ghc-boot-th,
                      hashable                >= 1.2.1.0  && < 1.4,
                      haskell-src-meta        >= 0.8      && < 0.9,
                      hint                    >= 0.7      && < 0.10,
                      integer-gmp             >= 1.0      && < 1.1,
                      interpolate             >= 0.2.0    && < 1.0,
                      lens                    >= 4.10     && < 4.20,
                      mtl                     >= 2.1.2    && < 2.3,
                      ordered-containers      >= 0.2      && < 0.3,
                      parsers                 >= 0.12.8   && < 1.0,
                      prettyprinter           >= 1.2.0.1  && < 2.0,
                      primitive               >= 0.5.0.1  && < 1.0,
                      process                 >= 1.1.0.2  && < 1.7,
                      reducers                >= 3.12.2   && < 4.0,
                      template-haskell        >= 2.8.0.0  && < 2.16,
                      temporary               >= 1.2.1    && < 1.4,
                      text                    >= 1.2.2    && < 1.3,
                      text-show               >= 3.7      && < 3.9,
                      time                    >= 1.4.0.1  && < 1.10,
                      transformers            >= 0.5.2.0  && < 0.6,
                      trifecta                >= 1.7.1.1  && < 2.2,
                      vector                  >= 0.11     && < 1.0,
                      vector-binary-instances >= 0.2.3.5  && < 0.3,
                      unordered-containers    >= 0.2.3.3  && < 0.3

  Autogen-Modules:    Paths_clash_lib

  Exposed-modules:    Clash.Annotations.BitRepresentation.ClashLib

                      Clash.Backend
                      Clash.Backend.SystemVerilog
                      Clash.Backend.Verilog
                      Clash.Backend.VHDL

                      Clash.Core.DataCon
                      Clash.Core.EqSolver
                      Clash.Core.Evaluator
                      Clash.Core.Evaluator.Types
                      Clash.Core.FreeVars
                      Clash.Core.Literal
                      Clash.Core.Name
                      Clash.Core.Pretty
                      Clash.Core.Subst
                      Clash.Core.Term
                      Clash.Core.TermInfo
                      Clash.Core.TermLiteral
                      Clash.Core.TermLiteral.TH
                      Clash.Core.TyCon
                      Clash.Core.Type
                      Clash.Core.TysPrim
                      Clash.Core.Util
                      Clash.Core.Var
                      Clash.Core.VarEnv

                      Clash.Debug

                      Clash.Driver
                      Clash.Driver.Types

                      Clash.Netlist
                      Clash.Netlist.BlackBox
                      Clash.Netlist.BlackBox.Parser
                      Clash.Netlist.BlackBox.Types
                      Clash.Netlist.BlackBox.Util
                      Clash.Netlist.Id
                      Clash.Netlist.Types
                      Clash.Netlist.Util

                      Clash.Normalize
                      Clash.Normalize.DEC
                      Clash.Normalize.PrimitiveReductions
                      Clash.Normalize.Strategy
                      Clash.Normalize.Transformations
                      Clash.Normalize.Types
                      Clash.Normalize.Util

                      Clash.Primitives.Types
                      Clash.Primitives.Util

                      Clash.Primitives.GHC.Int
                      Clash.Primitives.GHC.Literal
                      Clash.Primitives.GHC.Word
                      Clash.Primitives.Intel.ClockGen
                      Clash.Primitives.Sized.ToInteger
                      Clash.Primitives.Sized.Vector

                      Clash.Rewrite.Combinators
                      Clash.Rewrite.Types
                      Clash.Rewrite.Util

                      Clash.Unique
                      Clash.Util
                      Clash.Util.Graph
                      Clash.Util.Interpolate
                      Clash.Pretty

                      Data.List.Extra
                      Data.Text.Prettyprint.Doc.Extra

  Other-Modules:      Clash.Annotations.TopEntity.Extra
                      Data.Aeson.Extra
                      Data.Semigroup.Monad.Extra
                      Data.Set.Ordered.Extra
                      Data.Vector.Primitive.Extra
                      GHC.BasicTypes.Extra
                      GHC.SrcLoc.Extra
                      Paths_clash_lib

  if flag(debug)
    cpp-options:      -DDEBUG

  if flag(history)
    cpp-options:      -DHISTORY

test-suite unittests
  import:           common-options
  type:             exitcode-stdio-1.0
  default-language: Haskell2010
  main-is:          unittests.hs
  ghc-options:      -Wall -Wcompat
  hs-source-dirs:   tests

  if !flag(unittests)
    buildable: False
  else
    build-depends:
      clash-prelude,
      clash-lib,

      ghc-typelits-knownnat,

      base,
      ghc,
      lens,
      tasty         >= 1.2      && < 1.3,
      tasty-hunit

  Other-Modules: Clash.Tests.Core.FreeVars
                 Clash.Tests.Core.Subst
                 Clash.Tests.Util.Interpolate