Hakefile Examples

* Simple

import Development.Hake
import Development.Hake.FunSetRaw

rules = [

 dflt [ "hello" ]
 ,
 rule ".o" ".c" $ \_ [s] -> [ [ "gcc", "-c", s ] ]
 ,
 file [ "hello" ] [ "hello.o" ] [ [ "gcc", "hello.o", "-o", "hello" ] ]
 ,
 task "clean" [ [ "rm", "-f",  "hello.o", "hello" ] ] )

 ]

main = hake rules

* use ruleSS

import Development.Hake
import Development.Hake.FunSet

rules = [

 dflt [ "hello" ]
 ,
 rule ".o" ".c" $ \_ [s] -> [ [ "gcc", "-c", s ] ]
 ,
 rule ".o" ".cc" $ \_ [s] -> [ [ "g++", "-c", s ] ]
 ,
 ruleSS "" ".o" $ \t (s:_) -> [ (".c",  [ "gcc", s, "-o", t ] ) ,
                                (".cc", [ "g++", s, "-o", t ] ) ]
 ,
 task "clean" [ [ "rm", "-f" "hello.o", "hello" ] ]

 ]

main = hake rules

* use addDeps

import Development.Hake
import Development.Hake.FunSet

rules = [

 dflt [ "hello" ]
 ,
 rule ".o" ".c" $ \_ [s] -> [ [ "gcc", "-c", s ] ]
 ,
 rule ".o" ".cc" $ \_ [s] -> [ [ "g++", "-c", s ] ]
 ,
 ruleSS "" ".o" $ \t s -> [ (".c",  [ [ "gcc" ] ++ s ++ [ "-o", t ] ] ) ,
                            (".cc", [ [ "g++" ] ++ s ++ [ "-o", t ] ] ) ]
 ,
 task "clean" [ [ "rm", "-f", "hello.o", "hello" ] ]

 ] `addDeps` [

 ("hello", [ "module1.o", "module2.o" ])

 ]

main = hake rules

Use other file

You can use other file and other modules by use 'hakefileIs'

* use hakefileIs

import Development.Hake

main = hakefileIs "../Hakefile" ["Variables.hs"]