packages feed

mischief-ecs-0.1.0.0: mischief-ecs.cabal

cabal-version: 3.0
-- The cabal-version field refers to the version of the .cabal specification,
-- and can be different from the cabal-install (the tool) version and the
-- Cabal (the library) version you are using. As such, the Cabal (the library)
-- version used must be equal or greater than the version stated in this field.
-- Starting from the specification version 2.2, the cabal-version field must be
-- the first thing in the cabal file.
-- Initial package description 'mischief' generated by
-- 'cabal init'. For further documentation, see:
--   http://haskell.org/cabal/users-guide/
--
-- The name of the package.
name: mischief-ecs
-- The package version.
-- See the Haskell package versioning policy (PVP) for standards
-- guiding when and how versions should be incremented.
-- https://pvp.haskell.org
-- PVP summary:     +-+------- breaking API changes
--                  | | +----- non-breaking API additions
--                  | | | +--- code changes with no API change
version: 0.1.0.0
-- A short (one-line) description of the package.
synopsis: An opinionated archetype ECS engine built in Haskell.
-- A longer description of the package.
description:
  The ECS at the core of the Mischief game engine. It is mainly focused on ergonomics and
  accessibility. Check the "Learn You an ECS for Great Mischief" book in the haddock documentation
  to learn about using it.

  The high-level API is quite opinionated compared to other Haskell libraries.

category: Game Engine, ECS, Game, Control, Data, Framework
-- The license under which the package is released.
license: BSD-3-Clause
-- The file containing the license text.
license-file: LICENSE
-- The package author(s).
author: Damon
-- An email address to which users can send suggestions, bug reports, and patches.
maintainer: pvdoriginal2019@gmail.com
-- A copyright notice.
-- copyright:
build-type: Simple
-- Extra doc files to be distributed with the package, such as a CHANGELOG or a README.
extra-doc-files: CHANGELOG.md

-- Extra source files to be distributed with the package, such as examples, or a tutorial module.
-- extra-source-files:
common warnings
  ghc-options:
    "-Wall,"
    -Wno-name-shadowing

library
  -- Import common warning flags.
  import: warnings
  -- Modules exported by the library.
  exposed-modules:
    Mischief.ECS
    Mischief.ECS.App
    Mischief.ECS.App.Plugins
    Mischief.ECS.App.Schedules
    Mischief.ECS.App.SystemConfig
    Mischief.ECS.App.SystemDef
    Mischief.ECS.App.Systems
    Mischief.ECS.Archetypes
    Mischief.ECS.Archetypes.Graph
    Mischief.ECS.Collectable
    Mischief.ECS.Components
    Mischief.ECS.Components.Bundle
    Mischief.ECS.Components.BundleTypes
    Mischief.ECS.Components.Common
    Mischief.ECS.Components.HooksDef
    Mischief.ECS.Components.Required
    Mischief.ECS.Components.Runnable
    Mischief.ECS.Components.Spawn
    Mischief.ECS.Entities
    Mischief.ECS.EntityDef
    Mischief.ECS.EventDef
    Mischief.ECS.Events
    Mischief.ECS.Graph
    Mischief.ECS.Hooks
    Mischief.ECS.Interval
    Mischief.ECS.Log
    Mischief.ECS.Mappable
    Mischief.ECS.Messages
    Mischief.ECS.Observer
    Mischief.ECS.Observers
    Mischief.ECS.Prelude
    Mischief.ECS.Relationships
    Mischief.ECS.Relationships.ChildOf
    Mischief.ECS.Relationships.Graph
    Mischief.ECS.Relationships.Order
    Mischief.ECS.Relationships.Tree
    Mischief.ECS.Resources
    Mischief.ECS.Schedules
    Mischief.ECS.Stdin
    Mischief.ECS.Stdout
    Mischief.ECS.Systems
    Mischief.ECS.Tables
    Mischief.ECS.Time
    Mischief.ECS.Timer
    Mischief.ECS.Tutorial.App
    Mischief.ECS.Tutorial.Components
    Mischief.ECS.Tutorial.Dungeon
    Mischief.ECS.Tutorial.Events
    Mischief.ECS.Tutorial.Queries
    Mischief.ECS.Tutorial.Relationships
    Mischief.ECS.Tutorial.Startup
    Mischief.ECS.Tutorial.Systems
    Mischief.ECS.Utils
    Mischief.ECS.Vec
    Mischief.ECS.World
    Mischief.ECS.World.Change
    Mischief.ECS.World.Defer
    Mischief.ECS.World.Insert
    Mischief.ECS.World.Modify
    Mischief.ECS.World.Par
    Mischief.ECS.World.Prefs
    Mischief.ECS.World.Query
    Mischief.ECS.World.Query.Markers
    Mischief.ECS.World.Query.Queryable
    Mischief.ECS.World.Query.QueryFilter
    Mischief.ECS.World.Query.QueryType
    Mischief.ECS.World.Query.TH
    Mischief.ECS.World.Query.TH.Common
    Mischief.ECS.World.Query.TH.QD
    Mischief.ECS.World.Query.TH.QF
    Mischief.ECS.World.Remove
    Mischief.ECS.World.Spawn
    Mischief.ECS.World.Systems
    Mischief.ECS.World.Utils

  -- Modules included in this library but not exported.
  -- other-modules:
  other-modules:
    Mischief.ECS.Hidden

  -- LANGUAGE extensions used by modules in this package.z
  default-extensions:
    DefaultSignatures
    DeriveAnyClass
    DuplicateRecordFields
    FunctionalDependencies
    ImportQualifiedPost
    MagicHash
    NoFieldSelectors
    OverloadedRecordDot
    OverloadedStrings
    QuasiQuotes
    RequiredTypeArguments
    TemplateHaskell
    TypeFamilyDependencies
    UnboxedSums
    UnboxedTuples
    UndecidableInstances
    UnliftedDatatypes
    UnliftedNewtypes

  -- other-extensions:
  -- Other library packages from which modules are imported.
  build-depends:
    ansi-terminal >=1.1.5 && <1.2,
    async >=2.2.6 && <2.3,
    base ^>=4.21.0.0,
    binary >=0.8.9 && <0.9,
    bytestring >=0.12.2 && <0.13,
    clock >=0.8.4 && <0.9,
    co-log >=0.7.0 && <0.8,
    containers >=0.7 && <0.8,
    data-default >=0.8.0 && <0.9,
    hashable >=1.5.1 && <1.6,
    hashtables >=1.4.2 && <1.5,
    haskell-src-meta >=0.8.16 && <0.9,
    megaparsec >=9.8.1 && <9.9,
    mtl >=2.3.1 && <2.4,
    primitive >=0.9.1 && <0.10,
    stm >=2.5.3 && <2.6,
    template-haskell >=2.23.0 && <2.24,
    text >=2.1.2 && <2.2,
    time >=1.14 && <1.15,
    transformers >=0.6.1 && <0.7,
    vector >=0.13.2 && <0.14,

  -- Directories containing source files.
  hs-source-dirs:
    src

  -- Base language which the package is written in.
  default-language:
    GHC2024

  ghc-options: -fno-omit-yields

