name:                brittany
version:             0.7.0.0
-- synopsis:            
-- description:         
license:             AllRightsReserved
-- license-file:        LICENSE
author:              Lennart Spitzner
maintainer:          lsp@informatik.uni-kiel.de
-- copyright:           
category:            Language
build-type:          Simple
extra-source-files:  ChangeLog.md
cabal-version:       >=1.10

flag brittany-dev
  description: dev options
  default: False
  manual: True

flag brittany-dev-lib
  description: set buildable false for anything but lib
  default: False
  manual: True

library {
  default-language:
    Haskell2010
  hs-source-dirs:
    src
  exposed-modules: {
    Language.Haskell.Brittany
    Language.Haskell.Brittany.Prelude
    Language.Haskell.Brittany.Types
    Language.Haskell.Brittany.Utils
    Language.Haskell.Brittany.Config
    Language.Haskell.Brittany.Config.Types
  }
  other-modules: {
    Language.Haskell.Brittany.LayouterBasics
    Language.Haskell.Brittany.Backend
    Language.Haskell.Brittany.BackendUtils
    Language.Haskell.Brittany.ExactPrintUtils
    Language.Haskell.Brittany.Layouters.Type
    Language.Haskell.Brittany.Layouters.Decl
    Language.Haskell.Brittany.Layouters.Expr
    Language.Haskell.Brittany.Layouters.Stmt
    Language.Haskell.Brittany.Layouters.Pattern
    Language.Haskell.Brittany.Transformations.Alt
    Language.Haskell.Brittany.Transformations.Floating
    Language.Haskell.Brittany.Transformations.Par
    Language.Haskell.Brittany.Transformations.Columns
    Language.Haskell.Brittany.Transformations.Indent
  }
  ghc-options: {
    -Wall
    -fprof-auto -fprof-cafs -fno-spec-constr
    -j
    -fno-warn-unused-imports
    -fno-warn-orphans
  }
  if flag(brittany-dev) {
    ghc-options: -O0 -Werror -fobject-code
  }
  build-depends:
    { base >=4.9 && <4.10
    , ghc >=8.0.1 && <8.1
    , ghc-paths >=0.1.0.9 && <0.2
    , ghc-exactprint >=0.5.1.1 && <0.6
    , transformers >=0.5.2.0 && <0.6
    , containers >=0.5.7.1 && <0.6
    , mtl >=2.2.1 && <2.3
    , text >=1.2 && <1.3
    , multistate >=0.7.1.1 && <0.8
    , syb >=0.6 && <0.7
    , neat-interpolation >=0.3.2 && <0.4
    , data-tree-print
    , pretty >=1.1.3.3 && <1.2
    , bytestring >=0.10.8.1 && <0.11
    , directory >=1.2.6.2 && <1.3
    , lens
    , butcher
    , yaml >=0.8.18 && <0.9
    , extra >=1.4.10 && <1.5
    , uniplate >=1.6.12 && <1.7
    , strict >=0.3.2 && <0.4
    , monad-memo >=0.4.1 && <0.5
    , unsafe >=0.0 && <0.1
    , safe >=0.3.9 && <0.4
    , deepseq >=1.4.2.0 && <1.5
    , either >=4.4.1.1 && <4.5
    , semigroups >=0.18.2 && <0.19
    , cmdargs >=0.10.14 && <0.11
    }
  default-extensions: {
    CPP

    NoImplicitPrelude

    GADTs

    FlexibleContexts
    FlexibleInstances
    ScopedTypeVariables
    MonadComprehensions
    LambdaCase
    MultiWayIf
    KindSignatures
  }
  include-dirs:
    srcinc
}

executable brittany
  if flag(brittany-dev-lib) {
    buildable: False
  } else {
    buildable: True
  }
  main-is:             Main.hs
  -- other-modules:       
  -- other-extensions:    
  build-depends:
    { brittany
    , base >=4.9 && <4.10
    , ghc
    , ghc-paths
    , ghc-exactprint
    , transformers
    , containers
    , mtl
    , text
    , multistate
    , syb
    , neat-interpolation
    , hspec
    , data-tree-print
    , pretty
    , bytestring
    , directory
    , lens
    , butcher
    , yaml
    , extra
    , uniplate
    , strict
    , monad-memo
    , safe
    , filepath >=1.4.1.0 && <1.5
    , either
    , ghc-boot-th
    }
  hs-source-dirs:      src-brittany
  default-language:    Haskell2010
  default-extensions: {
    CPP

    NoImplicitPrelude

    GADTs

    FlexibleContexts
    FlexibleInstances
    ScopedTypeVariables
    MonadComprehensions
    LambdaCase
    MultiWayIf
    KindSignatures
  }
  ghc-options: {
    -Wall
    -fprof-auto -fprof-cafs -fno-spec-constr
    -j
    -fno-warn-unused-imports
    -fno-warn-orphans
    -rtsopts
    -with-rtsopts "-M2G"
  }
  if flag(brittany-dev) {
    ghc-options: -O0 -Werror -fobject-code
  }

test-suite unittests
  if flag(brittany-dev-lib) {
    buildable: False
  } else {
    buildable: True
  }
  type:             exitcode-stdio-1.0
  default-language: Haskell2010
  build-depends:
    { brittany
    , base >=4.9 && <4.10
    , ghc
    , ghc-paths
    , ghc-exactprint
    , transformers
    , containers
    , mtl
    , text
    , multistate
    , syb
    , neat-interpolation
    , hspec
    , data-tree-print
    , pretty
    , bytestring
    , directory
    , lens
    , butcher
    , yaml
    , extra
    , uniplate
    , strict
    , monad-memo
    , safe
    , either
    }
  ghc-options:      -Wall
  main-is:          TestMain.hs
  other-modules:    IdentityTests
                    TestUtils
                    AsymptoticPerfTests
  hs-source-dirs:   src-unittests
  default-extensions: {
    CPP

    NoImplicitPrelude

    GADTs

    FlexibleContexts
    FlexibleInstances
    ScopedTypeVariables
    MonadComprehensions
    LambdaCase
    MultiWayIf
    KindSignatures
  }
  ghc-options: {
    -Wall
    -j
    -fno-warn-unused-imports
    -fno-warn-orphans
    -rtsopts
    -with-rtsopts "-M2G"
  }
  if flag(brittany-dev) {
    ghc-options: -O0 -Werror -fobject-code
  }