Name:                 clash-prelude
Version:              0.99.1
Synopsis:             CAES Language for Synchronous Hardware - Prelude library
Description:
  CλaSH (pronounced ‘clash’) is a functional hardware description language that
  borrows both its syntax and semantics from the functional programming language
  Haskell. The CλaSH compiler transforms these high-level descriptions to
  low-level synthesizable VHDL, Verilog, or SystemVerilog.
  .
  Features of CλaSH:
  .
  * 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:
  .
  * Prelude library containing datatypes and functions for circuit design
  .
  To use the library:
  .
  * Import "Clash.Prelude"
  .
  * Alternatively, if you want to explicitly route clock and reset ports,
    for more straightforward multi-clock designs, you can import the
    "Clash.Explicit.Prelude" module. Note that you should not import
    "Clash.Prelude" and "Clash.Explicit.Prelude" at the same time as they
    have overlapping definitions.
  .
  A preliminary version of a tutorial can be found in "Clash.Tutorial", for a
  general overview of the library you should however check out "Clash.Prelude".
  Some circuit examples can be found in "Clash.Examples".
Homepage:             http://www.clash-lang.org/
bug-reports:          http://github.com/clash-lang/clash-prelude/issues
License:              BSD2
License-file:         LICENSE
Author:               Christiaan Baaij
Maintainer:           Christiaan Baaij <christiaan.baaij@gmail.com>
Copyright:            Copyright © 2013-2016, University of Twente,
                                  2016-2017, Myrtle Software Ltd,
                                  2017     , QBayLogic, Google Inc.
Category:             Hardware
Build-type:           Simple

Extra-source-files:   README.md
                      CHANGELOG.md
                      AUTHORS.md

extra-doc-files:      doc/*.svg

Cabal-version:        1.18
Tested-with:          GHC == 8.2.2, GHC == 8.4.1, GHC == 8.5

source-repository head
  type: git
  location: https://github.com/clash-lang/clash-prelude.git

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

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

Library
  HS-Source-Dirs:     src

  default-language:   Haskell2010
  ghc-options:        -Wall -fexpose-all-unfoldings -fno-worker-wrapper

  Exposed-modules:    Clash.Annotations.TopEntity
                      Clash.Annotations.Primitive

                      Clash.Class.BitPack
                      Clash.Class.Num
                      Clash.Class.Resize

                      Clash.Explicit.BlockRam
                      Clash.Explicit.BlockRam.File
                      Clash.Explicit.DDR
                      Clash.Explicit.Mealy
                      Clash.Explicit.Moore
                      Clash.Explicit.RAM
                      Clash.Explicit.ROM
                      Clash.Explicit.ROM.File
                      Clash.Explicit.Prelude
                      Clash.Explicit.Prelude.Safe
                      Clash.Explicit.Signal
                      Clash.Explicit.Signal.Delayed
                      Clash.Explicit.Synchronizer
                      Clash.Explicit.Testbench

                      Clash.Hidden

                      Clash.Intel.ClockGen
                      Clash.Intel.DDR

                      Clash.NamedTypes

                      Clash.Prelude
                      Clash.Prelude.BitIndex
                      Clash.Prelude.BitReduction
                      Clash.Prelude.BlockRam
                      Clash.Prelude.BlockRam.File
                      Clash.Prelude.DataFlow
                      Clash.Prelude.Mealy
                      Clash.Prelude.Moore
                      Clash.Prelude.RAM
                      Clash.Prelude.ROM
                      Clash.Prelude.ROM.File
                      Clash.Prelude.Safe
                      Clash.Prelude.Testbench

                      Clash.Promoted.Nat
                      Clash.Promoted.Nat.Literals
                      Clash.Promoted.Nat.TH
                      Clash.Promoted.Nat.Unsafe
                      Clash.Promoted.Symbol

                      Clash.Signal
                      Clash.Signal.Bundle
                      Clash.Signal.Delayed
                      Clash.Signal.Internal

                      Clash.Sized.BitVector
                      Clash.Sized.Fixed
                      Clash.Sized.Index
                      Clash.Sized.RTree
                      Clash.Sized.Signed
                      Clash.Sized.Unsigned
                      Clash.Sized.Vector

                      Clash.Sized.Internal.BitVector
                      Clash.Sized.Internal.Index
                      Clash.Sized.Internal.Signed
                      Clash.Sized.Internal.Unsigned

                      Clash.XException

                      Clash.Xilinx.ClockGen
                      Clash.Xilinx.DDR

                      Clash.Tutorial
                      Clash.Examples

  other-extensions:   CPP
                      BangPatterns
                      ConstraintKinds
                      DataKinds
                      DefaultSignatures
                      DeriveDataTypeable
                      DeriveTraversable
                      DeriveLift
                      FlexibleContexts
                      FlexibleInstances
                      GADTs
                      GeneralizedNewtypeDeriving
                      InstanceSigs
                      KindSignatures
                      MagicHash
                      MultiParamTypeClasses
                      PatternSynonyms
                      Rank2Types
                      ScopedTypeVariables
                      StandaloneDeriving
                      TemplateHaskell
                      TupleSections
                      TypeApplications
                      TypeFamilies
                      TypeOperators
                      UndecidableInstances
                      ViewPatterns

  Build-depends:      array                     >= 0.5.1.0 && < 0.6,
                      base                      >= 4.8.0.0 && < 5,
                      bifunctors                >= 5.4.0   && < 6.0,
                      constraints               >= 0.8     && < 1.0,
                      data-binary-ieee754       >= 0.4.4   && < 0.6,
                      data-default              >= 0.5.3   && < 0.8,
                      integer-gmp               >= 0.5.1.0 && < 1.1,
                      deepseq                   >= 1.4.1.0 && < 1.5,
                      ghc-prim                  >= 0.3.1.0 && < 0.6,
                      ghc-typelits-extra        >= 0.2.5   && < 0.3,
                      ghc-typelits-knownnat     >= 0.5     && < 0.6,
                      ghc-typelits-natnormalise >= 0.6     && < 0.7,
                      half                      >= 0.2.2.3 && < 1.0,
                      lens                      >= 4.9     && < 4.17,
                      QuickCheck                >= 2.7     && < 2.12,
                      reflection                >= 2       && < 2.2,
                      singletons                >= 1.0     && < 3.0,
                      template-haskell          >= 2.12.0.0 && < 2.14,
                      transformers              >= 0.4.2.0 && < 0.6,
                      vector                    >= 0.11    && < 1.0

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

  if !flag(doctests)
    buildable: False
  else
    build-depends:
      base    >= 4     && < 5,
      doctest >= 0.9.1 && < 0.16,
      clash-prelude

benchmark benchmark-clash-prelude
  type:             exitcode-stdio-1.0
  default-language: Haskell2010
  main-is:          benchmark-main.hs
  ghc-options:      -Wall
  hs-source-dirs:   benchmarks

  if !flag(benchmarks)
    buildable: False
  else
    build-depends:
      base              >= 4       && < 5,
      clash-prelude,
      criterion         >= 1.3.0.0 && < 1.6,
      deepseq           >= 1.4.0.1 && < 1.5,
      template-haskell  >= 2.9.0.0 && < 2.14

  Other-Modules:    BenchBitVector
                    BenchFixed
                    BenchSigned