Some examples of use for Speedy Make

Speedy Make is mainly intended to build software, but is not limited to this use. The engine that parses the XML document used for makefile is able to performs various tasks.

A backup program

The purpose of a backup program is to copy a defined list of files into a defined location. Only newer versions of the files have to be copied.
The list of files to copy is stored into a tag:

<files>
...some filenames with paths...
</file>

The destination is another tag:

<target>
... a directory ...
</target>

The copy command is stored into another tag, and the top action also:

<copy action="run">
  cp *files $target
</copy>

<main>
  copy
</main>

Under Windows the standard command is:

copy /B /Y *files $target

but the copy command may be replaced by a more powerful freeware tool. See at: Unix Tools, for example.

Speedy Make makefile for the C++ version of the ANTLR grammar parser

Compiled with Visual Studio 2008 or Visual C++ Express 2008, build 15.
The makefile is configured to produce a STATIC library, but you can change the options to produce a DLL as well.

Rule for compiling the sources

cl.exe
  /nologo /wd4101 /wd4291 /D"_CRT_SECURE_NO_WARNING" /I"." /I"lib/cpp/"
  /c /MT /W3 /Zc:forScope /FD /EHsc $sources
  

The /I option define the path of files to includes.
/c means for compile only, do not link.
See Visual C++ options for the meaning of other options or type cl /?

Rule to create a static library:

 lib.exe /NOLOGO $sources[.obj] /out:$binary

The same list of source files is used again, but the .cpp extensions are replaced by .obj, this is the purpose of this variable:

$sources[.obj]

Get the makefile...

You can rename the file to makefile.sm to avoir to type the name at command line. This makefile should work with other versions of ANTLR provided that the list of source files is updated.

More examples

SM may be used with any tool that requires a list of files in input:

Since the makefile is an XML document, makefiles may be generated by other tools that allow to select a list of files, put the list into a tag, and apply predefined rules on the list. The smake parser is then called with the document as parameter.