cake3: Third cake the Makefile EDSL

[ bsd3, development, library, program ] [ Propose Tags ]

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

Modules

[Last Documentation]

  • Development
    • Development.Cake3
      • Ext
        • Development.Cake3.Ext.UrWeb
      • Development.Cake3.Monad
      • Development.Cake3.Types
      • Utils
        • Development.Cake3.Utils.Find
      • Development.Cake3.Writer
  • System
    • FilePath
      • System.FilePath.Wrapper
  • Text
    • Text.QuasiMake

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.2.1.0, 0.3.0.0, 0.3.0.1, 0.4.0.0, 0.5.0.0, 0.5.1.0, 0.5.2.0, 0.6.0, 0.6.4, 0.6.5
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
Maintainer grrwlf@gmail.com
Category Development
Home page https://github.com/grwlf/cake3
Uploaded by SergeyMironov at 2013-12-24T11:13:08Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables urembed, cake3
Downloads 8267 total (38 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-19 [all 7 reports]