name:                ombra
version:             1.1.0.0
synopsis:            Render engine.
description:         
homepage:            https://github.com/ziocroc/Ombra
bug-reports:         https://github.com/ziocroc/Ombra/issues
license:             BSD3
license-file:        LICENSE
author:              Luca Prezzavento
maintainer:          ziocroc@gmail.com
stability:           Experimental
copyright:           Copyright © 2014-2017 Luca Prezzavento
category:            Graphics
build-type:          Simple
extra-source-files:  README.md, CHANGES.md
cabal-version:       >=1.10

source-repository head
  type:      git
  location:  https://github.com/ziocroc/Ombra
        
flag opengl
  description: Enable the OpenGL backend. Main module: Graphics.Rendering.Ombra.Backend.OpenGL

flag webgl
  description: Enable the GHCJS/WebGL backend, if compiled with GHCJS. This automatically disables the OpenGL backend. Main module: Graphics.Rendering.Ombra.Backend.WebGL
  default:     False

library
  exposed-modules:     Graphics.Rendering.Ombra,
                       Graphics.Rendering.Ombra.Blend,
                       Graphics.Rendering.Ombra.OutBuffer,
                       Graphics.Rendering.Ombra.Texture,
                       Graphics.Rendering.Ombra.Stencil,
                       Graphics.Rendering.Ombra.Shader,
                       Graphics.Rendering.Ombra.Shader.Language,
                       Graphics.Rendering.Ombra.Draw,
                       Graphics.Rendering.Ombra.Geometry,
                       Graphics.Rendering.Ombra.Image,
                       Graphics.Rendering.Ombra.Color,
                       Graphics.Rendering.Ombra.Backend,
                       Graphics.Rendering.Ombra.Vector

  other-modules:       Graphics.Rendering.Ombra.Internal.Resource,
                       Graphics.Rendering.Ombra.Internal.GL,
                       Graphics.Rendering.Ombra.Internal.TList,
                       Graphics.Rendering.Ombra.Screen,
                       Graphics.Rendering.Ombra.Shader.GLSL,
                       Graphics.Rendering.Ombra.Shader.Program,
                       Graphics.Rendering.Ombra.Shader.CPU,
                       Graphics.Rendering.Ombra.Shader.Language.Types,
                       Graphics.Rendering.Ombra.Shader.Language.Functions,
                       Graphics.Rendering.Ombra.Shader.Types,
                       Graphics.Rendering.Ombra.Blend.Draw,
                       Graphics.Rendering.Ombra.Blend.Types,
                       Graphics.Rendering.Ombra.Culling.Draw,
                       Graphics.Rendering.Ombra.Culling.Types,
                       Graphics.Rendering.Ombra.Stencil.Draw,
                       Graphics.Rendering.Ombra.Stencil.Types,
                       Graphics.Rendering.Ombra.Draw.Class,
                       Graphics.Rendering.Ombra.Draw.Monad,
                       Graphics.Rendering.Ombra.OutBuffer.Types
                       Graphics.Rendering.Ombra.Image.Types,
                       Graphics.Rendering.Ombra.Geometry.Draw,
                       Graphics.Rendering.Ombra.Geometry.Types,
                       Graphics.Rendering.Ombra.Texture.Draw,
                       Graphics.Rendering.Ombra.Texture.Types

  if flag(webgl)
    exposed-modules:   Graphics.Rendering.Ombra.Backend.WebGL
    other-modules:     Graphics.Rendering.Ombra.Backend.WebGL.Raw,
                       Graphics.Rendering.Ombra.Backend.WebGL.Types,
                       Graphics.Rendering.Ombra.Backend.WebGL.Const

  if flag(opengl) && !flag(webgl)
    exposed-modules:   Graphics.Rendering.Ombra.Backend.OpenGL

  other-extensions:    TypeOperators,
                       DataKinds,
                       ConstraintKinds,
                       MultiParamTypeClasses,
                       TypeFamilies,
                       FlexibleContexts,
                       FlexibleInstances,
                       RankNTypes,
                       GADTs,
                       TypeSynonymInstances,
                       KindSignatures,
                       UndecidableInstances,
                       ExistentialQuantification,
                       GeneralizedNewtypeDeriving,
                       NullaryTypeClasses,
                       PolyKinds,
                       ScopedTypeVariables,
                       FunctionalDependencies

  build-depends:       base <4.11,
                       Boolean <0.3,
                       vector-space <0.12,
                       hashable <1.3,
                       unordered-containers <0.3,
                       transformers <0.6,
                       transformers-base <0.5,
                       monad-control < 1.1,
                       hashtables <1.4,
                       MemoTrie <0.7

  if flag(opengl) && !flag(webgl)
    build-depends:     gl >=0.8 && <0.9

  if flag(webgl)
    build-depends:     ghcjs-base

  default-language:    Haskell2010