packages feed

Cabal revisions of LambdaHack-0.9.5.0

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-cabal-version: 2.2-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.9.5.0-synopsis:      A game engine library for tactical squad ASCII roguelike dungeon crawlers-description:   LambdaHack is a Haskell game engine library for ASCII roguelike-               games of arbitrary theme, size and complexity, with optional-               tactical squad combat. It's packaged together with a sample-               dungeon crawler in fantasy setting that can be tried out-               in the browser at <http://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.)-               .-               Please see the changelog file for recent improvements-               and the issue tracker for short-term plans. Long term goals-               include multiplayer tactical squad combat, 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.-               .-               This is a workaround .cabal file, flattened to eliminated-               internal libraries until generating haddocks for them-               is fixed. The original .cabal file is stored in the github repo.-homepage:      https://lambdahack.github.io-bug-reports:   http://github.com/LambdaHack/LambdaHack/issues-license:       BSD-3-Clause-license-file:  COPYLEFT-tested-with:   GHC==8.2.2, GHC==8.4.4, GHC==8.6.5-data-files:    GameDefinition/config.ui.default,-               GameDefinition/fonts/16x16xw.woff,-               GameDefinition/fonts/16x16xw.bdf,-               GameDefinition/fonts/16x16x.fnt,-               GameDefinition/fonts/8x8xb.fnt,-               GameDefinition/fonts/8x8x.fnt,-               GameDefinition/fonts/LICENSE.16x16x,-               GameDefinition/fonts/Fix15Mono-Bold.woff,-               GameDefinition/fonts/LICENSE.Fix15Mono-Bold,-               GameDefinition/InGameHelp.txt,-               GameDefinition/PLAYING.md,-               README.md,-               CHANGELOG.md,-               LICENSE,-               COPYLEFT,-               CREDITS-extra-source-files: GameDefinition/config.ui.default,-                    GameDefinition/MainMenu.ascii,-                    GameDefinition/MoveKeys.txt,-                    GameDefinition/PLAYING.md,-                    Makefile-author:        Andres Loeh, Mikolaj Konarski and others-maintainer:    Mikolaj Konarski <mikolaj.konarski@funktory.com>-category:      Game Engine, Game-build-type:    Simple--source-repository head-  type:               git-  location:           git://github.com/LambdaHack/LambdaHack.git--flag vty-  description:        switch to the vty frontend (screen reader friendly)-  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 (not fully supported)-  default:            False-  manual:             True--flag sdl-  description:        switch to the SDL2 frontend-  default:            False-  manual:             True--flag jsaddle-  description:        switch to the JSaddle frontend (may be bit-rotted)-  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--flag supportNodeJS-  description:        compile so that the JS blob works in terminal with NodeJS-  default:            True-  manual:             True--common options-  default-language:   Haskell2010-  default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings-                      BangPatterns, RecordWildCards, NamedFieldPuns, MultiWayIf,-                      LambdaCase, DefaultSignatures, InstanceSigs,-                      MonadFailDesugaring, 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 -Wmissing-export-lists -Wpartial-fields-  ghc-options:        -Wall-missed-specialisations-  ghc-options:        -fno-ignore-asserts -fexpose-all-unfoldings -fspecialise-aggressively -fsimpl-tick-factor=200--  if flag(with_expensive_assertions)-    cpp-options:      -DWITH_EXPENSIVE_ASSERTIONS--  if flag(release)-    cpp-options:      -DEXPOSE_INTERNAL--  ghcjs-options:      -DUSE_JSFILE--  if !flag(supportNodeJS)-    ghcjs-options:    -DREMOVE_TELETYPE--common exe-options-  ghc-options:        -threaded -rtsopts--- (Ignored by GHCJS) Minimize median lag at the cost of occasional bigger--- GC lag, which fortunately sometimes fits into idle time between turns):--- (Ignored by GHCJS) Avoid frequent GCs. Only idle-GC during a break in--- gameplay (5s), not between slow keystrokes.-  ghc-options:        "-with-rtsopts=-A99m -I5"---- Haskell GC in GHCJS every 10s.-  ghcjs-options:      -DGHCJS_GC_INTERVAL=10000--- This is the largest GHCJS_BUSY_YIELD value that does not cause dropped frames--- on my machine with default --maxFps.-  ghcjs-options:      -DGHCJS_BUSY_YIELD=50-  ghcjs-options:      -dedupe--  if !flag(supportNodeJS)-    ghcjs-options:    -DGHCJS_BROWSER--library-  import: options-  hs-source-dirs:     definition-src,-                      engine-src,-                      GameDefinition/game-src,-                      GameDefinition-  exposed-modules:    Game.LambdaHack.Core.Dice-                      Game.LambdaHack.Core.Frequency-                      Game.LambdaHack.Core.Prelude-                      Game.LambdaHack.Core.Random-                      Game.LambdaHack.Definition.Ability-                      Game.LambdaHack.Definition.Color-                      Game.LambdaHack.Definition.ContentData-                      Game.LambdaHack.Definition.Defs-                      Game.LambdaHack.Definition.Flavour-                      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.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.PickActionM-                      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.Input-                      Game.LambdaHack.Client.UI.Content.Screen-                      Game.LambdaHack.Client.UI.ContentClientUI-                      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.Client.UI.UIOptionsParse-                      Game.LambdaHack.Common.Analytics-                      Game.LambdaHack.Common.Area-                      Game.LambdaHack.Common.Actor-                      Game.LambdaHack.Common.ActorState-                      Game.LambdaHack.Common.Faction-                      Game.LambdaHack.Common.File-                      Game.LambdaHack.Common.HighScore-                      Game.LambdaHack.Common.Item-                      Game.LambdaHack.Common.ItemAspect-                      Game.LambdaHack.Common.Kind-                      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.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.Types-                      Game.LambdaHack.Common.Vector-                      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.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-  exposed-modules:    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-                      Client.UI.Content.Input-                      Client.UI.Content.Screen-                      Implementation.MonadClientImplementation-                      Implementation.MonadServerImplementation-  other-modules:      Paths_LambdaHack-  autogen-modules:    Paths_LambdaHack-  build-depends:      assert-failure >= 0.1.2 && < 0.2,-                      async      >= 2,-                      base       >= 4.10 && < 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 >= 0.5.2.2,-                      filepath   >= 1.2.0.1,-                      ghc-prim,-                      hashable   >= 1.1.2.5,-                      hsini      >= 0.2,-                      keys       >= 3,-                      miniutter  >= 0.5.0.0,-                      optparse-applicative >= 0.13,-                      pretty-show >= 1.6,-                      primitive  >= 0.6.1.0,-                      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,-                      template-haskell >= 2.6,-                      ghc-compact--  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) {-    other-modules:    Game.LambdaHack.Common.JSFile-  } else {-    other-modules:    Game.LambdaHack.Common.HSFile-    build-depends:    zlib >= 0.5.3.1-  }--executable LambdaHack-  import: options, exe-options-  main-is:            GameDefinition/Main.hs-  build-depends:      ,LambdaHack-                      ,async-                      ,base-                      ,filepath-                      ,optparse-applicative--test-suite test-  import: options, exe-options-  type:               exitcode-stdio-1.0-  main-is:            test/test.hs-  build-depends:      ,LambdaHack-                      ,async-                      ,base-                      ,filepath-                      ,optparse-applicative+cabal-version: 2.2
+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.9.5.0
+x-revision: 1
+synopsis:      A game engine library for tactical squad ASCII roguelike dungeon crawlers
+description:   LambdaHack is a Haskell game engine library for ASCII roguelike
+               games of arbitrary theme, size and complexity, with optional
+               tactical squad combat. It's packaged together with a sample
+               dungeon crawler in fantasy setting that can be tried out
+               in the browser at <http://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.)
+               .
+               Please see the changelog file for recent improvements
+               and the issue tracker for short-term plans. Long term goals
+               include multiplayer tactical squad combat, 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.
+               .
+               This is a workaround .cabal file, flattened to eliminated
+               internal libraries until generating haddocks for them
+               is fixed. The original .cabal file is stored in the github repo.
+homepage:      https://lambdahack.github.io
+bug-reports:   http://github.com/LambdaHack/LambdaHack/issues
+license:       BSD-3-Clause
+license-file:  COPYLEFT
+tested-with:   GHC==8.2.2, GHC==8.4.4, GHC==8.6.5
+data-files:    GameDefinition/config.ui.default,
+               GameDefinition/fonts/16x16xw.woff,
+               GameDefinition/fonts/16x16xw.bdf,
+               GameDefinition/fonts/16x16x.fnt,
+               GameDefinition/fonts/8x8xb.fnt,
+               GameDefinition/fonts/8x8x.fnt,
+               GameDefinition/fonts/LICENSE.16x16x,
+               GameDefinition/fonts/Fix15Mono-Bold.woff,
+               GameDefinition/fonts/LICENSE.Fix15Mono-Bold,
+               GameDefinition/InGameHelp.txt,
+               GameDefinition/PLAYING.md,
+               README.md,
+               CHANGELOG.md,
+               LICENSE,
+               COPYLEFT,
+               CREDITS
+extra-source-files: GameDefinition/config.ui.default,
+                    GameDefinition/MainMenu.ascii,
+                    GameDefinition/MoveKeys.txt,
+                    GameDefinition/PLAYING.md,
+                    Makefile
+author:        Andres Loeh, Mikolaj Konarski and others
+maintainer:    Mikolaj Konarski <mikolaj.konarski@funktory.com>
+category:      Game Engine, Game
+build-type:    Simple
+
+source-repository head
+  type:               git
+  location:           git://github.com/LambdaHack/LambdaHack.git
+
+flag vty
+  description:        switch to the vty frontend (screen reader friendly)
+  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 (not fully supported)
+  default:            False
+  manual:             True
+
+flag sdl
+  description:        switch to the SDL2 frontend
+  default:            False
+  manual:             True
+
+flag jsaddle
+  description:        switch to the JSaddle frontend (may be bit-rotted)
+  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
+
+flag supportNodeJS
+  description:        compile so that the JS blob works in terminal with NodeJS
+  default:            True
+  manual:             True
+
+common options
+  default-language:   Haskell2010
+  default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings
+                      BangPatterns, RecordWildCards, NamedFieldPuns, MultiWayIf,
+                      LambdaCase, DefaultSignatures, InstanceSigs,
+                      MonadFailDesugaring, 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 -Wmissing-export-lists -Wpartial-fields
+  ghc-options:        -Wall-missed-specialisations
+  ghc-options:        -fno-ignore-asserts -fexpose-all-unfoldings -fspecialise-aggressively -fsimpl-tick-factor=200
+
+  if flag(with_expensive_assertions)
+    cpp-options:      -DWITH_EXPENSIVE_ASSERTIONS
+
+  if flag(release)
+    cpp-options:      -DEXPOSE_INTERNAL
+
+  ghcjs-options:      -DUSE_JSFILE
+
+  if !flag(supportNodeJS)
+    ghcjs-options:    -DREMOVE_TELETYPE
+
+common exe-options
+  ghc-options:        -threaded -rtsopts
+-- (Ignored by GHCJS) Minimize median lag at the cost of occasional bigger
+-- GC lag, which fortunately sometimes fits into idle time between turns):
+-- (Ignored by GHCJS) Avoid frequent GCs. Only idle-GC during a break in
+-- gameplay (5s), not between slow keystrokes.
+  ghc-options:        "-with-rtsopts=-A99m -I5"
+
+-- Haskell GC in GHCJS every 10s.
+  ghcjs-options:      -DGHCJS_GC_INTERVAL=10000
+-- This is the largest GHCJS_BUSY_YIELD value that does not cause dropped frames
+-- on my machine with default --maxFps.
+  ghcjs-options:      -DGHCJS_BUSY_YIELD=50
+  ghcjs-options:      -dedupe
+
+  if !flag(supportNodeJS)
+    ghcjs-options:    -DGHCJS_BROWSER
+
+library
+  import: options
+  hs-source-dirs:     definition-src,
+                      engine-src,
+                      GameDefinition/game-src,
+                      GameDefinition
+  exposed-modules:    Game.LambdaHack.Core.Dice
+                      Game.LambdaHack.Core.Frequency
+                      Game.LambdaHack.Core.Prelude
+                      Game.LambdaHack.Core.Random
+                      Game.LambdaHack.Definition.Ability
+                      Game.LambdaHack.Definition.Color
+                      Game.LambdaHack.Definition.ContentData
+                      Game.LambdaHack.Definition.Defs
+                      Game.LambdaHack.Definition.Flavour
+                      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.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.PickActionM
+                      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.Input
+                      Game.LambdaHack.Client.UI.Content.Screen
+                      Game.LambdaHack.Client.UI.ContentClientUI
+                      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.Client.UI.UIOptionsParse
+                      Game.LambdaHack.Common.Analytics
+                      Game.LambdaHack.Common.Area
+                      Game.LambdaHack.Common.Actor
+                      Game.LambdaHack.Common.ActorState
+                      Game.LambdaHack.Common.Faction
+                      Game.LambdaHack.Common.File
+                      Game.LambdaHack.Common.HighScore
+                      Game.LambdaHack.Common.Item
+                      Game.LambdaHack.Common.ItemAspect
+                      Game.LambdaHack.Common.Kind
+                      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.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.Types
+                      Game.LambdaHack.Common.Vector
+                      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.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
+  exposed-modules:    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
+                      Client.UI.Content.Input
+                      Client.UI.Content.Screen
+                      Implementation.MonadClientImplementation
+                      Implementation.MonadServerImplementation
+  other-modules:      Paths_LambdaHack
+  autogen-modules:    Paths_LambdaHack
+  build-depends:      assert-failure >= 0.1.2 && < 0.2,
+                      async      >= 2,
+                      base       >= 4.10 && < 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 >= 0.5.2.2,
+                      filepath   >= 1.2.0.1,
+                      ghc-prim,
+                      hashable   >= 1.1.2.5,
+                      hsini      >= 0.2,
+                      keys       >= 3,
+                      miniutter  >= 0.5.0.0,
+                      optparse-applicative >= 0.13,
+                      pretty-show >= 1.6,
+                      primitive  >= 0.6.1.0,
+                      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,
+                      template-haskell >= 2.6,
+                      ghc-compact
+
+  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) {
+    other-modules:    Game.LambdaHack.Common.JSFile
+  } else {
+    other-modules:    Game.LambdaHack.Common.HSFile
+    build-depends:    zlib >= 0.5.3.1
+  }
+
+executable LambdaHack
+  import: options, exe-options
+  main-is:            GameDefinition/Main.hs
+  build-depends:      ,LambdaHack
+                      ,async
+                      ,base
+                      ,filepath
+                      ,optparse-applicative
+
+test-suite test
+  import: options, exe-options
+  type:               exitcode-stdio-1.0
+  main-is:            test/test.hs
+  build-depends:      ,LambdaHack
+                      ,async
+                      ,base
+                      ,filepath
+                      ,optparse-applicative