packages feed

intricacy-0.7.2.2: intricacy.cabal

cabal-version:      >=1.10
name:               intricacy
version:            0.7.2.2
license:            GPL-3
license-file:       COPYING
maintainer:         mbays@sdf.org
author:             Martin Bays
homepage:           http://mbays.freeshell.org/intricacy
synopsis:           A game of competitive puzzle-design
description:
    A networked game with client-server architecture. The core game is a
    lockpicking-themed turn-based puzzle game on a hex grid. Players design
    puzzles (locks) and solve those designed by others. A metagame encourages
    the design of maximally difficult puzzles, within tight size constraints.
    The client supports Curses and SDL, with all graphics in SDL mode drawn by
    code using SDL-gfx. The network protocol is based on the 'binary' package,
    and is intended to be reasonably efficient. TVars are used to give
    transparent local caching and background network operations. Also
    incorporates an implementation of a graph 5-colouring algorithm (see
    GraphColouring.hs).

category:           Game
build-type:         Simple
data-files:
    VeraMoBd.ttf
    tutorial/*.lock
    tutorial/*.text
    sounds/*.ogg

extra-source-files:
    Main_stub.h
    README
    BUILD
    NEWS
    tutorial-extra/*.lock
    tutorial-extra/README

source-repository head
    type:     git
    location: http://mbays.freeshell.org/intricacy/.git

flag game
    description: Build game
    manual:      True

flag sdl
    description: Enable SDL UI

flag sound
    description: Enable sound

flag curses
    description: Enable Curses UI
    default:     False

flag tinfo
    description:
        Link against libtinfo (workaround for https://github.com/skogsbaer/hscurses/issues/31)

    default:     False
    manual:      True

flag tinfow
    description:
        Link against libtinfow (workaround for https://github.com/skogsbaer/hscurses/issues/31)

    default:     False
    manual:      True

flag server
    description: Build server
    default:     False
    manual:      True

executable intricacy
    main-is:          Intricacy.hs
    other-modules:
        AsciiLock
        BinaryInstances
        BoardColouring
        Cache
        Command
        CVec
        Database
        EditGameState
        Frame
        GameState
        GameStateTypes
        GraphColouring
        Hex
        Init
        InputMode
        Interact
        InteractUtil
        KeyBindings
        Lock
        MainState
        Maxlocksize
        Metagame
        Mundanities
        Paths_intricacy
        Physics
        Protocol
        ServerAddr
        Util
        Version

    default-language: Haskell2010

    if !flag(game)
        buildable: False

    else
        default-extensions: DoAndIfThenElse
        build-depends:
            base >=4.3 && <5,
            mtl >=2.1.3.1 && <2.3,
            transformers >=0.3.0.0 && <0.6,
            stm >=2.1 && <2.6,
            directory >=1.0 && <1.4,
            filepath >=1.0 && <1.5,
            time >=1.2 && <1.10,
            bytestring ==0.10.*,
            array >=0.3 && <0.6,
            containers >=0.4 && <0.7,
            vector >=0.9 && <0.13,
            binary >=0.5 && <0.9,
            network-fancy >=0.1.5 && <0.3,
            cryptohash >=0.8 && <0.12,
            safe >=0.2 && <0.4,
            RSA >=2.0 && <2.5,
            crypto-pubkey-types >=0.2 && <0.5,
            crypto-api >=0.10 && <0.14

        if !impl(ghc >=8.0)
            build-depends: semigroups ==0.18.*

        if flag(sdl)
            build-depends:
                SDL >=0.6.5 && <0.7,
                SDL-ttf ==0.6.*,
                SDL-gfx >=0.6 && <0.8

            if flag(sound)
                cpp-options:   -DSOUND
                build-depends:
                    SDL-mixer ==0.6.*,
                    random >=1.0 && <1.2

            if os(windows)
                extra-libraries:
                    SDL_ttf
                    SDL
                    SDL_gfx
                    freetype

                ghc-options:     -optl-mwindows

                if flag(sound)
                    extra-libraries: SDL_mixer

            if os(osx)
                cpp-options:   -DAPPLE
                c-sources:     c_main.c
                include-dirs:  /usr/include/SDL /usr/local/include/SDL
                ghc-options:   -no-hs-main
                build-depends: network-fancy <0.2.1

        if flag(curses)
            cpp-options:   -DMAIN_CURSES
            other-modules:
                CursesRender
                CursesUI
                CursesUIMInstance

            build-depends: hscurses ==1.4.*

            if flag(tinfo)
                extra-libraries: tinfo

            if flag(tinfow)
                extra-libraries: tinfow

        if flag(sdl)
            cpp-options:   -DMAIN_SDL
            other-modules:
                SDLGlyph
                SDLRender
                SDLUI
                SDLUIMInstance

        if (!flag(sdl) && !flag(curses))
            buildable:     False
            build-depends: base <0

executable intricacy-server
    main-is:          Server.hs
    other-modules:
        AsciiLock
        BinaryInstances
        BoardColouring
        CVec
        Database
        Frame
        GameState
        GameStateTypes
        GraphColouring
        Hex
        Lock
        Maxlocksize
        Metagame
        Mundanities
        Paths_intricacy
        Physics
        Protocol
        Util
        Version

    default-language: Haskell2010

    if flag(server)
        default-extensions: DoAndIfThenElse
        build-depends:
            base >=4.3 && <5,
            mtl >=2.2 && <2.3,
            transformers >=0.4 && <0.6,
            stm >=2.1 && <2.6,
            directory >=1.0 && <1.4,
            filepath >=1.0 && <1.5,
            time >=1.5 && <1.10,
            bytestring ==0.10.*,
            array >=0.3 && <0.6,
            containers >=0.4 && <0.7,
            vector >=0.9 && <0.13,
            binary >=0.5 && <0.9,
            network-fancy >=0.1.5 && <0.3,
            cryptohash >=0.8 && <0.12,
            RSA >=2.0 && <2.5,
            crypto-pubkey-types >=0.2 && <0.5,
            crypto-api >=0.10 && <0.14,
            random >=1.0 && <1.3,
            pipes >=4 && <4.4,
            feed >=1.1 && <1.4,
            xml-conduit >=1.0 && < 1.10,
            email-validate >=1.0 && <2.4,
            text >=0.1 && < 1.3,
            text-short ==0.1.*,
            smtp-mail >=0.1.4.1 && < 0.4,
            argon2 ==1.3.*

        if !impl(ghc >=8.0)
            build-depends: semigroups ==0.18.*

    else
        buildable: False