cabal-version:      3.4
-- 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.

-- The name of the package.
name:               HushGP

-- The package version.
-- 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:           A PushGP implementation in Haskell.

-- The package author(s).
author:             Rowan Torbitzky-Lane, Taylor

-- An email address to which users can send suggestions, bug reports, and patches.
maintainer:         rowan.a.tl@protonmail.com

category:           Data
build-type:         Simple

common warnings
    ghc-options: -Wall -XTemplateHaskell -threaded

library
    -- Import common warning flags.
    import:           warnings

    -- Modules exported by the library.
    exposed-modules:  HushGP.Push
                    , HushGP.TH
                    , HushGP.Utility
                    , HushGP.Genome
                    , HushGP.State
                    , HushGP.Instructions
                    , HushGP.Instructions.IntInstructions
                    , HushGP.Instructions.ExecInstructions
                    , HushGP.Instructions.FloatInstructions
                    , HushGP.Instructions.GenericInstructions
                    , HushGP.Instructions.BoolInstructions
                    , HushGP.Instructions.CodeInstructions
                    , HushGP.Instructions.StringInstructions
                    , HushGP.Instructions.CharInstructions
                    , HushGP.Instructions.VectorIntInstructions
                    , HushGP.Instructions.VectorFloatInstructions
                    , HushGP.Instructions.VectorStringInstructions
                    , HushGP.Instructions.VectorBoolInstructions
                    , HushGP.Instructions.VectorCharInstructions
                    , HushGP.Instructions.Utility
                    , HushGP.Instructions.Opens
                    , HushGP.PushTests
                    , HushGP.PushTests.IntTests
                    , HushGP.PushTests.GenericTests
                    , HushGP.PushTests.UtilTests
                    , HushGP.GP
                    , HushGP.GP.PushArgs
                    , HushGP.GP.Variation
                    , HushGP.GP.Downsample
                    , HushGP.GP.PushData
                    , HushGP.Problems.IntegerRegression


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

    -- LANGUAGE extensions used by modules in this package.
    -- other-extensions:

    -- Other library packages from which modules are imported.
    build-depends:
        base, containers, lens, split, QuickCheck, regex-tdfa, template-haskell, random, parallel, random-shuffle

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

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

executable HushGP
    -- Import common warning flags.
    import:           warnings

    -- .hs or .lhs file containing the Main module.
    main-is:          Main.hs

    -- Modules included in this executable, other than Main.
    -- other-modules:

    -- LANGUAGE extensions used by modules in this package.
    -- other-extensions:

    -- Other library packages from which modules are imported.
    build-depends:
        base,
        HushGP

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

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

test-suite HushGP-test
    -- Import common warning flags.
    import:           warnings

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

    -- Modules included in this executable, other than Main.
    -- other-modules: 

    -- LANGUAGE extensions used by modules in this package.
    -- 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

    -- Test dependencies.
    build-depends:
        base,
        HushGP,
        lens,
        QuickCheck

test-suite HushGP-test-old
    -- Import common warning flags.
    import:           warnings

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

    -- Modules included in this executable, other than Main.
    -- other-modules: 

    -- LANGUAGE extensions used by modules in this package.
    -- 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:          MainOld.hs

    -- Test dependencies.
    build-depends:
        base,
        HushGP,
        lens,