packages feed

bff-0.3: bff.cabal

name:           bff
version:        0.3
license:        PublicDomain
description:
        This is an implementation of the ideas presented in "Bidirectionalization
        for Free!" (paper at POPL'09) by Janis Voigtlaender.
        .
        It also includes an automatic deriver for the Zippable type class.
        .
        Using the cabal flag "binaries" will enable the creation of a web frontend
        to bff, in the form of a CGI program. Make sure you understand the
        security implications before allowing untrusted access to the script.
        .
        Using the cabal flag "stats" will generate programs that collect performance
        statistics about bff and print them as a table.
        .
        Using the cabal flag "render" will generate a program that renders collected
        performance statistics as PDF files.

author:         Janis Voigtlaender, Joachim Breitner

maintainer:     Janis Voigtlaender

category:       Data
synopsis:       Bidirectionalization for Free! (POPL'09)

build-type:     Simple
cabal-version:  >= 1.2

extra-source-files:
        QuickCheckTH.hs
        QuickCheck.hs
        testcgi.py

flag binaries
        description: Build the binaries bff-shell and bff-cgi
        default: False

flag stats
        description: Build the stats-generating and -printing programs
        default: False

flag render
        description: Build the stats-rendering program
        default: False

library
        exposed-modules:
                SimpleTree
                Data.Zippable
                Data.IntMapEq
                Data.IntMapOrd
                Data.Bff
        other-modules:
                Data.Derive.Zippable
                Data.Zippable.Definition
        build-depends:
                base >= 2 && < 4, containers, mtl, template-haskell, category-extras >= 0.53.5, derive >= 0.1.1,
                haskell98, bimap >= 0.2.3, unix
        
executable bff-shell
        main-is:
                bff-shell.hs
        other-modules:
                MyInterpret
        if flag(binaries)
                build-depends:
                        base >= 2 && < 4, directory, hint >= 0.3.2
                buildable: True 
        else
                buildable: False

executable bff-cgi
        main-is:
                bff-cgi.hs
        other-modules:
                MyInterpret
        if flag(binaries)
                build-depends:
                        base >= 2 && < 4, directory, xhtml, cgi, hint >= 0.3.2, utf8-string
                buildable: True 
        else
                buildable: False

executable bff-stats
        main-is:
                Stats.hs
        other-modules:
                StatsDef
        if flag(stats)
                buildable: True 
                build-depends:
                        benchpress >= 0.2.2.2
        else
                buildable: False

executable bff-stats-print
        main-is:
                StatsPrint.hs
        other-modules:
                StatsDef
        if flag(stats)
                buildable: True 
        else
                buildable: False

executable bff-stats-render
        main-is:
                StatsRender.hs
        other-modules:
                StatsDef
        if flag(render)
                buildable: True 
                build-depends:
                        Chart >= 0.12, data-accessor, colour
        else
                buildable: False