SMK Software Build System


The SMK utility automatically determines, which pieces of a program need to be recompiled and issues commands to recompile them, in other words, it's a build tool (or make tool), superseding make. The SMK utility works by reading one or more smkfiles, usually named SMK. The smkfiles construct a database of targets, their prerequisites and the commands, used to update the targets, when one or more prerequisite changes.


Advanced features of SMK include:


The latest SMK release is version 0.4.2, released on April, 9th 2005. It is available for download here (.tar.gz, 94862 bytes).

Previous SMK releases include:

version 0.4.1
released on December, 20th 2004. It is available for download here (.tar.gz, 94639 bytes).
version 0.4
released on December, 12th 2004. It is available for download here (.tar.gz, 88560 bytes).
version 0.3.1
released on November, 22nd 2004. It is available for download here (.tar.gz, 81313 bytes).
version 0.3
released on November, 19th 2004. It is available for download here (.tar.gz, 73973 bytes).
version 0.2
released on November, 12th 2004. It is available for download here (.tar.gz, 72451 bytes).


The User's Guide, consisting of a tutorial and a reference manual is avalilable here (single XHTML file, 134774 bytes). .

Mailing lists

There are two SMK mailing lists:


The SMK development takes place on Gna!, project SMK.

SMK uses the GNU Arch software configuration management system. To retrieve the development sources from the GNU Arch archive you need to:

For further instructions on using GNU Arch check out the GNU Arch Tutorial .

The important branches in the archive currently are:

the main development branch
previous main development branch (sealed)
release tag
release tag
release tag
release tag


The primary author of SMK is Momchil Velikov, velco at gna dot org. The SMK releases, as well as the GNU Arch changesets are signed with the following GPG key:

Key ID: A354359A
Fingerprint: 1EAF 10D4 27AA DC78 2B83 0B10 98F6 ED95 A354 359A

You can retrieve the key from a keyserver with:

gpg --recv-keys A354359A

Copyright (C) 2004 Momchil Velikov. All rights reserved.

Last modified: Wed Jan 18 18:40:01 EET 2006

Valid XHTML 1.0!Valid CSS!