Version: 0.1.0
Release Date: 1st October, 2019
Licence: GPLv3


blam is a very simple build system for Blitz. It's based on BlitzBuild, but has been rebuilt in BlitzMax and made cross-platform.


blam looks to a file called either blam.xml or build.xml in the current working directory. This file must contain a project node as the root and at least one target element.

A simple build file looks something like this:

<?xml version="1.0"?>
<project name="example" default="build:debug">

  <!-- Build properties -->
  <property name="build.paths.base"   value="${project::get-buildfile-path()}" />
  <property name="build.paths.source" value="${build.paths.base}/src" />
  <property name="build.paths.output" value="${build.paths.base}/build" />

  <!-- Building -->
  <target name="build:debug" description="Build the app in debug mode">
    <bmk action="makeapp" threaded="true" gui="false"
         source="${build.paths.source}/app.bmx" />


The build file can then be run by calling blam build:debug (or just blam when executing the default target).


Before blam can properly run, it needs to be configured with paths to BlitzMax. blam will autoload the contents of blam.ini or blitzbuild.ini in the blam executable's directory.

The ini should contain the following information:

# Configuration file for blam
win32       = c:\path\to\blitzmax\bin\bmk.exe
linux       = /path/to/blitzmax/bin/bmk
macos       = /path/to/blitzmax/bin/bmk

blam will complain if the bmk executable is not found, but it can still be used to run non-bmk tasks.


Calling blam with the name of a target will execute that target in the default build file.

Some of the most commonly-used alternative commands are:

  • -f or --file-name -- Specify the build file to execute (instead of the default blam.xml/build.xml.
  • -t or --target -- Specify the build target to call. Alternatively specify the build target as the last argument.
  • -l or --list -- List all build targets in the build file.

For example, blam -f=myfile.xml -t=mytarget will run mytarget in the myfile.xml file (if both exist).

blam --help lists all available commands and switches.



  • BlitzMax
  • Modules required (not including built-in brl.mod and pub.mod):
    • sodaware.mod
      • sodaware.console_basic
      • sodaware.console_color
      • sodaware.console_commandline
      • sodaware.file_config
      • sodaware.file_config_iniserializer
      • sodaware.file_fnmatch
      • sodaware.file_ini
      • sodaware.file_util
      • sodaware.file_ziphelper
      • sodaware.stringtable
    • prime.mod
      • prime.maxml
    • bah.mod
      • bah.volumes
    • gman.mod
      • gman.zipengine


To build the app in release mode, run the following from the command line:

bmk makeapp -h -r -o build/blam src/main.bmx

Copy the blam executable to its final destination.


Released under the GPLv3. See COPYING for the full licence.