packages feed

Grow-1.1.0.2: Grow.cabal

-- content information
name:          Grow
category:      Build
synopsis:      A declarative make-like interpreter.
description:   Grow is a well-defined replacement for Makefiles and the like to build complex
               hierarchies of files with minimal effort. 
               .
               Like many Makefile-like tools, Grow depends on the notion of
               timestamps to determine whether a file should be recompiled or
               not. Grow is much simpler than those, though, and I might argue way
               easier to use as well.
               .
               On startup, Grow will look for a file named "Seed" in the current
               directory, and evaluate the grow expressions contained within.
               .
               For example, here is a simple Seed file to compile a single C file
               into an executable.
               .
               > tee $$arg:in {
               >   all = ($main:seq "All done !"):in $execs
               >   execs = hook ld [main] [main.o] :in $objects
               >   objects = hook cc [main.o] [main.c]
               > }
               .
               Notice the `hook` function ? It is the Grow primitive that calls an
               external program to perform actual tasks. 
               .
               In Grow, hooks are expected to only accept files as their arguments,
               so we have to write the wrapper scripts `cc` and `ld` that accept
               arguments in the form "<destination>... <source>...". They are pretty
               trivial to write since they only involve renaming variables and
               swapping arguments.
               .
               Here are sample `cc` and `ld` scripts to show you there is nothing
               magical about them :
               .
               > #!/bin/bash
               > obj="$1" ; shift ; src="$1"
               > gcc -c "$src" -o "$obj"
               .
               > #!/bin/bash
               > bin="$1" ; shift ; obj="$1"
               > gcc "$obj" -o "$bin"
               .
               In grow, instead of writing recipes in the configuration, we just declare
               hooks and then write the appropriate wrapper scripts to call compilers with
               the correct flags and arguments.

-- meta-information
author:        Marc Coiffier
maintainer:    marc.coiffier@gmail.com
version:       1.1.0.2
license:       OtherLicense
license-file:  LICENSE

-- build information
build-type:    Simple
cabal-version: >=1.10

library
  exposed-modules: Grow Language.Grow Language.Syntax.Grow
  build-depends: base (== 4.6.*), definitive-base (== 1.2.*), containers (== 0.5.*), deepseq (== 1.3.*), array (== 0.5.*), bytestring (== 0.10.*), vector (== 0.10.*), primitive (== 0.5.*), definitive-parser (== 1.2.*), definitive-filesystem (== 1.2.*), definitive-reactive (== 1.0.*), clock (== 0.4.*), directory (== 1.2.*), filepath (== 1.3.*), time (== 1.4.*), old-locale (== 1.0.*), unix (== 2.7.*), process (== 1.2.*)
  default-extensions: RebindableSyntax NoMonomorphismRestriction GeneralizedNewtypeDeriving FlexibleInstances LambdaCase FlexibleContexts MultiParamTypeClasses ImplicitParams
  ghc-options: 
  default-language: Haskell2010