cabal-version: 2.4
-- Run 'cabal2nix . >futhark.nix' after adding deps.
name:           futhark
version:        0.19.3
synopsis:       An optimising compiler for a functional, array-oriented language.

description:    Futhark is a small programming language designed to be compiled to
                efficient parallel code. It is a statically typed, data-parallel,
                and purely functional array language in the ML family, and comes
                with a heavily optimising ahead-of-time compiler that presently
                generates GPU code via CUDA and OpenCL, although the language itself
                is hardware-agnostic.
                .
                For more information, see the website at https://futhark-lang.org
                .
                For introductionary information about hacking on the
                Futhark compiler, see
                <https://futhark.readthedocs.io/en/latest/hacking.html the hacking guide>.
                Regarding the internal design of the compiler, the following modules make
                good starting points:
                .
                * "Futhark.IR.Syntax" explains the
                  basic design of the intermediate representation (IR).
                * "Futhark.Construct" explains how to write code that
                  manipulates and creates AST fragments.
                .
                <<docs/assets/ohyes.png You too can go fast once you rewrite your program in Futhark.>>

category:       Language
homepage:       https://futhark-lang.org
bug-reports:    https://github.com/diku-dk/futhark/issues
maintainer:     Troels Henriksen athas@sigkill.dk
license:        ISC
license-file:   LICENSE
build-type:     Simple
extra-source-files:
    rts/c/*.h
    rts/futhark-doc/*.css
    rts/python/*.py
    prelude/*.fut
-- Just enough of the docs to build the manpages.
    docs/**/*.rst
    docs/Makefile
    docs/conf.py
    docs/requirements.txt