test-suite mischief-test
  -- Import common warning flags.
  import: warnings
  ghc-options: -fno-omit-yields
  -- Base language which the package is written in.
  default-language: GHC2024
  -- Modules included in this executable, other than Main.
  -- other-modules:
  -- LANGUAGE extensions used by modules in this package.
  default-extensions:
    DeriveAnyClass
    DuplicateRecordFields
    NoFieldSelectors
    NoGeneralizedNewtypeDeriving
    OverloadedRecordDot
    OverloadedStrings
    QuasiQuotes
    RequiredTypeArguments
    TypeFamilyDependencies

  -- other-extensions:
  -- The interface type and version of the test suite.
  type: exitcode-stdio-1.0
  -- Directories containing source files.
  hs-source-dirs: test
  -- The entrypoint to the test suite.
  main-is: Main.hs
  other-modules: Relationships
  -- Test dependencies.
  build-depends:
    base ^>=4.21.0.0,
    containers,
    data-default,
    mischief-ecs,
    primitive,
    random,
    transformers,

executable example-dungeon
  main-is: Dungeon.hs
  hs-source-dirs: examples
  build-depends:
    base ^>=4.21.0.0,
    containers >=0.7 && <0.8,
    data-default >=0.8.0 && <0.9,
    primitive >=0.9.1 && <0.10,
    random >=1.3.1 && <1.4,
    transformers >=0.6.1 && <0.7,

  default-language: GHC2024
  default-extensions:
    DeriveAnyClass
    DuplicateRecordFields
    NoFieldSelectors
    NoGeneralizedNewtypeDeriving
    OverloadedRecordDot
    OverloadedStrings
    QuasiQuotes
    RequiredTypeArguments
    TemplateHaskell
    TypeFamilyDependencies

benchmark bench-spawn
  type: exitcode-stdio-1.0
  main-is: bench-spawn.hs
  hs-source-dirs: benchmarks
  default-language: GHC2024
  build-depends:
    base >=4.21.0 && <4.22,
    containers >=0.7 && <0.8,
    criterion >=1.6.5 && <1.7,
    deepseq >=1.5.1 && <1.6,
    primitive >=0.9.1 && <0.10,
    time >=1.14 && <1.15,
    transformers >=0.6.1 && <0.7,

  default-extensions:
    DeriveAnyClass
    DuplicateRecordFields
    NoFieldSelectors
    NoGeneralizedNewtypeDeriving
    OverloadedRecordDot
    OverloadedStrings
    QuasiQuotes
    RequiredTypeArguments
    TemplateHaskell
    TypeFamilyDependencies

benchmark bench-insert
  type: exitcode-stdio-1.0
  main-is: bench-insert.hs
  hs-source-dirs: benchmarks
  default-language: GHC2024
  build-depends:
    base >=4.21.0 && <4.22,
    containers >=0.7 && <0.8,
    criterion >=1.6.5 && <1.7,
    deepseq >=1.5.1 && <1.6,
    primitive >=0.9.1 && <0.10,
    time >=1.14 && <1.15,
    transformers >=0.6.1 && <0.7,

  default-extensions:
    DeriveAnyClass
    DuplicateRecordFields
    NoFieldSelectors
    NoGeneralizedNewtypeDeriving
    OverloadedRecordDot
    OverloadedStrings
    QuasiQuotes
    RequiredTypeArguments
    TemplateHaskell
    TypeFamilyDependencies

benchmark bench-update
  type: exitcode-stdio-1.0
  main-is: bench-update.hs
  hs-source-dirs: benchmarks
  default-language: GHC2024
  build-depends:
    base >=4.21.0 && <4.22,
    containers >=0.7 && <0.8,
    criterion >=1.6.5 && <1.7,
    deepseq >=1.5.1 && <1.6,
    primitive >=0.9.1 && <0.10,
    time >=1.14 && <1.15,
    transformers >=0.6.1 && <0.7,

  default-extensions:
    DeriveAnyClass
    DuplicateRecordFields
    NoFieldSelectors
    NoGeneralizedNewtypeDeriving
    OverloadedRecordDot
    OverloadedStrings
    QuasiQuotes
    RequiredTypeArguments
    TemplateHaskell
    TypeFamilyDependencies