Chapter 1. Introduction to blam

What is blam?

blam is a command-line build tool for BlitzMax. Instead of having to open up the IDE and compile the program manually, the whole process can be carried out with a single command line instruction. There are several features that compliment this way of working:

  • Modular build scripts -- A build script can be made up of many different "targets", which allows you to re-use common chunks of code.

  • Dynamically generated include files -- Source files can be modified at build time using filters, allowing developers to generate source from templates.

  • Automate everything -- blam can be used to automate more than just the software build. It can be used to modify files and create zip archives.

    See the project roadmap for a list of planned features.

Why use blam?

  • Simple syntax -- blam uses XML files for build files and configuration, so it's easy to change the build process using a regular text editor.

  • Easy to distribute -- When working in a team, it's essential that all developers know how to build the software and that they do it in the correct way. By using a build script, each developer can be sure they are carrying out the same steps as everyone else.

  • Saves time -- All the stages of building an application, from compressing images to compiling source and creating an installer file can be automated in a single script, leaving you free to spend time on more important activites.

Differences between blam and BlitzBuild

BlitzBuild is the predecessor to blam that works with BlitzPlus, Blitz2D and Blitz3D. There are some important differences between them:

  • Language-specific -- blam can currently only compile BlitzMax source. BlitzBuild only supports legacy Blitz languages.

  • Plugin support -- BlitzBuild supports plugins written in a Blitz-like scripting language. blam currently has no plugin support, but it is planned for a later version.

  • Cross-platform -- blam works on Windows, MacOS and GNU/Linux. BlitzBuild is Windows only.

  • Types and filters -- blam supports types and filters, which make it easier to work with lists of files. BlitzBuild supports neither.

BlitzBuild is still the best option for building legacy Blitz applications until blitzcc support is integrated into blam.