extra-doc-files:
  assets/*.png

source-repository head
  type: git
  location: https://github.com/diku-dk/futhark

library
  exposed-modules:
      Futhark.Actions
      Futhark.Analysis.Alias
      Futhark.Analysis.CallGraph
      Futhark.Analysis.DataDependencies
      Futhark.Analysis.HORep.MapNest
      Futhark.Analysis.HORep.SOAC
      Futhark.Analysis.Metrics
      Futhark.Analysis.Metrics.Type
      Futhark.Analysis.PrimExp
      Futhark.Analysis.PrimExp.Parse
      Futhark.Analysis.PrimExp.Convert
      Futhark.Analysis.PrimExp.Generalize
      Futhark.Analysis.PrimExp.Simplify
      Futhark.Analysis.Rephrase
      Futhark.Analysis.SymbolTable
      Futhark.Analysis.UsageTable
      Futhark.Bench
      Futhark.Binder
      Futhark.Binder.Class
      Futhark.CLI.Autotune
      Futhark.CLI.Bench
      Futhark.CLI.C
      Futhark.CLI.CUDA
      Futhark.CLI.Check
      Futhark.CLI.Datacmp
      Futhark.CLI.Dataset
      Futhark.CLI.Dev
      Futhark.CLI.Doc
      Futhark.CLI.Literate
      Futhark.CLI.Misc
      Futhark.CLI.Multicore
      Futhark.CLI.OpenCL
      Futhark.CLI.Pkg
      Futhark.CLI.PyOpenCL
      Futhark.CLI.Python
      Futhark.CLI.Query
      Futhark.CLI.REPL
      Futhark.CLI.Run
      Futhark.CLI.Test
      Futhark.CodeGen.Backends.CCUDA
      Futhark.CodeGen.Backends.CCUDA.Boilerplate
      Futhark.CodeGen.Backends.COpenCL
      Futhark.CodeGen.Backends.COpenCL.Boilerplate
      Futhark.CodeGen.Backends.GenericC
      Futhark.CodeGen.Backends.GenericC.CLI
      Futhark.CodeGen.Backends.GenericC.Server
      Futhark.CodeGen.Backends.GenericC.Options
      Futhark.CodeGen.Backends.GenericPython
      Futhark.CodeGen.Backends.GenericPython.AST
      Futhark.CodeGen.Backends.GenericPython.Definitions
      Futhark.CodeGen.Backends.GenericPython.Options
      Futhark.CodeGen.Backends.MulticoreC
      Futhark.CodeGen.Backends.PyOpenCL
      Futhark.CodeGen.Backends.PyOpenCL.Boilerplate
      Futhark.CodeGen.Backends.SequentialC
      Futhark.CodeGen.Backends.SequentialC.Boilerplate
      Futhark.CodeGen.Backends.SequentialPython
      Futhark.CodeGen.Backends.SimpleRep
      Futhark.CodeGen.ImpCode
      Futhark.CodeGen.ImpCode.Kernels
      Futhark.CodeGen.ImpCode.Multicore
      Futhark.CodeGen.ImpCode.OpenCL
      Futhark.CodeGen.ImpCode.Sequential
      Futhark.CodeGen.ImpGen
      Futhark.CodeGen.ImpGen.CUDA
      Futhark.CodeGen.ImpGen.Kernels
      Futhark.CodeGen.ImpGen.Kernels.Base
      Futhark.CodeGen.ImpGen.Kernels.SegHist
      Futhark.CodeGen.ImpGen.Kernels.SegMap
      Futhark.CodeGen.ImpGen.Kernels.SegRed
      Futhark.CodeGen.ImpGen.Kernels.SegScan
      Futhark.CodeGen.ImpGen.Kernels.SegScan.SinglePass
      Futhark.CodeGen.ImpGen.Kernels.SegScan.TwoPass
      Futhark.CodeGen.ImpGen.Kernels.ToOpenCL
      Futhark.CodeGen.ImpGen.Kernels.Transpose
      Futhark.CodeGen.ImpGen.Multicore
      Futhark.CodeGen.ImpGen.Multicore.Base
      Futhark.CodeGen.ImpGen.Multicore.SegHist
      Futhark.CodeGen.ImpGen.Multicore.SegMap
      Futhark.CodeGen.ImpGen.Multicore.SegRed
      Futhark.CodeGen.ImpGen.Multicore.SegScan
      Futhark.CodeGen.ImpGen.OpenCL
      Futhark.CodeGen.ImpGen.Sequential
      Futhark.CodeGen.ImpGen.Transpose
      Futhark.CodeGen.OpenCL.Heuristics
      Futhark.CodeGen.SetDefaultSpace
      Futhark.Compiler
      Futhark.Compiler.CLI
      Futhark.Compiler.Program
      Futhark.Construct
      Futhark.Doc.Generator
      Futhark.Error
      Futhark.FreshNames
      Futhark.IR
      Futhark.IR.Aliases
      Futhark.IR.Decorations
      Futhark.IR.Parse
      Futhark.IR.Kernels
      Futhark.IR.Kernels.Kernel
      Futhark.IR.Kernels.Simplify
      Futhark.IR.Kernels.Sizes
      Futhark.IR.KernelsMem
      Futhark.IR.MC
      Futhark.IR.MC.Op
      Futhark.IR.MCMem
      Futhark.IR.Mem
      Futhark.IR.Mem.IxFun
      Futhark.IR.Mem.Simplify
      Futhark.IR.Pretty
      Futhark.IR.Primitive
      Futhark.IR.Primitive.Parse
      Futhark.IR.Prop
      Futhark.IR.Prop.Aliases
      Futhark.IR.Prop.Constants
      Futhark.IR.Prop.Names
      Futhark.IR.Prop.Patterns
      Futhark.IR.Prop.Rearrange
      Futhark.IR.Prop.Reshape
      Futhark.IR.Prop.Scope
      Futhark.IR.Prop.TypeOf
      Futhark.IR.Prop.Types
      Futhark.IR.RetType
      Futhark.IR.SOACS
      Futhark.IR.SOACS.SOAC
      Futhark.IR.SOACS.Simplify
      Futhark.IR.SegOp
      Futhark.IR.Seq
      Futhark.IR.SeqMem
      Futhark.IR.Syntax
      Futhark.IR.Syntax.Core
      Futhark.IR.Traversals
      Futhark.Internalise
      Futhark.Internalise.AccurateSizes
      Futhark.Internalise.Bindings
      Futhark.Internalise.Defunctionalise
      Futhark.Internalise.Defunctorise
      Futhark.Internalise.FreeVars
      Futhark.Internalise.Lambdas
      Futhark.Internalise.LiftLambdas
      Futhark.Internalise.Monad
      Futhark.Internalise.Monomorphise
      Futhark.Internalise.TypesValues
      Futhark.MonadFreshNames
      Futhark.Optimise.BlkRegTiling
      Futhark.Optimise.CSE
      Futhark.Optimise.DoubleBuffer
      Futhark.Optimise.Fusion
      Futhark.Optimise.Fusion.Composing
      Futhark.Optimise.Fusion.LoopKernel
      Futhark.Optimise.InPlaceLowering
      Futhark.Optimise.InPlaceLowering.LowerIntoStm
      Futhark.Optimise.InPlaceLowering.SubstituteIndices
      Futhark.Optimise.InliningDeadFun
      Futhark.Optimise.Simplify
      Futhark.Optimise.Simplify.Engine
      Futhark.Optimise.Simplify.Lore
      Futhark.Optimise.Simplify.Rule
      Futhark.Optimise.Simplify.Rules
      Futhark.Optimise.Simplify.Rules.BasicOp
      Futhark.Optimise.Simplify.Rules.ClosedForm
      Futhark.Optimise.Simplify.Rules.Index
      Futhark.Optimise.Simplify.Rules.Loop
      Futhark.Optimise.Simplify.Rules.Simple
      Futhark.Optimise.Sink
      Futhark.Optimise.TileLoops
      Futhark.Optimise.TileLoops.Shared
      Futhark.Optimise.Unstream
      Futhark.Pass
      Futhark.Pass.ExpandAllocations
      Futhark.Pass.ExplicitAllocations
      Futhark.Pass.ExplicitAllocations.Kernels
      Futhark.Pass.ExplicitAllocations.SegOp
      Futhark.Pass.ExplicitAllocations.Seq
      Futhark.Pass.ExplicitAllocations.MC
      Futhark.Pass.ExtractKernels
      Futhark.Pass.ExtractKernels.BlockedKernel
      Futhark.Pass.ExtractKernels.DistributeNests
      Futhark.Pass.ExtractKernels.Distribution
      Futhark.Pass.ExtractKernels.ISRWIM
      Futhark.Pass.ExtractKernels.Interchange
      Futhark.Pass.ExtractKernels.Intragroup
      Futhark.Pass.ExtractKernels.StreamKernel
      Futhark.Pass.ExtractKernels.ToKernels
      Futhark.Pass.ExtractMulticore
      Futhark.Pass.FirstOrderTransform
      Futhark.Pass.KernelBabysitting
      Futhark.Pass.Simplify
      Futhark.Passes
      Futhark.Pipeline
      Futhark.Pkg.Info
      Futhark.Pkg.Solve
      Futhark.Pkg.Types
      Futhark.Script
      Futhark.Server
      Futhark.Test
      Futhark.Test.Values
      Futhark.Test.Values.Parser
      Futhark.Tools
      Futhark.Transform.CopyPropagate
      Futhark.Transform.FirstOrderTransform
      Futhark.Transform.Rename
      Futhark.Transform.Substitute
      Futhark.TypeCheck
      Futhark.Util
      Futhark.Util.Console
      Futhark.Util.IntegralExp
      Futhark.Util.Loc
      Futhark.Util.Log
      Futhark.Util.Options
      Futhark.Util.Pretty
      Futhark.Util.Table
      Futhark.Version
      Language.Futhark
      Language.Futhark.Core
      Language.Futhark.Interpreter
      Language.Futhark.Parser
      Language.Futhark.Prelude
      Language.Futhark.Pretty
      Language.Futhark.Prop
      Language.Futhark.Query
      Language.Futhark.Semantic
      Language.Futhark.Syntax
      Language.Futhark.Traversals
      Language.Futhark.TypeChecker
      Language.Futhark.TypeChecker.Match
      Language.Futhark.TypeChecker.Modules
      Language.Futhark.TypeChecker.Monad
      Language.Futhark.TypeChecker.Terms
      Language.Futhark.TypeChecker.Types
      Language.Futhark.TypeChecker.Unify
      Language.Futhark.Warnings
  other-modules:
      Language.Futhark.Parser.Parser
      Language.Futhark.Parser.Lexer
      Paths_futhark
  autogen-modules:
      Paths_futhark
  hs-source-dirs:
      src
  ghc-options: -Wall -Wcompat -Wredundant-constraints -Wincomplete-record-updates -Wmissing-export-lists
  build-tool-depends:
      alex:alex
    , happy:happy
  build-depends:
      aeson >=1.0.0.0
    , ansi-terminal >=0.6.3.1
    , array >=0.4
    , base >=4.13 && <5
    , binary >=0.8.3
    , blaze-html >=0.9.0.1
    , bytestring >=0.10.8
    , bytestring-to-vector >=0.3.0.1
    , bmp >=1.2.6.3
    , containers >=0.6.2.1
    , directory >=1.3.0.0
    , directory-tree >=0.12.1
    , dlist >=0.6.0.1
    , file-embed >=0.0.9
    , filepath >=1.4.1.1
    , free >=4.12.4
    , gitrev >=1.2.0
    , hashable
    , haskeline
    , language-c-quote >=0.12
    , mainland-pretty >=0.6.1
    , cmark-gfm >=0.2.1
    , megaparsec >=9.0.0
    , mtl >=2.2.1
    , neat-interpolation >=0.3
    , parallel >=3.2.1.0
    , pcg-random >= 0.1
    , process >=1.4.3.0
    , process-extras >=0.7.2
    , regex-tdfa >=1.2
    , srcloc >=0.4
    , template-haskell >=2.11.1
    , temporary
    , terminal-size >=0.3
    , text >=1.2.2.2
    , time >=1.6.0.1
    , transformers >=0.3
    , unordered-containers >=0.2.7
    , utf8-string >=1
    , vector >=0.12
    , vector-binary-instances >=0.2.2.0
    , versions >=4.0.1
    , zip-archive >=0.3.1.1
    , zlib >=0.6.1.2
  default-language: Haskell2010

executable futhark
  main-is: src/futhark.hs
  other-modules:
      Paths_futhark
  ghc-options: -Wall -Wcompat -Wredundant-constraints -Wincomplete-record-updates -Wmissing-export-lists -threaded -rtsopts "-with-rtsopts=-N -qg -H1G -A4M"
  build-depends:
      base
    , futhark
    , text
  default-language: Haskell2010

test-suite unit
  type: exitcode-stdio-1.0
  main-is: futhark_tests.hs
  other-modules:
      Futhark.BenchTests
      Futhark.Pkg.SolveTests
      Futhark.IR.Prop.RearrangeTests
      Futhark.IR.Prop.ReshapeTests
      Futhark.IR.PropTests
      Futhark.IR.Syntax.CoreTests
      Futhark.IR.SyntaxTests
      Futhark.IR.Mem.IxFun.Alg
      Futhark.IR.Mem.IxFunTests
      Futhark.IR.Mem.IxFunWrapper
      Futhark.IR.PrimitiveTests
      Language.Futhark.CoreTests
      Language.Futhark.SyntaxTests
      Paths_futhark
  hs-source-dirs:
      unittests
  ghc-options: -Wall -Wcompat -Wredundant-constraints -Wincomplete-record-updates -Wmissing-export-lists
  build-depends:
      QuickCheck >=2.8
    , base
    , containers
    , futhark
    , megaparsec
    , mtl
    , parser-combinators
    , tasty
    , tasty-hunit
    , tasty-quickcheck
    , text
  default-language: Haskell2010