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