Cabal revisions of LambdaHack-0.7.1.0
Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.
revision 1
-name: LambdaHack--- 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--- | | +----- minor or non-breaking API additions--- | | | +--- code changes with no API change-version: 0.7.1.0-synopsis: A game engine library for roguelike dungeon crawlers-description: LambdaHack is a Haskell game engine library for roguelike games- of arbitrary theme, size and complexity,- packaged together with a little example dungeon crawler.- Try out the browser version of the LambdaHack sample game at- <https://lambdahack.github.io>- (It runs fastest on Chrome. Keyboard commands and savefiles- are supported only on recent enough versions of browsers.- Mouse should work everywhere.)- .- <<https://raw.githubusercontent.com/LambdaHack/media/master/screenshot/crawl-0.6.0.0-8x8xb.png>>- .- When completed, the engine will let you specify content- to be procedurally generated, define the AI behaviour- on top of the generic content-independent rules- and compile a ready-to-play game binary,- using either the supplied or a custom-made main loop.- Several frontends are available (SDL2 is the default- for desktop and there is a Javascript browser frontend)- and many other generic engine components are easily overridden,- but the fundamental source of flexibility lies- in the strict and type-safe separation of code from the content- and of clients (human and AI-controlled) from the server.- .- Please see the changelog file for recent improvements- and the issue tracker for short-term plans. Long term vision- revolves around procedural content generation and includes- in-game content creation, auto-balancing and persistent- content modification based on player behaviour.- Contributions are welcome.- .- Games known to use the LambdaHack library:- .- * Allure of the Stars, a near-future Sci-Fi game,- <http://hackage.haskell.org/package/Allure>- .- * Space Privateers, an adventure game set in far future,- <http://hackage.haskell.org/package/SpacePrivateers>- .- Note: All modules in this library are kept visible,- to let games override and reuse them.- OTOH, to reflect that some modules are implementation details- relative to others, the source code adheres to the following- convention. If a module has the same name as a directory,- the module is the exclusive interface to the directory.- No references to the modules in the directory are allowed- except from the interface module. This policy is only binding- when developing the library --- library users are free- to access any modules, since the library authors are in- no position to guess their particular needs.-homepage: https://lambdahack.github.io-bug-reports: http://github.com/LambdaHack/LambdaHack/issues-license: BSD3-license-file: LICENSE-tested-with: GHC==8.0.2, GHC==8.2.1, GHC==8.2.2-data-files: GameDefinition/config.ui.default,- GameDefinition/fonts/16x16x.fon,- GameDefinition/fonts/8x8xb.fon,- GameDefinition/fonts/8x8x.fon,- GameDefinition/fonts/LICENSE.16x16x,- GameDefinition/fonts/Fix15Mono-Bold.woff,- GameDefinition/fonts/LICENSE.Fix15Mono-Bold,- GameDefinition/PLAYING.md,- GameDefinition/InGameHelp.txt,- README.md,- CHANGELOG.md,- LICENSE,- CREDITS-extra-source-files: GameDefinition/MainMenu.ascii, Makefile-author: Andres Loeh, Mikolaj Konarski-maintainer: Mikolaj Konarski <mikolaj.konarski@funktory.com>-category: Game Engine, Game-build-type: Simple-cabal-version: >= 1.10--source-repository head- type: git- location: git://github.com/LambdaHack/LambdaHack.git--flag vty- description: switch to the vty frontend- default: False- manual: True--flag curses- description: switch to the curses frontend (not fully supported)- default: False- manual: True--flag gtk- description: switch to the GTK frontend- default: False- manual: True--flag sdl- description: switch to the SDL2 frontend- default: False- manual: True--flag jsaddle- description: switch to the JSaddle frontend- default: False- manual: True--flag with_expensive_assertions- description: turn on expensive assertions of well-tested code- default: False- manual: True--flag release- description: prepare for a release (expose internal functions and types, etc.)- default: True- manual: True--library- exposed-modules: Game.LambdaHack.Atomic- Game.LambdaHack.Atomic.CmdAtomic- Game.LambdaHack.Atomic.HandleAtomicWrite- Game.LambdaHack.Atomic.MonadStateWrite- Game.LambdaHack.Atomic.PosAtomicRead- Game.LambdaHack.Client- Game.LambdaHack.Client.AI- Game.LambdaHack.Client.AI.ConditionM- Game.LambdaHack.Client.AI.HandleAbilityM- Game.LambdaHack.Client.AI.PickActorM- Game.LambdaHack.Client.AI.PickTargetM- Game.LambdaHack.Client.AI.Strategy- Game.LambdaHack.Client.Bfs- Game.LambdaHack.Client.BfsM- Game.LambdaHack.Client.ClientOptions- Game.LambdaHack.Client.CommonM- Game.LambdaHack.Client.HandleAtomicM- Game.LambdaHack.Client.HandleResponseM- Game.LambdaHack.Client.LoopM- Game.LambdaHack.Client.MonadClient- Game.LambdaHack.Client.Preferences- Game.LambdaHack.Client.Request- Game.LambdaHack.Client.Response- Game.LambdaHack.Client.State- Game.LambdaHack.Client.UI- Game.LambdaHack.Client.UI.ActorUI- Game.LambdaHack.Client.UI.Animation- Game.LambdaHack.Client.UI.Content.KeyKind- Game.LambdaHack.Client.UI.DrawM- Game.LambdaHack.Client.UI.DisplayAtomicM- Game.LambdaHack.Client.UI.EffectDescription- Game.LambdaHack.Client.UI.Frame- Game.LambdaHack.Client.UI.FrameM- Game.LambdaHack.Client.UI.Frontend- Game.LambdaHack.Client.UI.Frontend.Chosen- Game.LambdaHack.Client.UI.Frontend.Common- Game.LambdaHack.Client.UI.Frontend.Teletype- Game.LambdaHack.Client.UI.HandleHelperM- Game.LambdaHack.Client.UI.HandleHumanGlobalM- Game.LambdaHack.Client.UI.HandleHumanLocalM- Game.LambdaHack.Client.UI.HandleHumanM- Game.LambdaHack.Client.UI.HumanCmd- Game.LambdaHack.Client.UI.InventoryM- Game.LambdaHack.Client.UI.ItemDescription- Game.LambdaHack.Client.UI.ItemSlot- Game.LambdaHack.Client.UI.Key- Game.LambdaHack.Client.UI.KeyBindings- Game.LambdaHack.Client.UI.MonadClientUI- Game.LambdaHack.Client.UI.Msg- Game.LambdaHack.Client.UI.MsgM- Game.LambdaHack.Client.UI.Overlay- Game.LambdaHack.Client.UI.RunM- Game.LambdaHack.Client.UI.SessionUI- Game.LambdaHack.Client.UI.Slideshow- Game.LambdaHack.Client.UI.SlideshowM- Game.LambdaHack.Client.UI.UIOptions- Game.LambdaHack.Common.Ability- Game.LambdaHack.Common.Actor- Game.LambdaHack.Common.ActorState- Game.LambdaHack.Common.Color- Game.LambdaHack.Common.ContentDef- Game.LambdaHack.Common.Dice- Game.LambdaHack.Common.Faction- Game.LambdaHack.Common.File- Game.LambdaHack.Common.Flavour- Game.LambdaHack.Common.Frequency- Game.LambdaHack.Common.HighScore- Game.LambdaHack.Common.Item- Game.LambdaHack.Common.ItemStrongest- Game.LambdaHack.Common.Kind- Game.LambdaHack.Common.KindOps- Game.LambdaHack.Common.Level- Game.LambdaHack.Common.Misc- Game.LambdaHack.Common.MonadStateRead- Game.LambdaHack.Common.Perception- Game.LambdaHack.Common.PointArray- Game.LambdaHack.Common.Point- Game.LambdaHack.Common.Prelude- Game.LambdaHack.Common.Random- Game.LambdaHack.Common.ReqFailure- Game.LambdaHack.Common.RingBuffer- Game.LambdaHack.Common.Save- Game.LambdaHack.Common.State- Game.LambdaHack.Common.Thread- Game.LambdaHack.Common.Tile- Game.LambdaHack.Common.Time- Game.LambdaHack.Common.Vector- Game.LambdaHack.Content.CaveKind- Game.LambdaHack.Content.ItemKind- Game.LambdaHack.Content.ModeKind- Game.LambdaHack.Content.PlaceKind- Game.LambdaHack.Content.RuleKind- Game.LambdaHack.Content.TileKind- Game.LambdaHack.SampleImplementation.SampleMonadClient- Game.LambdaHack.SampleImplementation.SampleMonadServer- Game.LambdaHack.Server- Game.LambdaHack.Server.BroadcastAtomic- Game.LambdaHack.Server.Commandline- Game.LambdaHack.Server.CommonM- Game.LambdaHack.Server.DebugM- Game.LambdaHack.Server.DungeonGen- Game.LambdaHack.Server.DungeonGen.Area- Game.LambdaHack.Server.DungeonGen.AreaRnd- Game.LambdaHack.Server.DungeonGen.Cave- Game.LambdaHack.Server.DungeonGen.Place- Game.LambdaHack.Server.EndM- Game.LambdaHack.Server.Fov- Game.LambdaHack.Server.FovDigital- Game.LambdaHack.Server.HandleAtomicM- Game.LambdaHack.Server.HandleEffectM- Game.LambdaHack.Server.HandleRequestM- Game.LambdaHack.Server.ItemRev- Game.LambdaHack.Server.ItemM- Game.LambdaHack.Server.LoopM- Game.LambdaHack.Server.MonadServer- Game.LambdaHack.Server.PeriodicM- Game.LambdaHack.Server.ProtocolM- Game.LambdaHack.Server.ServerOptions- Game.LambdaHack.Server.StartM- Game.LambdaHack.Server.State-- other-modules: Paths_LambdaHack- build-depends:- assert-failure >= 0.1.2 && < 0.2,- async >= 2,- base >= 4.9 && < 99,- base-compat >= 0.8.0,- binary >= 0.8,- bytestring >= 0.9.2 ,- containers >= 0.5.3.0,- deepseq >= 1.3,- directory >= 1.1.0.1,- enummapset-th >= 0.6.0.0,- filepath >= 1.2.0.1,- ghc-prim,- hashable >= 1.1.2.5,- hsini >= 0.2,- keys >= 3,- miniutter >= 0.4.5.0,- optparse-applicative >= 0.13,- pretty-show >= 1.6,- random >= 1.1,- stm >= 2.4,- time >= 1.4,- text >= 0.11.2.3,- transformers >= 0.4,- unordered-containers >= 0.2.3,- vector >= 0.11,- vector-binary-instances >= 0.2.3.1-- default-language: Haskell2010- default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings- BangPatterns, RecordWildCards, NamedFieldPuns, MultiWayIf,- LambdaCase, StrictData, CPP- other-extensions: TemplateHaskell, MultiParamTypeClasses, RankNTypes,- TypeFamilies, FlexibleContexts, FlexibleInstances,- DeriveFunctor, FunctionalDependencies,- GeneralizedNewtypeDeriving, TupleSections,- DeriveFoldable, DeriveTraversable,- ExistentialQuantification, GADTs, StandaloneDeriving,- DataKinds, KindSignatures, DeriveGeneric- ghc-options: -Wall -Wcompat -Worphans -Wincomplete-uni-patterns -Wincomplete-record-updates -Wimplicit-prelude -Wmissing-home-modules -Widentities -Wredundant-constraints- ghc-options: -Wall-missed-specialisations- ghc-options: -fno-ignore-asserts -fexpose-all-unfoldings -fspecialise-aggressively -fsimpl-tick-factor=200-- if impl(ghcjs) || flag(jsaddle) {- exposed-modules: Game.LambdaHack.Client.UI.Frontend.Dom- build-depends: ghcjs-dom >= 0.9.1.1- cpp-options: -DUSE_BROWSER- } else { if flag(vty) {- exposed-modules: Game.LambdaHack.Client.UI.Frontend.Vty- build-depends: vty >= 5- cpp-options: -DUSE_VTY- } else { if flag(curses) {- exposed-modules: Game.LambdaHack.Client.UI.Frontend.Curses- build-depends: hscurses >= 1.4.1- cpp-options: -DUSE_CURSES- } else { if flag(gtk) {- exposed-modules: Game.LambdaHack.Client.UI.Frontend.Gtk- build-depends: gtk3 >= 0.12.1- cpp-options: -DUSE_GTK- } else {- exposed-modules: Game.LambdaHack.Client.UI.Frontend.Sdl- build-depends: sdl2 >= 2, sdl2-ttf >= 2- cpp-options: -DUSE_SDL- } } } }-- if impl(ghcjs) {- exposed-modules: Game.LambdaHack.Common.JSFile- cpp-options: -DUSE_JSFILE- } else {- exposed-modules: Game.LambdaHack.Common.HSFile- build-depends: zlib >= 0.5.3.1- }-- if flag(with_expensive_assertions)- cpp-options: -DWITH_EXPENSIVE_ASSERTIONS-- if flag(release)- cpp-options: -DEXPOSE_INTERNAL--executable LambdaHack- hs-source-dirs: GameDefinition- main-is: Main.hs- other-modules: Client.UI.Content.KeyKind,- Content.CaveKind,- Content.ItemKind,- Content.ItemKindEmbed,- Content.ItemKindActor,- Content.ItemKindOrgan,- Content.ItemKindBlast,- Content.ItemKindTemporary,- Content.ModeKind,- Content.ModeKindPlayer,- Content.PlaceKind,- Content.RuleKind,- Content.TileKind,- TieKnot,- Paths_LambdaHack- build-depends: LambdaHack,- template-haskell >= 2.6,-- assert-failure >= 0.1.2 && < 0.2,- async >= 2,- base >= 4.9 && < 99,- base-compat >= 0.8.0,- binary >= 0.8,- bytestring >= 0.9.2 ,- containers >= 0.5.3.0,- deepseq >= 1.3,- directory >= 1.1.0.1,- enummapset-th >= 0.6.0.0,- filepath >= 1.2.0.1,- ghc-prim,- hashable >= 1.1.2.5,- hsini >= 0.2,- keys >= 3,- miniutter >= 0.4.5.0,- optparse-applicative >= 0.13,- pretty-show >= 1.6,- random >= 1.1,- stm >= 2.4,- text >= 0.11.2.3,- time >= 1.4,- transformers >= 0.4,- unordered-containers >= 0.2.3,- vector >= 0.11,- vector-binary-instances >= 0.2.3.1-- default-language: Haskell2010- default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings- BangPatterns, RecordWildCards, NamedFieldPuns, MultiWayIf,- LambdaCase, StrictData- other-extensions: TemplateHaskell- ghc-options: -Wall -Wcompat -Worphans -Wincomplete-uni-patterns -Wincomplete-record-updates -Wimplicit-prelude -Wmissing-home-modules -Widentities -Wredundant-constraints- ghc-options: -Wall-missed-specialisations- ghc-options: -fno-ignore-asserts -fexpose-all-unfoldings -fspecialise-aggressively- ghc-options: -threaded -rtsopts-- if impl(ghcjs) {--- This is the largest GHCJS_BUSY_YIELD value that does not cause dropped frames--- on my machine with default --maxFps.- cpp-options: -DGHCJS_BUSY_YIELD=50--- Minimize median lag at the cost of occasional huge lag when GC kicks in--- (and some of the GCs fit into idle time, while the player ponders--- or game is being saved):- ghc-options: "-with-rtsopts=-A99m"- } else {- build-depends: zlib >= 0.5.3.1--- The -A options makes it slightly faster, especially with short sessions:- ghc-options: "-with-rtsopts=-A99m -K1000K"--- TODO: get back to -K1K when I can use pretty-1.1.3.4 (TH depends on an old one), that is, when I can drop GHC 8.0.2 and older- }--test-suite test- type: exitcode-stdio-1.0- hs-source-dirs: GameDefinition, test- main-is: test.hs- other-modules: Client.UI.Content.KeyKind,- Content.CaveKind,- Content.ItemKind,- Content.ItemKindEmbed,- Content.ItemKindActor,- Content.ItemKindOrgan,- Content.ItemKindBlast,- Content.ItemKindTemporary,- Content.ModeKind,- Content.ModeKindPlayer,- Content.PlaceKind,- Content.RuleKind,- Content.TileKind,- TieKnot,- Paths_LambdaHack- build-depends: LambdaHack,- template-haskell >= 2.6,-- assert-failure >= 0.1.2 && < 0.2,- async >= 2,- base >= 4.9 && < 99,- base-compat >= 0.8.0,- binary >= 0.8,- bytestring >= 0.9.2 ,- containers >= 0.5.3.0,- deepseq >= 1.3,- directory >= 1.1.0.1,- enummapset-th >= 0.6.0.0,- filepath >= 1.2.0.1,- ghc-prim,- hashable >= 1.1.2.5,- hsini >= 0.2,- keys >= 3,- miniutter >= 0.4.5.0,- optparse-applicative >= 0.13,- pretty-show >= 1.6,- random >= 1.1,- stm >= 2.4,- text >= 0.11.2.3,- time >= 1.4,- transformers >= 0.4,- unordered-containers >= 0.2.3,- vector >= 0.11,- vector-binary-instances >= 0.2.3.1-- default-language: Haskell2010- default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings- BangPatterns, RecordWildCards, NamedFieldPuns, MultiWayIf,- LambdaCase, StrictData- other-extensions: TemplateHaskell- ghc-options: -Wall -Wcompat -Worphans -Wincomplete-uni-patterns -Wincomplete-record-updates -Wimplicit-prelude -Wmissing-home-modules -Widentities -Wredundant-constraints- ghc-options: -fno-ignore-asserts -fexpose-all-unfoldings -fspecialise-aggressively- ghc-options: -threaded -rtsopts-- if impl(ghcjs) {--- This is the largest GHCJS_BUSY_YIELD value that does not cause dropped frames--- on my machine with default --maxFps.- cpp-options: -DGHCJS_BUSY_YIELD=50- ghc-options: "-with-rtsopts=-A99m"- } else {- build-depends: zlib >= 0.5.3.1- ghc-options: "-with-rtsopts=-A99m -K1000K"--- TODO: get back to -K1K when I can use pretty-1.1.3.4 (TH depends on an old one), that is, when I can drop GHC 8.0.2 and older- }+name: LambdaHack +-- 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 +-- | | +----- minor or non-breaking API additions +-- | | | +--- code changes with no API change +version: 0.7.1.0 +x-revision: 1 +synopsis: A game engine library for roguelike dungeon crawlers +description: LambdaHack is a Haskell game engine library for roguelike games + of arbitrary theme, size and complexity, + packaged together with a little example dungeon crawler. + Try out the browser version of the LambdaHack sample game at + <https://lambdahack.github.io> + (It runs fastest on Chrome. Keyboard commands and savefiles + are supported only on recent enough versions of browsers. + Mouse should work everywhere.) + . + <<https://raw.githubusercontent.com/LambdaHack/media/master/screenshot/crawl-0.6.0.0-8x8xb.png>> + . + When completed, the engine will let you specify content + to be procedurally generated, define the AI behaviour + on top of the generic content-independent rules + and compile a ready-to-play game binary, + using either the supplied or a custom-made main loop. + Several frontends are available (SDL2 is the default + for desktop and there is a Javascript browser frontend) + and many other generic engine components are easily overridden, + but the fundamental source of flexibility lies + in the strict and type-safe separation of code from the content + and of clients (human and AI-controlled) from the server. + . + Please see the changelog file for recent improvements + and the issue tracker for short-term plans. Long term vision + revolves around procedural content generation and includes + in-game content creation, auto-balancing and persistent + content modification based on player behaviour. + Contributions are welcome. + . + Games known to use the LambdaHack library: + . + * Allure of the Stars, a near-future Sci-Fi game, + <http://hackage.haskell.org/package/Allure> + . + * Space Privateers, an adventure game set in far future, + <http://hackage.haskell.org/package/SpacePrivateers> + . + Note: All modules in this library are kept visible, + to let games override and reuse them. + OTOH, to reflect that some modules are implementation details + relative to others, the source code adheres to the following + convention. If a module has the same name as a directory, + the module is the exclusive interface to the directory. + No references to the modules in the directory are allowed + except from the interface module. This policy is only binding + when developing the library --- library users are free + to access any modules, since the library authors are in + no position to guess their particular needs. +homepage: https://lambdahack.github.io +bug-reports: http://github.com/LambdaHack/LambdaHack/issues +license: BSD3 +license-file: LICENSE +tested-with: GHC==8.0.2, GHC==8.2.1, GHC==8.2.2 +data-files: GameDefinition/config.ui.default, + GameDefinition/fonts/16x16x.fon, + GameDefinition/fonts/8x8xb.fon, + GameDefinition/fonts/8x8x.fon, + GameDefinition/fonts/LICENSE.16x16x, + GameDefinition/fonts/Fix15Mono-Bold.woff, + GameDefinition/fonts/LICENSE.Fix15Mono-Bold, + GameDefinition/PLAYING.md, + GameDefinition/InGameHelp.txt, + README.md, + CHANGELOG.md, + LICENSE, + CREDITS +extra-source-files: GameDefinition/MainMenu.ascii, Makefile +author: Andres Loeh, Mikolaj Konarski +maintainer: Mikolaj Konarski <mikolaj.konarski@funktory.com> +category: Game Engine, Game +build-type: Simple +cabal-version: >= 1.10 + +source-repository head + type: git + location: git://github.com/LambdaHack/LambdaHack.git + +flag vty + description: switch to the vty frontend + default: False + manual: True + +flag curses + description: switch to the curses frontend (not fully supported) + default: False + manual: True + +flag gtk + description: switch to the GTK frontend + default: False + manual: True + +flag sdl + description: switch to the SDL2 frontend + default: False + manual: True + +flag jsaddle + description: switch to the JSaddle frontend + default: False + manual: True + +flag with_expensive_assertions + description: turn on expensive assertions of well-tested code + default: False + manual: True + +flag release + description: prepare for a release (expose internal functions and types, etc.) + default: True + manual: True + +library + exposed-modules: Game.LambdaHack.Atomic + Game.LambdaHack.Atomic.CmdAtomic + Game.LambdaHack.Atomic.HandleAtomicWrite + Game.LambdaHack.Atomic.MonadStateWrite + Game.LambdaHack.Atomic.PosAtomicRead + Game.LambdaHack.Client + Game.LambdaHack.Client.AI + Game.LambdaHack.Client.AI.ConditionM + Game.LambdaHack.Client.AI.HandleAbilityM + Game.LambdaHack.Client.AI.PickActorM + Game.LambdaHack.Client.AI.PickTargetM + Game.LambdaHack.Client.AI.Strategy + Game.LambdaHack.Client.Bfs + Game.LambdaHack.Client.BfsM + Game.LambdaHack.Client.ClientOptions + Game.LambdaHack.Client.CommonM + Game.LambdaHack.Client.HandleAtomicM + Game.LambdaHack.Client.HandleResponseM + Game.LambdaHack.Client.LoopM + Game.LambdaHack.Client.MonadClient + Game.LambdaHack.Client.Preferences + Game.LambdaHack.Client.Request + Game.LambdaHack.Client.Response + Game.LambdaHack.Client.State + Game.LambdaHack.Client.UI + Game.LambdaHack.Client.UI.ActorUI + Game.LambdaHack.Client.UI.Animation + Game.LambdaHack.Client.UI.Content.KeyKind + Game.LambdaHack.Client.UI.DrawM + Game.LambdaHack.Client.UI.DisplayAtomicM + Game.LambdaHack.Client.UI.EffectDescription + Game.LambdaHack.Client.UI.Frame + Game.LambdaHack.Client.UI.FrameM + Game.LambdaHack.Client.UI.Frontend + Game.LambdaHack.Client.UI.Frontend.Chosen + Game.LambdaHack.Client.UI.Frontend.Common + Game.LambdaHack.Client.UI.Frontend.Teletype + Game.LambdaHack.Client.UI.HandleHelperM + Game.LambdaHack.Client.UI.HandleHumanGlobalM + Game.LambdaHack.Client.UI.HandleHumanLocalM + Game.LambdaHack.Client.UI.HandleHumanM + Game.LambdaHack.Client.UI.HumanCmd + Game.LambdaHack.Client.UI.InventoryM + Game.LambdaHack.Client.UI.ItemDescription + Game.LambdaHack.Client.UI.ItemSlot + Game.LambdaHack.Client.UI.Key + Game.LambdaHack.Client.UI.KeyBindings + Game.LambdaHack.Client.UI.MonadClientUI + Game.LambdaHack.Client.UI.Msg + Game.LambdaHack.Client.UI.MsgM + Game.LambdaHack.Client.UI.Overlay + Game.LambdaHack.Client.UI.RunM + Game.LambdaHack.Client.UI.SessionUI + Game.LambdaHack.Client.UI.Slideshow + Game.LambdaHack.Client.UI.SlideshowM + Game.LambdaHack.Client.UI.UIOptions + Game.LambdaHack.Common.Ability + Game.LambdaHack.Common.Actor + Game.LambdaHack.Common.ActorState + Game.LambdaHack.Common.Color + Game.LambdaHack.Common.ContentDef + Game.LambdaHack.Common.Dice + Game.LambdaHack.Common.Faction + Game.LambdaHack.Common.File + Game.LambdaHack.Common.Flavour + Game.LambdaHack.Common.Frequency + Game.LambdaHack.Common.HighScore + Game.LambdaHack.Common.Item + Game.LambdaHack.Common.ItemStrongest + Game.LambdaHack.Common.Kind + Game.LambdaHack.Common.KindOps + Game.LambdaHack.Common.Level + Game.LambdaHack.Common.Misc + Game.LambdaHack.Common.MonadStateRead + Game.LambdaHack.Common.Perception + Game.LambdaHack.Common.PointArray + Game.LambdaHack.Common.Point + Game.LambdaHack.Common.Prelude + Game.LambdaHack.Common.Random + Game.LambdaHack.Common.ReqFailure + Game.LambdaHack.Common.RingBuffer + Game.LambdaHack.Common.Save + Game.LambdaHack.Common.State + Game.LambdaHack.Common.Thread + Game.LambdaHack.Common.Tile + Game.LambdaHack.Common.Time + Game.LambdaHack.Common.Vector + Game.LambdaHack.Content.CaveKind + Game.LambdaHack.Content.ItemKind + Game.LambdaHack.Content.ModeKind + Game.LambdaHack.Content.PlaceKind + Game.LambdaHack.Content.RuleKind + Game.LambdaHack.Content.TileKind + Game.LambdaHack.SampleImplementation.SampleMonadClient + Game.LambdaHack.SampleImplementation.SampleMonadServer + Game.LambdaHack.Server + Game.LambdaHack.Server.BroadcastAtomic + Game.LambdaHack.Server.Commandline + Game.LambdaHack.Server.CommonM + Game.LambdaHack.Server.DebugM + Game.LambdaHack.Server.DungeonGen + Game.LambdaHack.Server.DungeonGen.Area + Game.LambdaHack.Server.DungeonGen.AreaRnd + Game.LambdaHack.Server.DungeonGen.Cave + Game.LambdaHack.Server.DungeonGen.Place + Game.LambdaHack.Server.EndM + Game.LambdaHack.Server.Fov + Game.LambdaHack.Server.FovDigital + Game.LambdaHack.Server.HandleAtomicM + Game.LambdaHack.Server.HandleEffectM + Game.LambdaHack.Server.HandleRequestM + Game.LambdaHack.Server.ItemRev + Game.LambdaHack.Server.ItemM + Game.LambdaHack.Server.LoopM + Game.LambdaHack.Server.MonadServer + Game.LambdaHack.Server.PeriodicM + Game.LambdaHack.Server.ProtocolM + Game.LambdaHack.Server.ServerOptions + Game.LambdaHack.Server.StartM + Game.LambdaHack.Server.State + + other-modules: Paths_LambdaHack + build-depends: + assert-failure >= 0.1.2 && < 0.2, + async >= 2, + base >= 4.9 && < 99, + base-compat >= 0.8.0, + binary >= 0.8, + bytestring >= 0.9.2 , + containers >= 0.5.3.0, + deepseq >= 1.3, + directory >= 1.1.0.1, + enummapset-th >= 0.6.0.0, + filepath >= 1.2.0.1, + ghc-prim, + hashable >= 1.1.2.5, + hsini >= 0.2, + keys >= 3, + miniutter >= 0.4.5.0, + optparse-applicative >= 0.13, + pretty-show >= 1.6, + random == 1.1, + stm >= 2.4, + time >= 1.4, + text >= 0.11.2.3, + transformers >= 0.4, + unordered-containers >= 0.2.3, + vector >= 0.11, + vector-binary-instances >= 0.2.3.1 + + default-language: Haskell2010 + default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings + BangPatterns, RecordWildCards, NamedFieldPuns, MultiWayIf, + LambdaCase, StrictData, CPP + other-extensions: TemplateHaskell, MultiParamTypeClasses, RankNTypes, + TypeFamilies, FlexibleContexts, FlexibleInstances, + DeriveFunctor, FunctionalDependencies, + GeneralizedNewtypeDeriving, TupleSections, + DeriveFoldable, DeriveTraversable, + ExistentialQuantification, GADTs, StandaloneDeriving, + DataKinds, KindSignatures, DeriveGeneric + ghc-options: -Wall -Wcompat -Worphans -Wincomplete-uni-patterns -Wincomplete-record-updates -Wimplicit-prelude -Wmissing-home-modules -Widentities -Wredundant-constraints + ghc-options: -Wall-missed-specialisations + ghc-options: -fno-ignore-asserts -fexpose-all-unfoldings -fspecialise-aggressively -fsimpl-tick-factor=200 + + if impl(ghcjs) || flag(jsaddle) { + exposed-modules: Game.LambdaHack.Client.UI.Frontend.Dom + build-depends: ghcjs-dom >= 0.9.1.1 + cpp-options: -DUSE_BROWSER + } else { if flag(vty) { + exposed-modules: Game.LambdaHack.Client.UI.Frontend.Vty + build-depends: vty >= 5 + cpp-options: -DUSE_VTY + } else { if flag(curses) { + exposed-modules: Game.LambdaHack.Client.UI.Frontend.Curses + build-depends: hscurses >= 1.4.1 + cpp-options: -DUSE_CURSES + } else { if flag(gtk) { + exposed-modules: Game.LambdaHack.Client.UI.Frontend.Gtk + build-depends: gtk3 >= 0.12.1 + cpp-options: -DUSE_GTK + } else { + exposed-modules: Game.LambdaHack.Client.UI.Frontend.Sdl + build-depends: sdl2 >= 2, sdl2-ttf >= 2 + cpp-options: -DUSE_SDL + } } } } + + if impl(ghcjs) { + exposed-modules: Game.LambdaHack.Common.JSFile + cpp-options: -DUSE_JSFILE + } else { + exposed-modules: Game.LambdaHack.Common.HSFile + build-depends: zlib >= 0.5.3.1 + } + + if flag(with_expensive_assertions) + cpp-options: -DWITH_EXPENSIVE_ASSERTIONS + + if flag(release) + cpp-options: -DEXPOSE_INTERNAL + +executable LambdaHack + hs-source-dirs: GameDefinition + main-is: Main.hs + other-modules: Client.UI.Content.KeyKind, + Content.CaveKind, + Content.ItemKind, + Content.ItemKindEmbed, + Content.ItemKindActor, + Content.ItemKindOrgan, + Content.ItemKindBlast, + Content.ItemKindTemporary, + Content.ModeKind, + Content.ModeKindPlayer, + Content.PlaceKind, + Content.RuleKind, + Content.TileKind, + TieKnot, + Paths_LambdaHack + build-depends: LambdaHack, + template-haskell >= 2.6, + + assert-failure >= 0.1.2 && < 0.2, + async >= 2, + base >= 4.9 && < 99, + base-compat >= 0.8.0, + binary >= 0.8, + bytestring >= 0.9.2 , + containers >= 0.5.3.0, + deepseq >= 1.3, + directory >= 1.1.0.1, + enummapset-th >= 0.6.0.0, + filepath >= 1.2.0.1, + ghc-prim, + hashable >= 1.1.2.5, + hsini >= 0.2, + keys >= 3, + miniutter >= 0.4.5.0, + optparse-applicative >= 0.13, + pretty-show >= 1.6, + random == 1.1, + stm >= 2.4, + text >= 0.11.2.3, + time >= 1.4, + transformers >= 0.4, + unordered-containers >= 0.2.3, + vector >= 0.11, + vector-binary-instances >= 0.2.3.1 + + default-language: Haskell2010 + default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings + BangPatterns, RecordWildCards, NamedFieldPuns, MultiWayIf, + LambdaCase, StrictData + other-extensions: TemplateHaskell + ghc-options: -Wall -Wcompat -Worphans -Wincomplete-uni-patterns -Wincomplete-record-updates -Wimplicit-prelude -Wmissing-home-modules -Widentities -Wredundant-constraints + ghc-options: -Wall-missed-specialisations + ghc-options: -fno-ignore-asserts -fexpose-all-unfoldings -fspecialise-aggressively + ghc-options: -threaded -rtsopts + + if impl(ghcjs) { +-- This is the largest GHCJS_BUSY_YIELD value that does not cause dropped frames +-- on my machine with default --maxFps. + cpp-options: -DGHCJS_BUSY_YIELD=50 +-- Minimize median lag at the cost of occasional huge lag when GC kicks in +-- (and some of the GCs fit into idle time, while the player ponders +-- or game is being saved): + ghc-options: "-with-rtsopts=-A99m" + } else { + build-depends: zlib >= 0.5.3.1 +-- The -A options makes it slightly faster, especially with short sessions: + ghc-options: "-with-rtsopts=-A99m -K1000K" +-- TODO: get back to -K1K when I can use pretty-1.1.3.4 (TH depends on an old one), that is, when I can drop GHC 8.0.2 and older + } + +test-suite test + type: exitcode-stdio-1.0 + hs-source-dirs: GameDefinition, test + main-is: test.hs + other-modules: Client.UI.Content.KeyKind, + Content.CaveKind, + Content.ItemKind, + Content.ItemKindEmbed, + Content.ItemKindActor, + Content.ItemKindOrgan, + Content.ItemKindBlast, + Content.ItemKindTemporary, + Content.ModeKind, + Content.ModeKindPlayer, + Content.PlaceKind, + Content.RuleKind, + Content.TileKind, + TieKnot, + Paths_LambdaHack + build-depends: LambdaHack, + template-haskell >= 2.6, + + assert-failure >= 0.1.2 && < 0.2, + async >= 2, + base >= 4.9 && < 99, + base-compat >= 0.8.0, + binary >= 0.8, + bytestring >= 0.9.2 , + containers >= 0.5.3.0, + deepseq >= 1.3, + directory >= 1.1.0.1, + enummapset-th >= 0.6.0.0, + filepath >= 1.2.0.1, + ghc-prim, + hashable >= 1.1.2.5, + hsini >= 0.2, + keys >= 3, + miniutter >= 0.4.5.0, + optparse-applicative >= 0.13, + pretty-show >= 1.6, + random == 1.1, + stm >= 2.4, + text >= 0.11.2.3, + time >= 1.4, + transformers >= 0.4, + unordered-containers >= 0.2.3, + vector >= 0.11, + vector-binary-instances >= 0.2.3.1 + + default-language: Haskell2010 + default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings + BangPatterns, RecordWildCards, NamedFieldPuns, MultiWayIf, + LambdaCase, StrictData + other-extensions: TemplateHaskell + ghc-options: -Wall -Wcompat -Worphans -Wincomplete-uni-patterns -Wincomplete-record-updates -Wimplicit-prelude -Wmissing-home-modules -Widentities -Wredundant-constraints + ghc-options: -fno-ignore-asserts -fexpose-all-unfoldings -fspecialise-aggressively + ghc-options: -threaded -rtsopts + + if impl(ghcjs) { +-- This is the largest GHCJS_BUSY_YIELD value that does not cause dropped frames +-- on my machine with default --maxFps. + cpp-options: -DGHCJS_BUSY_YIELD=50 + ghc-options: "-with-rtsopts=-A99m" + } else { + build-depends: zlib >= 0.5.3.1 + ghc-options: "-with-rtsopts=-A99m -K1000K" +-- TODO: get back to -K1K when I can use pretty-1.1.3.4 (TH depends on an old one), that is, when I can drop GHC 8.0.2 and older + }