-- Initial Angle.cabal generated by cabal init.  For further documentation,
--  see http://haskell.org/cabal/users-guide/

name:                angle
version:             0.8.1.0
synopsis:            A small, general-purpose programming language.
license:             GPL-3
license-file:        LICENSE
author:              Ben Moon
maintainer:          guiltydolphin@gmail.com
copyright:           Ben Moon 2015
category:            Compilers/Interpreters
build-type:          Simple
-- extra-source-files:
cabal-version:       >=1.10
description:         An implementation of a small, weak and dynamically typed,
                     interpreted, functional programming language.
source-repository head
  type: git
  location: git://github.com/GuiltyDolphin/angle.git


flag test-properties
  default: True
  manual:  True


library
  exposed-modules:     Angle.Parse.Parser
                     , Angle.Parse.Parser.Internal
                     , Angle.Parse.Helpers
                     , Angle.Types.Lang
                     , Angle.Types.Scope
                     , Angle.Exec.Exec
                     , Angle.Exec.Error
                     , Angle.Parse.Token
                     , Angle.Scanner
                     , Angle.Exec.Operations
                     , Angle.Exec.Builtins
                     , Angle.Exec.Scope
                     , Angle.Exec.Types
                     , Angle.Exec.Types.Internal
  other-modules:
  other-extensions:    GeneralizedNewtypeDeriving, MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances
  build-depends:       base >=4.8 && <4.9
                     , containers >=0.5 && <0.6
                     , directory >= 1.2.1.0
                     , filepath >= 1.3.0.2
                     , mtl >=2.2.1 && <2.3
                     , transformers >= 0.3.0.0
                     , transformers-compat >= 0.3.3.3
                     , process >= 1.2.0.0
  hs-source-dirs:      src
  default-language:    Haskell2010
  buildable:           True
  ghc-options:         -Wall -fno-warn-unused-do-bind


executable angle
  main-is:             Main.hs
  hs-source-dirs:      angle-commandline
  other-modules:       Angle.REPL
                     , Angle.Options
                     , Angle.Interpreter
                     , Paths_angle
  default-language:    Haskell2010
  build-depends:       angle
                     , base
                     , containers >=0.5 && <0.6
                     , directory >= 1.2.1.0
                     , haskeline >= 0.7.2.1
                     , mtl >=2.2.1 && <2.3
                     , split >= 0.2.2
                     , transformers >= 0.3.0.0
                     , transformers-compat >= 0.3.3.3
  default-language:    Haskell2010
  buildable:           True
  ghc-options:         -Wall -fno-warn-unused-do-bind


test-suite properties
  type:                exitcode-stdio-1.0
  main-is:             TestSuite.hs
  hs-source-dirs:      tests
  other-modules:       Test.Angle.Parse.Parser
                     , Test.Angle.Parse.Token
                     , TestHelper
                     , Test.Angle.Types.Scope
                     , Test.Angle.Exec.Operations
                     , Test.Angle.Exec.Exec
                     , Test.Angle.Exec.Types
  if !flag(test-properties)
    buildable: False
  else
    build-depends:       base
                       , angle
                       , QuickCheck >= 2.7.6
                       , transformers
                       , transformers-compat
                       , containers >=0.5 && <0.6
                       , mtl >= 2.2.1
                       , tasty >= 0.10.1.2
                       , tasty-quickcheck >= 0.8.3.2
  ghc-options:         -Wall -fno-warn-unused-do-bind -fno-warn-orphans
  default-language:    Haskell2010


benchmark parsing
  type:                exitcode-stdio-1.0
  main-is:             parsing.hs
  hs-source-dirs:      benchmarks
  build-depends:       base
                     , criterion
                     , angle
  ghc-options:         -O
  default-language:    Haskell2010


benchmark scanning
  type:                exitcode-stdio-1.0
  main-is:             scanning.hs
  hs-source-dirs:      benchmarks
  build-depends:       base
                     , criterion
                     , angle
  ghc-options:         -O
  default-language:    Haskell2010


benchmark operations
  type:                exitcode-stdio-1.0
  main-is:             operations.hs
  hs-source-dirs:      benchmarks
  build-depends:       base
                     , criterion
                     , angle
  ghc-options:         -O
  default-language:    Haskell2010
