cake3: Third cake the Makefile EDSL

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.



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
  d <- rule $ do
    shell [cmd|gcc -M $cs -MF @(file "")|]
  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

See the README on the GitHub for more information.



Versions0.1.0.0,,,,,,,,, 0.6.0, 0.6.4, 0.6.5
Change logNone available
Dependenciesattoparsec, base (==4.6.*), bytestring, containers, deepseq, directory, filepath, haskell-src-meta, language-javascript (==0.5.*), mime-types, monadloc, mtl, optparse-applicative, process, syb, system-filepath, template-haskell, text, text-format [details]
AuthorSergey Mironov
Home page
Executablesurembed, cake3
UploadedWed Dec 4 09:51:50 UTC 2013 by SergeyMironov



Maintainers' corner

For package maintainers and hackage trustees