packages feed

bishbosh-0.0.0.4: bishbosh.cabal

-- This file is part of BishBosh.
--
-- BishBosh is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- BishBosh is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with BishBosh.  If not, see <http://www.gnu.org/licenses/>.

Name:		bishbosh
Version:	0.0.0.4
Cabal-version:	>= 1.10
Copyright:	(C) 2018 Dr. Alistair Ward
License:	GPL
License-file:	LICENSE
Author:		Dr. Alistair Ward
Stability:	stable
Synopsis:	Plays chess.
Build-type:	Simple
Description:	A chess-game which can be rendered in a terminal (emulator) in raw ASCII, or used as an engine by xboard.
Category:	Game
Tested-with:	GHC == 8.0, GHC == 8.2, GHC == 8.4, GHC == 8.6
Homepage:	https://functionalley.com/BishBosh/bishbosh.html
Maintainer:	mailto:bishbosh@functionalley.com
Bug-reports:	mailto:bishbosh@functionalley.com

-- Files which can be located by the application using 'Paths_bishbosh.datadir'.
Data-files:
    config/bishbosh.dtd
    config/bishbosh.rng
    config/CECP/*.xml
    config/Raw/*.xml
    pgn/*.pgn

-- Files which are packaged, but not required at runtime.
Extra-source-files:
    .ghci
    bishbosh.spec
    bishbosh.svg
    changelog.markdown
    copyright
    man/man1/bishbosh.1
    man/man5/bishbosh.5
    README.markdown

source-repository head
    type:	git
    location:	https://github.com/functionalley/BishBosh

-- Enable using: 'runhaskell Setup configure -f llvm --verbose'.
flag llvm
    Description:	Whether the 'llvm' compiler-backend has been installed and is required for code-generation.
    Manual:		True
    Default:		False

-- Automatically disabled when the required package isn't available.
-- To manually disable, use "runhaskell Setup configure -f -polyparse --verbose"; which may be required to access Parsec's more precise error-messages.
flag polyparse
    Description:	Link with package "polyparse" when available, rather than "parsec".
    Default:		True

-- Automatically disabled when the required package isn't available.
-- To manually disable, use "runhaskell Setup configure -f -hxtrelaxng --verbose", under which circumstances the XML-configuration will be validated against the packaged DTD instead.
flag hxtrelaxng
    Description:	Link with package "hxt-relaxng" when available, for more precise specification of the XML-configuration than a traditional DTD.
    Default:		True

-- Whether to use narrower numerical types than machine-defaults. CAVEAT: this option increases both the space allocated & the execution-time.
flag narrownumbers
    Description:	Use narrow numerical types.
    Manual:		True
    Default:		False

-- Concurrency is used to implement Pondering, & parallelism is used when searching through archived games.
flag threaded
    Description:	Build for parallel runtime.
    Manual:		True
    Default:		True

-- Automatically disabled when the required package isn't available.
-- CAVEAT: on MS-Windows, it may be available but won't necessarily build, so specify "-f -unix --verbose" when configuring the package. 
flag unix
    Description:	Link with package "unix" when available.
    Default:		True

Library
    Default-language:	Haskell2010
    GHC-options:	-O2 -Wall -fno-warn-tabs
    Hs-source-dirs:	src-lib

    Exposed-modules:
        BishBosh.Attribute.CaptureMoveSortAlgorithm
        BishBosh.Attribute.ColourScheme
        BishBosh.Attribute.CriterionValue
        BishBosh.Attribute.CriterionWeight
        BishBosh.Attribute.Direction
        BishBosh.Attribute.LogicalColour
        BishBosh.Attribute.LogicalColourOfSquare
        BishBosh.Attribute.MoveType
        BishBosh.Attribute.PhysicalColour
        BishBosh.Attribute.Rank
        BishBosh.Attribute.RankValues
        BishBosh.Attribute.WeightedMeanAndCriterionValues
        BishBosh.Cartesian.Abscissa
        BishBosh.Cartesian.Coordinates
        BishBosh.Cartesian.Ordinate
        BishBosh.Cartesian.Vector
        BishBosh.Component.EitherQualifiedMove
        BishBosh.Component.Move
        BishBosh.Component.Piece
        BishBosh.Component.PieceSquareArray
        BishBosh.Component.QualifiedMove
        BishBosh.Component.Turn
        BishBosh.Component.Zobrist
        BishBosh.ContextualNotation.PGN
        BishBosh.ContextualNotation.PGNComment
        BishBosh.ContextualNotation.PGNDatabase
        BishBosh.ContextualNotation.PositionHashQualifiedMoveTree
        BishBosh.ContextualNotation.QualifiedMoveForest
        BishBosh.ContextualNotation.StandardAlgebraic
        BishBosh.Data.Bool
        BishBosh.Data.Either
        BishBosh.Data.Exception
        BishBosh.Data.Float
        BishBosh.Data.Integral
        BishBosh.Data.Num
        BishBosh.Data.Ratio
        BishBosh.Data.RoseTree
        BishBosh.Data.Time
        BishBosh.Evaluation.Fitness
        BishBosh.Evaluation.PositionHashQuantifiedGameTree
        BishBosh.Evaluation.QuantifiedGame
        BishBosh.Input.CECPFeatures
        BishBosh.Input.CECPOptions
        BishBosh.Input.CriteriaWeights
        BishBosh.Input.EvaluationOptions
        BishBosh.Input.IOOptions
        BishBosh.Input.NativeUIOptions
        BishBosh.Input.Options
        BishBosh.Input.PGNOptions
        BishBosh.Input.PieceSquareTable
        BishBosh.Input.SearchOptions
        BishBosh.Input.StandardOpeningOptions
        BishBosh.Input.UIOptions
        BishBosh.Input.Verbosity
        BishBosh.Model.DrawReason
        BishBosh.Model.Game
        BishBosh.Model.GameTerminationReason
        BishBosh.Model.GameTree
        BishBosh.Model.MoveFrequency
        BishBosh.Model.PositionHashTree
        BishBosh.Model.Result
        BishBosh.Notation.Coordinate
        BishBosh.Notation.ICCFNumeric
        BishBosh.Notation.MoveNotation
        BishBosh.Notation.Smith
        BishBosh.Property.Empty
        BishBosh.Property.ForsythEdwards
        BishBosh.Property.Null
        BishBosh.Property.Opposable
        BishBosh.Property.Orientated
        BishBosh.Property.Reflectable
        BishBosh.Property.Rotatable
        BishBosh.Property.ShowFloat
        BishBosh.Property.Tree
        BishBosh.Search.AlphaBeta
        BishBosh.Search.DynamicMoveData
        BishBosh.Search.EphemeralData
        BishBosh.Search.KillerMoves
        BishBosh.Search.Search
        BishBosh.Search.SearchState
        BishBosh.Search.Transpositions
        BishBosh.Search.TranspositionValue
        BishBosh.State.Board
        BishBosh.State.CastleableRooksByLogicalColour
        BishBosh.State.Censor
        BishBosh.State.CoordinatesByRankByLogicalColour
        BishBosh.State.EnPassantAbscissa
        BishBosh.State.InstancesByPosition
        BishBosh.State.MaybePieceByCoordinates
        BishBosh.State.Position
        BishBosh.State.TurnsByLogicalColour
        BishBosh.Text.ShowList
        BishBosh.Types
        BishBosh.UI.Command
        BishBosh.UI.PrintObject
        BishBosh.UI.SetObject

    Build-depends:
        array >= 0.5.1.1,
        base >= 4.9 && < 5.0,
        Cabal >= 1.10,
        containers,
        data-default,
        deepseq >= 1.4.1,
        extra,
        factory >= 0.3.1,
        filepath,
        hxt,
        mtl,
        parallel >= 3.0,
        random,
        time,
        toolshed >= 0.18

    if impl(ghc >= 7.0)
        if flag(llvm)
            GHC-options:	-fllvm

        if impl(ghc >= 7.4.1)
            GHC-prof-options:	-fprof-auto -fprof-cafs

            if impl(ghc >= 8.0)
                GHC-options:	-Wredundant-constraints
        else
            GHC-prof-options:	-auto-all -caf-all

    if flag(polyparse)
        Build-depends:		polyparse
        CPP-Options:		-DUSE_POLYPARSE=1
        Exposed-modules:	BishBosh.Text.Poly
    else
        Build-depends:		parsec

    if flag(narrownumbers)
        CPP-Options:		-DUSE_NARROW_NUMBERS=1

Executable bishbosh
    Default-language:	Haskell2010
    GHC-options:	-O2 -Wall -fno-warn-tabs
    Hs-source-dirs:	src-exe
    Main-is:		Main.hs

-- N.B.: required for 'cabal sdist'.
    Other-modules:
        BishBosh.Concurrent.Pondering
        BishBosh.Input.CommandLineOption
        BishBosh.Play
        BishBosh.State.ApplicationTerminationReason
        BishBosh.State.PlayState
        BishBosh.Text.Show
        BishBosh.UI.CECP
        BishBosh.UI.Raw
        Paths_bishbosh

    if flag(unix)
        Other-modules:
            BishBosh.Concurrent.SignalHandlers

    Build-depends:
        array >= 0.5.1.1,
        base >= 4.9 && < 5.0,
        bishbosh,
        Cabal >= 1.10,
        containers,
        data-default,
        deepseq >= 1.4.1,
        directory,
        extra,
        factory >= 0.3.1,
        filepath,
        hxt,
        mtl,
        parallel >= 3.0,
        random,
        time,
        toolshed >= 0.18

    if impl(ghc >= 7.0)
        if flag(llvm)
            GHC-options:	-fllvm

        if flag(threaded)
            GHC-options:	-rtsopts "-with-rtsopts=-N -H100M"

        if impl(ghc >= 7.4.1)
            GHC-prof-options:	-fprof-auto -fprof-cafs -rtsopts -with-rtsopts=-H100M

            if impl(ghc >= 8.0)
                GHC-options:	-Wredundant-constraints
        else
            GHC-prof-options:	-auto-all -caf-all

    if flag(polyparse)
        Build-depends:	polyparse
        CPP-Options:	-DUSE_POLYPARSE=1
    else
        Build-depends:	parsec

    if flag(hxtrelaxng)
        Build-depends:	hxt-relaxng
        CPP-Options:	-DUSE_HXTRELAXNG=1

    if flag(narrownumbers)
        CPP-Options:	-DUSE_NARROW_NUMBERS=1

    if flag(threaded)
        GHC-options:	-threaded

-- N.B.: The Haskell package 'unix' may be available on MS-Windows, but building it will probably be laborious.
    if flag(unix)
        Other-modules:	BishBosh.Concurrent.SignalHandlers
        Build-depends:	unix
        CPP-Options:	-DUSE_UNIX

Test-Suite test
    Default-language:	Haskell2010
    GHC-options:	-O2 -Wall -fno-warn-tabs
    Hs-source-dirs:	src-test
    Main-is:		Main.hs
    Type:		exitcode-stdio-1.0

-- Required for 'cabal sdist'.
    Other-modules:
        BishBosh.Test.HUnit.Attribute.Direction
        BishBosh.Test.HUnit.Attribute.LogicalColour
        BishBosh.Test.HUnit.Attribute.Rank
        BishBosh.Test.HUnit.Cartesian.Coordinates
        BishBosh.Test.HUnit.Cartesian.Vector
        BishBosh.Test.HUnit.Component.Move
        BishBosh.Test.HUnit.Component.Piece
        BishBosh.Test.HUnit.Component.Zobrist
        BishBosh.Test.HUnit.ContextualNotation.PGN
        BishBosh.Test.HUnit.ContextualNotation.PositionHashQualifiedMoveTree
        BishBosh.Test.HUnit.ContextualNotation.StandardAlgebraic
        BishBosh.Test.HUnit.Evaluation.Fitness
        BishBosh.Test.HUnit.Input.Options
        BishBosh.Test.HUnit.Model.Game
        BishBosh.Test.HUnit.Model.GameTree
        BishBosh.Test.HUnit.Model.PositionHashTree
        BishBosh.Test.HUnit.Search.Search
        BishBosh.Test.HUnit.State.Board
        BishBosh.Test.QuickCheck.Attribute.CaptureMoveSortAlgorithm
        BishBosh.Test.QuickCheck.Attribute.CriterionWeight
        BishBosh.Test.QuickCheck.Attribute.Direction
        BishBosh.Test.QuickCheck.Attribute.LogicalColour
        BishBosh.Test.QuickCheck.Attribute.MoveType
        BishBosh.Test.QuickCheck.Attribute.Rank
        BishBosh.Test.QuickCheck.Attribute.RankValues
        BishBosh.Test.QuickCheck.Cartesian.Coordinates
        BishBosh.Test.QuickCheck.Cartesian.Vector
        BishBosh.Test.QuickCheck.Component.Move
        BishBosh.Test.QuickCheck.Component.Piece
        BishBosh.Test.QuickCheck.Component.QualifiedMove
        BishBosh.Test.QuickCheck.Component.Turn
        BishBosh.Test.QuickCheck.Component.Zobrist
        BishBosh.Test.QuickCheck.ContextualNotation.PGN
        BishBosh.Test.QuickCheck.ContextualNotation.PGNComment
        BishBosh.Test.QuickCheck.ContextualNotation.PositionHashQualifiedMoveTree
        BishBosh.Test.QuickCheck.ContextualNotation.QualifiedMoveForest
        BishBosh.Test.QuickCheck.ContextualNotation.StandardAlgebraic
        BishBosh.Test.QuickCheck.Data.Integral
        BishBosh.Test.QuickCheck.Evaluation.PositionHashQuantifiedGameTree
        BishBosh.Test.QuickCheck.Input.CECPFeatures
        BishBosh.Test.QuickCheck.Input.CECPOptions
        BishBosh.Test.QuickCheck.Input.CriteriaWeights
        BishBosh.Test.QuickCheck.Input.EvaluationOptions
        BishBosh.Test.QuickCheck.Input.IOOptions
        BishBosh.Test.QuickCheck.Input.NativeUIOptions
        BishBosh.Test.QuickCheck.Input.Options
        BishBosh.Test.QuickCheck.Input.PGNOptions
        BishBosh.Test.QuickCheck.Input.PieceSquareTable
        BishBosh.Test.QuickCheck.Input.SearchOptions
        BishBosh.Test.QuickCheck.Input.StandardOpeningOptions
        BishBosh.Test.QuickCheck.Input.UIOptions
        BishBosh.Test.QuickCheck.Input.Verbosity
        BishBosh.Test.QuickCheck.Model.DrawReason
        BishBosh.Test.QuickCheck.Model.Game
        BishBosh.Test.QuickCheck.Model.GameTerminationReason
        BishBosh.Test.QuickCheck.Model.GameTree
        BishBosh.Test.QuickCheck.Model.MoveFrequency
        BishBosh.Test.QuickCheck.Model.Result
        BishBosh.Test.QuickCheck.Notation.Coordinate
        BishBosh.Test.QuickCheck.Notation.ICCFNumeric
        BishBosh.Test.QuickCheck.Notation.MoveNotation
        BishBosh.Test.QuickCheck.Notation.Smith
        BishBosh.Test.QuickCheck.Search.KillerMoves
        BishBosh.Test.QuickCheck.Search.Search
        BishBosh.Test.QuickCheck.Search.SearchState
        BishBosh.Test.QuickCheck.State.Board
        BishBosh.Test.QuickCheck.State.CastleableRooksByLogicalColour
        BishBosh.Test.QuickCheck.State.Censor
        BishBosh.Test.QuickCheck.State.InstancesByPosition
        BishBosh.Test.QuickCheck.State.Position
        BishBosh.Test.QuickCheck.State.TurnsByLogicalColour
        BishBosh.Test.QuickCheck.UI.Command
        BishBosh.Test.QuickCheck.UI.PrintObject
        BishBosh.Test.QuickCheck.UI.SetObject
        Paths_bishbosh

    Build-depends:
        array >= 0.5.1.1,
        base >= 4.9 && < 5.0,
        bishbosh,
        Cabal >= 1.10,
        containers,
        data-default,
        extra,
        filepath,
        HUnit,
        hxt,
        mtl,
        QuickCheck >= 2.8.2,
        random,
        toolshed >= 0.18

    if impl(ghc >= 7.0)
        GHC-options:	-with-rtsopts=-H100M

        if impl(ghc >= 7.4.1)
            GHC-prof-options:	-fprof-auto -fprof-cafs -rtsopts -with-rtsopts=-H100M

            if impl(ghc >= 8.0)
                GHC-options:	-Wredundant-constraints
        else
            GHC-prof-options:	-auto-all -caf-all

    if flag(polyparse)
        Build-depends:	polyparse
        CPP-Options:	-DUSE_POLYPARSE=1
    else
        Build-depends:	parsec