packages feed

Yampa-0.15: Yampa.cabal

-- Copyright (c) 2003, Henrik Nilsson, Antony Courtney and Yale University.
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions are met:
--
-- - Redistributions of source code must retain the above copyright notice,
-- this list of conditions and the following disclaimer.
--
-- - Redistributions in binary form must reproduce the above copyright notice,
-- this list of conditions and the following disclaimer in the documentation
-- and/or other materials provided with the distribution.
--
-- - Neither name of the copyright holders nor the names of its contributors
-- may be used to endorse or promote products derived from this software
-- without specific prior written permission.
--
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND THE CONTRIBUTORS "AS
-- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR THE
-- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-- OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cabal-version: >= 1.10
build-type:    Simple

name:          Yampa
version:       0.15
author:        Henrik Nilsson, Antony Courtney
maintainer:    Ivan Perez (ivan.perez@keera.co.uk)
homepage:      https://github.com/ivanperez-keera/Yampa/
license:       BSD3
license-file:  LICENSE
category:      Reactivity, FRP
synopsis:
  Elegant Functional Reactive Programming Language for Hybrid Systems
description:
  Domain-specific language embedded in Haskell for programming hybrid (mixed
  discrete-time and continuous-time) systems. Yampa is based on the concepts of
  Functional Reactive Programming (FRP).

extra-source-files:
  CHANGELOG,

  examples/Diagrams.hs

source-repository head
  type:     git
  location: git://github.com/ivanperez-keera/Yampa.git
  subdir:   yampa


-- You can disable the hlint test suite with -f-test-hlint
flag test-hlint
  description: Enable hlint test suite
  default:     False
  manual:      True

-- You can disable the haddock coverage test suite with -f-test-doc-coverage
flag test-doc-coverage
  description: Enable haddock coverage test suite
  default:     False
  manual:      True

flag examples
  description: Enable examples
  default:     False
  manual:      True

-- WARNING: The following flag exposes Yampa's core. You should avoid using
-- this at all. The only reason to expose it is that we are using Yampa for
-- research, and many extensions require that we expose the constructors. No
-- released project should depend on this. In general, you should always
-- install Yampa with this flag disabled.
flag expose-core
  description:
    You can enable exposing some of Yampa's core constructs using
    -fexpose-core.
    .
    Enabling this is an unsupported configuration, but it may be useful if you
    are building an extension of Yampa for research and do not wish to fork
    Yampa completely.
    .
    No released project should ever depend on this.
  default: False
  manual:  True


library
  exposed-modules:
    FRP.Yampa
    FRP.Yampa.Arrow
    FRP.Yampa.Basic
    FRP.Yampa.Conditional
    FRP.Yampa.Delays
    FRP.Yampa.Event
    FRP.Yampa.EventS
    FRP.Yampa.Hybrid
    FRP.Yampa.Integration
    FRP.Yampa.Loop
    FRP.Yampa.Random
    FRP.Yampa.Scan
    FRP.Yampa.Simulation
    FRP.Yampa.Switches
    FRP.Yampa.Task
    FRP.Yampa.Time

  other-modules:
    -- Auxiliary (commonly used) types
    FRP.Yampa.Diagnostics

  build-depends:
      base < 6

    , deepseq             >= 1.3.0.1 && < 1.6
    , random              >= 1.1     && < 1.3
    , simple-affine-space >= 0.1     && < 0.3

  default-language:
    Haskell2010

  hs-source-dirs:
    src

  ghc-options:
    -O3 -Wall -fno-warn-name-shadowing

  if !impl(ghc >= 8.0)
    build-depends:
      fail == 4.9.*

  if flag(expose-core)
    exposed-modules:
      FRP.Yampa.InternalCore
  else
    other-modules:
      FRP.Yampa.InternalCore


