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.

[maintain] [Publish]


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.



Versions,,,,,,,,, 0.6.0, 0.6.4, 0.6.5
Change log None available
Dependencies attoparsec, base (>=4.6 && <4.7), bytestring, containers, deepseq, directory, filepath, haskell-src-meta, language-javascript (>=0.5 && <0.6), mime-types, monadloc, mtl, optparse-applicative, process, syb, system-filepath, template-haskell, text, text-format [details]
License BSD-3-Clause
Author Sergey Mironov
Category Development
Home page
Uploaded by SergeyMironov at 2013-12-04T09:51:50Z



Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees