Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


MakeStuff contains the Makefiles and associated scripts that I use to build essentially all of my websites and projects, most notably They have been evolving over the course of several decades (the earliest recorded commit dates back to 1994, and the tree was converted from CVS to git in 2010, but some of the scripts date back at least a decade earlier), so they still contain a certain amount of cruft.

Annotated Contents


blogging (see blogging/ for details.) : blogging.make provides make targets and templates for creating blog entries and posting them to Dreamwidth (a Livejournal clone) or Jekyll. It also includes support for activity logs ( and yyyy/mm.done).

deployment : Git hooks and related tools for efficient website deployment. Mostly these are designed around a web host that can build the site from the the git working tree

make : The general-purpose *.make files included by Makefile.

music : The *.make files and associated scripts used in music- and recording-related subdirectories and projects. These makefiles manage directories containing lyrics (in .flk format), and directories meant to be published on a website. The latter have a subdirectory for every song; tags are used to determine which have web-visible lyrics.

scripts : Short scripts and fragments, mostly having to do with setting up and maintaining subprojects using git.

TeX/ : LaTeX styles for formatting FilkTeX (".flk") files, plus tools for translating them into HTML ( and generating index pages (


Makefile is the heart and soul of MakeStuff. It's really just a framework: it figures out where the MakeStuff directory is by looking up the tree, and includes what it needs. It's designed so that you don't have to maintain a separate Makefile in each subdirectory, just make a symlink to the one in MakeStuff. Usually, the top-level Makefile in a project is a symlink to ./MakeStuff/Makefile and everything else links to ../Makefile.

The Makefile looks for the following local include files:

[.]site/config.make : Only in the top-level directory; this contains make rules, definitions, and dependencies that apply to the entire tree.

[.]site/targets.make : This contains rules and targets.

[.]site/depends.make : This also contains targets; if you have both, you can use this one for specific targets with dependencies.

*/[.]config.make : This contains make rules, definitions, dependencies, and include statements that apply to the current directory. A local .config.make is not inherited by subdirectories. Files in blogging and music are normally included here.

*/[.]depends.make : This contains make rules, definitions, and dependencies that apply to the current directory. If you have both config.make and depends.make, you should use depends.make for specific targets with dependencies.


In addition to being on GitHub, this tree is designed so that it can easily be published on a website. The Apache web server puts a HEADER.html file, if you have one, at the top of a directory listing; and puts README.html at the bottom, after the file list. With a little tweaking you can get similar behavior with plain-text HEADER and README, but you can't always count on having enough control over a hosted website's configuration.

Other Files

MIT-LICENSE.txt : What it says on the tin -- the license for this project and its contents. : The to-do list for this project. The format is trivial: an open circle (lowercase "o") is something that's not finished yet; a filled circle (asterisk) is finished. "~" indicates something I've decided not to do, and "?" indicates something I'm dithering about. Eventually finished items move to a "done" section or, when they start getting moldy, a separate file.


Makefiles and scripts for managing web sites, song lyrics, recording projects, documentation, and more.







No packages published