name:                affection

-- The package version.  See the Haskell package versioning policy (PVP) 
-- for standards guiding when and how versions should be incremented.
-- http://www.haskell.org/haskellwiki/Package_versioning_policy
-- PVP summary:      +-+------- breaking API changes
--                   | | +----- non-breaking API additions
--                   | | | +--- code changes with no API change
version:             0.0.0.6
synopsis:            A simple Game Engine using SDL
description:         This package contains Affection, a simple game engine
                     written in Haskell using SDL and GEGL.
                     This Engine is still work in progress and even minor
                     version bumps may contain breaking api changes.
homepage:            https://github.com/nek0/affection#readme
license:             LGPL-3
license-file:        LICENSE
author:              nek0
maintainer:          nek0@chelnok.de
category:            Game
build-type:          Simple

-- Extra files to be distributed with the package, such as examples or a 
-- README.
-- extra-source-files:  

cabal-version:       >=1.10

source-repository head
  type:     git
  location: https://github.com/nek0/affection

flag debug
  description:       Enable debug messages
  default:           False
  manual:            True

flag warn
  description:       Enable warning messages
  default:           False
  manual:            True

flag error
  description:       Enable error messages
  default:           False
  manual:            True

flag examples
  description:       Build example programs
  default:           False

library
  if flag(debug)
    cpp-options:       -DDEBUG
  if flag(warn)
    cpp-options:       -DWARN
  if flag(error)
    cpp-options:       -DERROR
  exposed-modules:     Affection
                     , Affection.Logging
                     , Affection.Types
                     , Affection.StateMachine
                     , Affection.MouseInteractable
                     , Affection.Util
                     , Affection.MessageBus
                     , Affection.MessageBus.Util
                     , Affection.MessageBus.Class
                     , Affection.MessageBus.Message
                     , Affection.MessageBus.Message.Class
                     , Affection.MessageBus.Message.WindowMessage
                     , Affection.MessageBus.Message.KeyboardMessage
                     , Affection.MessageBus.Message.MouseMessage
                     , Affection.Subsystems
                     , Affection.Subsystems.Class
                     , Affection.Subsystems.AffectionWindow
                     , Affection.Subsystems.AffectionKeyboard
                     , Affection.Subsystems.AffectionMouse
  default-extensions:  OverloadedStrings

  -- Modules included in this library but not exported.
  -- other-modules:       
  
  -- LANGUAGE extensions used by modules in this package.
  other-extensions:    GADTs
                     , KindSignatures
                     , FlexibleInstances
                     , MultiParamTypeClasses
                     , UndecidableInstances
  hs-source-dirs:      src
  default-language:    Haskell2010
  ghc-options:       -Wall
  -- Other library packages from which modules are imported.
  build-depends:       base >=4.9
                     , sdl2
                     , linear
                     , text
                     , mtl
                     , monad-loops
                     , monad-parallel
                     , containers
                     , clock
                     , glib
                     , bytestring
                     , OpenGL
                     , stm
                     , uuid

executable example00
  if flag(debug)
    cpp-options:       -DDEBUG
  if flag(warn)
    cpp-options:       -DWARN
  if flag(error)
    cpp-options:       -DERROR
  hs-source-dirs:    examples
  main-is:           example00.hs
  ghc-options:       -threaded -Wall
  default-language:  Haskell2010
  default-extensions: OverloadedStrings
  if flag(examples)
    build-depends:     base
                     , affection
                     , sdl2
                     , stm
  else
    buildable:       False

-- executable example01
--   hs-source-dirs:    examples
--   main-is:           example01.hs
--   ghc-options:       -threaded -Wall
--   default-language:  Haskell2010
--   default-extensions: OverloadedStrings
--   if flag(examples)
--     build-depends:     base
--                      , affection
--                      , sdl2
--                      , gegl
--                      , babl
--                      , containers
--                      , mtl
--   else
--     buildable:       False
-- 
-- executable example02
--   hs-source-dirs:    examples
--   main-is:           example02.hs
--   ghc-options:       -threaded -Wall
--   default-language:  Haskell2010
--   default-extensions: OverloadedStrings
--   if flag(examples)
--     build-depends:     base
--                      , affection
--                      , sdl2
--                      , gegl
--                      , babl
--                      , containers
--                      , mtl
--                      , monad-parallel
--   else
--     buildable:       False
-- 
-- executable example02.1
--   hs-source-dirs:    examples
--   main-is:           example02.1.hs
--   ghc-options:       -threaded -Wall
--   default-language:  Haskell2010
--   default-extensions: OverloadedStrings
--   if flag(examples)
--     build-depends:     base
--                      , affection
--                      , sdl2
--                      , gegl
--                      , babl
--                      , containers
--                      , mtl
--   else
--     buildable:       False
-- 
-- executable example03
--   hs-source-dirs:    examples
--   main-is:           example03.hs
--   ghc-options:       -threaded -Wall -auto-all -caf-all -rtsopts
--   default-language:  Haskell2010
--   default-extensions: OverloadedStrings
--   if flag(examples)
--     build-depends:     base
--                      , affection
--                      , sdl2
--                      , gegl
--                      , babl
--                      , containers
--                      , mtl
--                      , random
--   else
--     buildable:       False
-- 
-- executable example04
--   hs-source-dirs:    examples
--   main-is:           example04.hs
--   ghc-options:       -threaded -Wall -auto-all -caf-all -rtsopts
--   default-language:  Haskell2010
--   default-extensions: OverloadedStrings
--   if flag(examples)
--     build-depends:     base
--                      , affection
--                      , sdl2
--                      , gegl
--                      , babl
--                      , containers
--                      , mtl
--                      , random
--                      , monad-parallel
--   else
--     buildable:       False
-- 
-- executable example05
--   hs-source-dirs:    examples
--   main-is:           example05.hs
--   ghc-options:       -threaded -Wall -auto-all -caf-all -rtsopts
--   default-language:  Haskell2010
--   default-extensions: OverloadedStrings
--   if flag(examples)
--     build-depends:     base
--                      , affection
--                      , sdl2
--                      , gegl
--                      , babl
--                      , containers
--                      , unordered-containers
--                      , mtl
--                      , random
--                      , matrix
--                      , random
--                      , monad-parallel
--                      , parallel
--   else
--     buildable:       False