immutaball-core-0.1.0.5.1: immutaball-core.cabal
cabal-version: 3.0
name: immutaball-core
version: 0.1.0.5.1
synopsis: Immutaball platformer game (prototype version)
description:
The Immutaball platformer game is a rewrite of Neverball in Haskell.
(Prototype version.)
category: Games
homepage: https://nibzdil.org/
bug-reports: https://nibzdil.org/
-- When packaged with Neverball data (e.g. into ‘immutaball’), distribute under
-- GPL terms to be compliant.
license: 0BSD
license-file: LICENSE.md
author: Byron Johnson
maintainer: bjohnson@nibzdil.org
build-type: Simple
copyright: 2024-2025, Byron Johnson
extra-source-files:
README.md
NOTES-building-dependencies.md
extra-doc-files:
CHANGELOG.md
doc/legal/*.md
doc/legal/*.txt
doc/screenshots/*.png
source-repository head
type: git
location: https://github.com/nibzdil/immutaball
--source-repository this
-- type: git
-- location: https://github.com/nibzdil/immutaball
-- tag: v0.1.0.0-dev
flag add-default-compiler-flags
description:
Add default set of compiler flags.
default: True
manual: True
flag internal-wires
description:
Instead of an external wires dependency, use an internal implementation
sufficient for this package. Useful since as of now, the latest
version on Hackage is not up-to-date with the latest versions of its
dependencies, so it would not build with this project without a
manually modified local build of this external dependency.
default: False
manual: False
common all-components
default-language: Haskell2010
other-extensions:
TemplateHaskell
TypeSynonymInstances
FlexibleInstances
InstanceSigs
ScopedTypeVariables
UndecidableInstances
RankNTypes
Arrows
DerivingVia
FlexibleContexts
ExistentialQuantification
ExplicitForAll
NondecreasingIndentation
hs-source-dirs: .
-- We use multiple threads. Include to fix this error:
-- > user error (RTS doesn't support multiple OS threads (use ghc -threaded when linking))
-- >
-- > Package: ghc-internal
-- > Module: GHC.Internal.IO.Exception
-- > Type: IOException
ghc-options: -threaded
if flag(add-default-compiler-flags)
-- Disable tab warner.
-- It's a better style: https://dmitryfrank.com/articles/indent_with_tabs_align_with_spaces
ghc-options: -Wall -Wno-tabs
-- ghc-options: -O2
build-depends:
base >= 4.9 && < 9.5,
bytestring >= 0.11.0.0 && < 0.13,
containers >= 0.6.0.1 && < 0.8,
transformers >= 0.5.0.0 && < 0.7,
pipes >= 4.3.16 && < 4.4,
lens >= 5.3.2 && < 5.4,
parallel >= 3.2.2.0 && < 3.3,
--stm >= 2.5.3.1 && < 2.6,
stm >= 2.5.1.0 && < 2.6,
async >= 2.2.5 && < 2.3,
--wires > 0.2.1 && < 0.3,
mtl >= 2.2 && < 2.4,
--filepath >= 1.5.3.0 && < 1.6,
filepath >= 1.4.2.2 && < 1.6,
--directory >= 1.3.8.5 && < 1.4,
directory >= 1.3.8.4 && < 1.4,
prettyprinter >= 1.7.1 && < 1.8,
parsec >= 3.1.17.0 && < 3.2,
unbounded-delays >= 0.1.1.1 && < 0.2,
time >= 1.12 && < 1.15,
sdl2 >= 2.5.5.0 && < 2.6,
gl >= 0.9 && < 0.10,
array >= 0.5.8.0 && < 0.6,
OpenGL >= 3.0.3.0 && < 3.1,
sdl2-ttf >= 2.1.3 && < 2.2,
libvorbis >= 0.1.0.2 && < 0.2,
JuicyPixels >= 3.3.9 && < 3.4,
curl >= 1.3.8 && < 1.3.9,
i18n >= 0.4.0.0 && < 0.5,
text >= 2.1 && < 2.2
if !flag(internal-wires)
build-depends:
wires > 0.2.1 && < 0.3
hs-source-dirs:
.
./dependency-substitutions/wires-nofallback-meta
other-modules:
Control.Wire.Meta
else
hs-source-dirs:
.
./dependency-substitutions/wires-fallback-meta
./dependency-substitutions/wires
other-modules:
Control.Wire.Meta
other-modules:
Control.Wire
Control.Wire.Controller
Control.Wire.Internal
common executable-components
build-depends: immutaball-core
other-modules:
Control.Monad.Trans.MaybeM
Data.LabeledBinTree
Immutaball.Ball.CLI
Immutaball.Ball.CLI.Config
Immutaball.Ball.Game
Immutaball.Ball.Level
Immutaball.Ball.Level.Render
Immutaball.Ball.LevelSets
Immutaball.Ball.Main
Immutaball.Ball.State.Game
Immutaball.Ball.State.LevelSelect
Immutaball.Ball.State.LevelSets
Immutaball.Ball.State.Play
Immutaball.Ball.State.Preplay
Immutaball.Ball.State.Title
Immutaball.Prelude
Immutaball.Putt.CLI
Immutaball.Putt.CLI.Config
Immutaball.Putt.Main
Immutaball.Share.AutoPar
Immutaball.Share.Config
Immutaball.Share.Config.Parser
Immutaball.Share.Config.Printer
Immutaball.Share.Context
Immutaball.Share.Context.Config
Immutaball.Share.Controller
Immutaball.Share.GLManager
Immutaball.Share.GLManager.Config
Immutaball.Share.GLManager.Types
Immutaball.Share.GUI
Immutaball.Share.ImmutaballIO
Immutaball.Share.ImmutaballIO.BasicIO
Immutaball.Share.ImmutaballIO.DirectoryIO
Immutaball.Share.ImmutaballIO.GLIO
Immutaball.Share.ImmutaballIO.SDLIO
Immutaball.Share.Level
Immutaball.Share.Level.Analysis
Immutaball.Share.Level.Analysis.LowLevel
Immutaball.Share.Level.Attributes
Immutaball.Share.Level.Base
Immutaball.Share.Level.Parser
Immutaball.Share.Level.Utils
Immutaball.Share.Math
Immutaball.Share.Math.Core
Immutaball.Share.Math.X3D
Immutaball.Share.SDLManager
Immutaball.Share.SDLManager.Config
Immutaball.Share.SDLManager.Types
Immutaball.Share.State
Immutaball.Share.State.Context
Immutaball.Share.Utils
Immutaball.Share.Video
Immutaball.Share.Video.LowLevel
Immutaball.Share.Video.Shaders
Immutaball.Share.Wire
executable immutaball
import: all-components
import: executable-components
main-is: Main.hs
executable immutaputt
import: all-components
import: executable-components
main-is: Putt.hs
library
import: all-components
exposed-modules:
Control.Monad.Trans.MaybeM
Data.LabeledBinTree
Immutaball.Ball.CLI
Immutaball.Ball.CLI.Config
Immutaball.Ball.Game
Immutaball.Ball.Level
Immutaball.Ball.Level.Render
Immutaball.Ball.LevelSets
Immutaball.Ball.Main
Immutaball.Ball.State.Game
Immutaball.Ball.State.LevelSelect
Immutaball.Ball.State.LevelSets
Immutaball.Ball.State.Play
Immutaball.Ball.State.Preplay
Immutaball.Ball.State.Title
Immutaball.Prelude
Immutaball.Putt.CLI
Immutaball.Putt.CLI.Config
Immutaball.Putt.Main
Immutaball.Share.AutoPar
Immutaball.Share.Config
Immutaball.Share.Config.Parser
Immutaball.Share.Config.Printer
Immutaball.Share.Context
Immutaball.Share.Context.Config
Immutaball.Share.Controller
Immutaball.Share.GLManager
Immutaball.Share.GLManager.Config
Immutaball.Share.GLManager.Types
Immutaball.Share.GUI
Immutaball.Share.ImmutaballIO
Immutaball.Share.ImmutaballIO.BasicIO
Immutaball.Share.ImmutaballIO.DirectoryIO
Immutaball.Share.ImmutaballIO.GLIO
Immutaball.Share.ImmutaballIO.SDLIO
Immutaball.Share.Level
Immutaball.Share.Level.Analysis
Immutaball.Share.Level.Analysis.LowLevel
Immutaball.Share.Level.Attributes
Immutaball.Share.Level.Base
Immutaball.Share.Level.Parser
Immutaball.Share.Level.Utils
Immutaball.Share.Math
Immutaball.Share.Math.Core
Immutaball.Share.Math.X3D
Immutaball.Share.SDLManager
Immutaball.Share.SDLManager.Config
Immutaball.Share.SDLManager.Types
Immutaball.Share.State
Immutaball.Share.State.Context
Immutaball.Share.Utils
Immutaball.Share.Video
Immutaball.Share.Video.LowLevel
Immutaball.Share.Video.Shaders
Immutaball.Share.Wire
test-suite test-immutaball
import: all-components
import: executable-components
type: exitcode-stdio-1.0
main-is: Test.hs
build-depends:
-- tasty: avoid deprecated 1.5.1 version.
--tasty >= 1.5 && < 1.6,
tasty (>= 1.5 && < 1.5.1) || (> 1.5.1 && < 1.6),
tasty-hunit >= 0.10.2 && < 0.11,
tasty-quickcheck >= 0.11 && < 0.12,
HUnit >= 1.6.2.0 && < 1.7,
QuickCheck >= 2.15.0.1 && < 2.16
other-modules:
Test.Data.LabeledBinTree.Orphans
Test.Data.LabeledBinTree.Test
Test.Immutaball.Test
Test.Immutaball.Share.Math.Core.Orphans
Test.Immutaball.Share.Math.Core.Test
Test.Immutaball.Share.Math.Orphans
Test.Immutaball.Share.Math.Test
Test.Immutaball.Share.Math.X3D.Test
Test.Immutaball.Share.State.Fixtures
Test.Immutaball.Share.State.Test
Test.Immutaball.Share.Wire.Test