packages feed

cake3-0.3.0.0: cake3.cabal

-- Initial hmg.cabal generated by cabal init.  For further documentation, 
-- see http://haskell.org/cabal/users-guide/

name:                cake3
version:             0.3.0.0
synopsis:            Third cake the Makefile EDSL
description:         Cake3 is a Makefile EDSL written in Haskell. Write your build logic in
                     Haskell, obtain clean and safe Makefile, distribute it to the end-users.
                     GNU Make is required.
license:             BSD3
license-file:        LICENSE
author:              Sergey Mironov
maintainer:          grrwlf@gmail.com
homepage:            https://github.com/grwlf/cake3
description: 
    Cake3 is a EDSL for building Makefiles, written in Haskell. With cake3,
    developer can write their build logic in Haskell, obtain clean and safe Makefile
    and distribute it among the non-Haskell-aware users. Currenly, GNU Make is
    the only backend supported.
    .
    /Example program/
    .
    > module Cakefile where
    >
    > import Development.Cake3
    > import Cakefile_P
    >
    > cs = map file ["main.c", "second.c"]
    >
    > main = writeMake (file "Makefile") $ do
    >   selfUpdate
    >   d <- rule $ do
    >     shell [cmd|gcc -M $cs -MF @(file "depend.mk")|]
    >   os <- forM cs $ \c -> do
    >     rule $ do
    >       shell [cmd| gcc -c $(extvar "CFLAGS") -o @(c.="o") $c |]
    >   elf <- rule $ do
    >     shell [cmd| gcc -o @(file "main.elf") $os |]
    >   rule $ do
    >     phony "clean"
    >     unsafeShell [cmd|rm $elf $os $d|]
    >   rule $ do
    >     phony "all"
    >     depend elf
    >   includeMakefile d
    .
    /Basic workflow/
    .
      * Install the cake3
    .
      * Create Cakefile.hs in the project root
    .
      * Build the application using cake3 script provided
    . 
      * Execute the application to obtain the Makefile
    .
    See the README on the GitHub <https://github.com/grwlf/cake3> for more
    information. Distribution contains several example projects.
    .
    /Changes/
    .
    * 0.1 - Initial release
    .
    * 0.2 - Redesign (simplify) monadic interface, add support for prebuild/postbuild actions.
    .
    * 0.3 - API changes, improve documentation, improve UrWeb extension


category:            Development
build-type:          Simple
cabal-version:       >=1.8
data-dir:            src
data-files:          CakeScript.sh, UrEmbedHelp.txt

library
  exposed-modules:   Development.Cake3
                     Development.Cake3.Types
                     Development.Cake3.Writer
                     System.FilePath.Wrapper
                     Development.Cake3.Monad
                     Development.Cake3.Ext.UrWeb
                     Development.Cake3.Utils.Find
                     Text.QuasiMake

  build-depends:     base ==4.6.*, haskell-src-meta, template-haskell,
                     filepath, containers, text, monadloc, mtl,
                     bytestring, deepseq, system-filepath, text-format,
                     directory, attoparsec, mime-types,
                     language-javascript ==0.5.*, syb

  hs-source-dirs:    src

executable cake3
  hs-source-dirs:    src
  main-is:           CakeScript.hs
  build-depends:     base ==4.6.*, process
  other-modules:     Paths_cake3

executable urembed
  hs-source-dirs:    src
  main-is:           Development/Cake3/Ext/UrWeb/UrEmbed.hs
  build-depends:     base == 4.6.*, mtl, language-javascript ==0.5.*, process,
                     filepath, syb, optparse-applicative, directory,
                     text, bytestring, containers, language-javascript,
                     haskell-src-meta, template-haskell, attoparsec, monadloc,
                     mime-types
  other-modules:     Paths_cake3