7 category: Development, Shake
8 author: Neil Mitchell <ndmitchell@gmail.com>
9 maintainer: Neil Mitchell <ndmitchell@gmail.com>
10 copyright: Neil Mitchell 2011-2017
11 synopsis: Build system library, like Make, but more accurate dependencies.
13 Shake is a Haskell library for writing build systems - designed as a
14 replacement for @make@. See "Development.Shake" for an introduction,
15 including an example. Further examples are included in the Cabal tarball,
16 under the @Examples@ directory. The homepage contains links to a user
17 manual, an academic paper and further information:
18 <http://shakebuild.com>
20 To use Shake the user writes a Haskell program
21 that imports "Development.Shake", defines some build rules, and calls
22 the 'Development.Shake.shakeArgs' function. Thanks to do notation and infix
23 operators, a simple Shake build system
24 is not too dissimilar from a simple Makefile. However, as build systems
25 get more complex, Shake is able to take advantage of the excellent
26 abstraction facilities offered by Haskell and easily support much larger
27 projects. The Shake library provides all the standard features available in other
28 build systems, including automatic parallelism and minimal rebuilds.
29 Shake also provides more accurate dependency tracking, including seamless
30 support for generated files, and dependencies on system information
31 (e.g. compiler version).
32 homepage: http://shakebuild.com
33 bug-reports: https://github.com/ndmitchell/shake/issues
34 tested-with: GHC==8.0.1, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
39 src/Test/C/constants.c
40 src/Test/C/constants.h
42 src/Test/MakeTutor/Makefile
43 src/Test/MakeTutor/hellofunc.c
44 src/Test/MakeTutor/hellomake.c
45 src/Test/MakeTutor/hellomake.h
47 src/Test/Ninja/*.ninja
48 src/Test/Ninja/subdir/*.ninja
49 src/Test/Ninja/*.output
50 src/Test/Progress/*.prog
53 src/Test/Tup/newmath/root.cfg
54 src/Test/Tup/newmath/square.c
55 src/Test/Tup/newmath/square.h
58 docs/shake-progress.png
68 docs/manual/constants.c
69 docs/manual/constants.h
72 source-repository head
74 location: https://github.com/ndmitchell/shake.git
79 description: Obtain FileTime using portable functions
82 default-language: Haskell2010
83 -- dot directory on own row
94 unordered-containers >= 0.2.1,
106 cpp-options: -DPORTABLE
108 build-depends: old-time
111 build-depends: unix >= 2.5.1
117 Development.Shake.Classes
118 Development.Shake.Command
119 Development.Shake.Config
120 Development.Shake.FilePath
121 Development.Shake.Forward
122 Development.Shake.Rule
123 Development.Shake.Util
126 Development.Ninja.Env
127 Development.Ninja.Lexer
128 Development.Ninja.Parse
129 Development.Ninja.Type
130 Development.Shake.Args
131 Development.Shake.ByteString
132 Development.Shake.Core
133 Development.Shake.CmdOption
134 Development.Shake.Database
135 Development.Shake.Demo
136 Development.Shake.Derived
137 Development.Shake.Errors
138 Development.Shake.FileInfo
139 Development.Shake.FilePattern
140 Development.Shake.Monad
141 Development.Shake.Pool
142 Development.Shake.Profile
143 Development.Shake.Progress
144 Development.Shake.Resource
145 Development.Shake.Rules.Directory
146 Development.Shake.Rules.File
147 Development.Shake.Rules.Files
148 Development.Shake.Rules.Oracle
149 Development.Shake.Rules.OrderOnly
150 Development.Shake.Rules.Rerun
151 Development.Shake.Shake
152 Development.Shake.Special
153 Development.Shake.Storage
154 Development.Shake.Types
155 Development.Shake.Value
171 default-language: Haskell2010
173 ghc-options: -main-is Run.main
175 ghc-options: -rtsopts
176 -- GHC bug 7646 means -threaded causes errors
178 ghc-options: -threaded "-with-rtsopts=-I0 -qg -qb"
186 unordered-containers >= 0.2.1,
199 cpp-options: -DPORTABLE
201 build-depends: old-time
204 build-depends: unix >= 2.5.1
211 Development.Make.Parse
212 Development.Make.Rules
213 Development.Make.Type
214 Development.Ninja.All
215 Development.Ninja.Env
216 Development.Ninja.Lexer
217 Development.Ninja.Parse
218 Development.Ninja.Type
220 Development.Shake.Args
221 Development.Shake.ByteString
222 Development.Shake.Classes
223 Development.Shake.CmdOption
224 Development.Shake.Command
225 Development.Shake.Core
226 Development.Shake.Database
227 Development.Shake.Demo
228 Development.Shake.Derived
229 Development.Shake.Errors
230 Development.Shake.FileInfo
231 Development.Shake.FilePath
232 Development.Shake.FilePattern
233 Development.Shake.Forward
234 Development.Shake.Monad
235 Development.Shake.Pool
236 Development.Shake.Profile
237 Development.Shake.Progress
238 Development.Shake.Resource
239 Development.Shake.Rule
240 Development.Shake.Rules.Directory
241 Development.Shake.Rules.File
242 Development.Shake.Rules.Files
243 Development.Shake.Rules.Oracle
244 Development.Shake.Rules.OrderOnly
245 Development.Shake.Rules.Rerun
246 Development.Shake.Shake
247 Development.Shake.Special
248 Development.Shake.Storage
249 Development.Shake.Types
250 Development.Shake.Value
266 test-suite shake-test
267 default-language: Haskell2010
268 type: exitcode-stdio-1.0
272 ghc-options: -main-is Test.main -rtsopts
274 -- space leak introduced by -O1 in 7.4, see #445
275 ghc-options: -with-rtsopts=-K1K
277 -- GHC bug 7646 (fixed in 7.8) means -threaded causes errors
278 ghc-options: -threaded
287 unordered-containers >= 0.2.1,
300 cpp-options: -DPORTABLE
302 build-depends: old-time
305 build-depends: unix >= 2.5.1
312 Development.Make.Parse
313 Development.Make.Rules
314 Development.Make.Type
315 Development.Ninja.All
316 Development.Ninja.Env
317 Development.Ninja.Lexer
318 Development.Ninja.Parse
319 Development.Ninja.Type
321 Development.Shake.Args
322 Development.Shake.ByteString
323 Development.Shake.Classes
324 Development.Shake.CmdOption
325 Development.Shake.Command
326 Development.Shake.Config
327 Development.Shake.Core
328 Development.Shake.Database
329 Development.Shake.Demo
330 Development.Shake.Derived
331 Development.Shake.Errors
332 Development.Shake.FileInfo
333 Development.Shake.FilePath
334 Development.Shake.FilePattern
335 Development.Shake.Forward
336 Development.Shake.Monad
337 Development.Shake.Pool
338 Development.Shake.Profile
339 Development.Shake.Progress
340 Development.Shake.Resource
341 Development.Shake.Rule
342 Development.Shake.Rules.Directory
343 Development.Shake.Rules.File
344 Development.Shake.Rules.Files
345 Development.Shake.Rules.Oracle
346 Development.Shake.Rules.OrderOnly
347 Development.Shake.Rules.Rerun
348 Development.Shake.Shake
349 Development.Shake.Special
350 Development.Shake.Storage
351 Development.Shake.Types
352 Development.Shake.Util
353 Development.Shake.Value