test-suite hlint
  type:
    exitcode-stdio-1.0

  main-is:
    hlint.hs

  default-language:
    Haskell2010

  hs-source-dirs:
    tests

  if !flag(test-hlint)
    buildable:
      False
  else
    build-depends:
        base >= 4 && < 5

      , hlint >= 1.7

-- Verify that the code is thoroughly documented
test-suite haddock-coverage
  type:
    exitcode-stdio-1.0

  main-is:
    HaddockCoverage.hs

  default-language:
    Haskell2010

  hs-source-dirs:
    tests

  ghc-options:
    -Wall

  if !flag(test-doc-coverage)
    buildable:
      False
  else
    build-depends:
        base >= 4 && < 5

      , directory    >= 1.2     && < 1.4
      , filepath     >= 1.3.0.1 && < 1.6
      , process      >= 1.1.0.2 && < 1.7
      , regex-posix  >= 0.95    && < 0.97


executable yampa-examples-sdl-bouncingbox
  main-is:
    MainBouncingBox.hs

  other-modules:
    YampaSDL

  default-language:
    Haskell2010

  hs-source-dirs:
    examples/yampa-game/

  ghc-options:
    -O3 -Wall -fno-warn-name-shadowing

  if flag(examples)
    buildable:
      True
    build-depends:
        base < 5

      , deepseq >= 1.3.0.1 && < 1.6
      , random  >= 1.1     && < 1.3
      , SDL     >= 0.6     && < 0.7
      , Yampa
  else
    buildable:
      False


executable yampa-examples-sdl-circlingmouse
  main-is:
    MainCircleMouse.hs

  other-modules:
    YampaSDL

  default-language:
    Haskell2010

  hs-source-dirs:
    examples/yampa-game/

  ghc-options:
    -O3 -Wall -fno-warn-name-shadowing

  if flag(examples)
    buildable:
      True
    build-depends:
        base < 5

      , deepseq >= 1.3.0.1 && < 1.6
      , random  >= 1.1     && < 1.3
      , SDL     >= 0.6     && < 0.7
      , Yampa
  else
    buildable:
      False


executable yampa-examples-sdl-wiimote
  main-is:
    MainWiimote.hs

  other-modules:
    YampaSDL

  default-language:
    Haskell2010

  hs-source-dirs:
    examples/yampa-game/

  ghc-options:
    -O3 -Wall -fno-warn-name-shadowing -rtsopts

  if flag(examples)
    buildable:
      True
    build-depends:
        base < 5

      , deepseq >= 1.3.0.1 && < 1.6
      , hcwiid  >= 0.0.5   && < 0.1
      , random  >= 1.1     && < 1.3
      , SDL     >= 0.6     && < 0.7
      , Yampa
  else
    buildable:
      False


executable yampa-examples-elevator
  main-is:
    TestElevatorMain.hs

  other-modules:
    Elevator

  default-language:
    Haskell2010

  hs-source-dirs:
    examples/Elevator

  ghc-options:
    -O3 -Wall -fno-warn-name-shadowing

  if flag(examples)
    buildable:
      True
    build-depends:
        base < 5
      , Yampa
  else
    buildable:
      False


executable yampa-examples-tailgatingdetector
  main-is:
    TestTGMain.hs

  other-modules:
    TailgatingDetector

  default-language:
    Haskell2010

  hs-source-dirs:
    examples/TailgatingDetector

  ghc-options:
    -O3 -Wall -fno-warn-name-shadowing

  if flag(examples)
    buildable:
      True
    build-depends:
        base < 5
      , Yampa
  else
    buildable:
      False

benchmark yampa-bench
  type:
    exitcode-stdio-1.0

  main-is:
    Bench.hs

  build-depends:
       base      < 5
     , criterion >= 0.5.0.0 && < 1.7
     , filepath  >= 1.3.0.1 && < 1.6
     , time      >= 1.4     && < 1.15
     , Yampa

  default-language:
    Haskell2010

  hs-source-dirs:
    benchmarks