SpeedyMake: Automation Tool for Easily Building Software

Create a makefile without any knowledge, just two rules and two commands to remind.
Quick and easy XML makefile

The XML makefile holds names of sources file and names of programs used to process them, with choosen options.
It is usually a short XML document. Tag names are not significant. Some attributes are recognized by the interpreter and sufficient to build a list of commands from a list of source files.
Dependencies are automatically recognized by Speedy Make.
You can build a whole project with just the name of the main source file.

Example of a makefile:

<?xml version="1.0" ?>
<makefile name="My Program">
   <compile action="run">
       cl $sources

Basically, only 2 internal commands are required to help the interpreter, but it may be extended without limit.

The <top> tag is parsed first, and the tag it includes are then parsed and executed if they have the "run" action.

Speedy Make via make

File format

Dependency graph

Dependency tracking


Multiple tasks

Compiling and linking



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:

...some filenames with paths...

The destination is another tag:

... a directory ...

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

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


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:


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.


SpeedyMake is distributed under the GNU GPL 2.0 licence. You can use and share freely the program provided the copyright notice is included and the headers unchanged.
You can extend the program and distribute the extended version provided the name of the original author is kept, and its copyright notice unchanged. According to the licence, the modified source code must be provided also.
The source is the Scriptol source, not the C++ backend that is an intermediate code.

Including the executable

You have special authorization to include the binary executable along with your program without the need to include the source providing it is unchanged. If the original source here provided is changed, you must provide it either along with the executable or separatly.

SpeedyMake's makefiles

The format of the makefile is under the Creative Common licence. You can provide files in this format without restriction for use with Speedy Make. If you use the format with another tool, rather than with Speedy Make, you have to specify the name of the original author in the documentation about the format.

By Kim Haskell