Introduction to BlitzBuild

What is BlitzBuild?

BlitzBuild is a command-line build tool for the BlitzPlus and Blitz3D that is designed to make it easier to automate the building of Blitz applications and games. 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. Although this in itself may not sound particularly useful, 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.

  • Plugin system -- BlitzBuild is fully extendable thanks to a plugin system that makes it easy for developers to add their own task definitions. All of the plugin code is written in Blitz syntax, and API documentation will be available later so you can write your own plugins. New plugins are also available in the plugin directory of the project homepage.

  • Automate everything -- BlitzBuild really shines when it is used to automate more than just the software build. It can be used to compress media, create zip files and run automated tests. New features are being added all the time, and you can get an idea of what features are planned, see the project roadmap.

Why Use BlitzBuild?

  • Simple syntax -- BlitzBuild 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.

Version History

Version 0.3.0 - August 11th, 2008

Fixed the following bugs:

  • Error with "delete" task when deleting directories. BlitzBuild would only delete the first directory completely.

Version 0.2.0 - March 24th, 2008

Made the following improvements:

  • Properties can now be set from the command line. More info.

  • All tasks now allow for "if" and "unless" attributes. These can be used to check for certain conditions before running tasks.

  • Implemented a simple parser for task attributes and properties, which allows for functions and dynamic actions.

  • Properties are now handled slightly differently, so global ones can be over-written locally. Useful for calling the same target with different results.

  • Slightly better handling for build file syntax errors. Output now shows the location of problems.

Added the following tasks:

  • include -- Build files can be broken up and included within others.

Added the following plugins:

  • Soda.Protean -- Adds tasks for compiling Protean projects, and functions for getting their version information.

  • Soda.Zip -- Very basic plugin for creating zip files.

  • Soda.UPX -- Adds task for compressing files using UPX. Requires UPX to be installed.

  • Soda.ResHacker -- Tasks for manipulating exes. Currently supports adding resources, such as icons. Requires ResHacker to be installed.

Version 0.1.0 - April 23rd, 2007

Initial release of BlitzBuild. A few of the most important commands are now implemented:

  • blitzcc -- Source files can be compiled from the command line. Works with BlitzPlus, Blitz3D and possibly Blitz2D (not tested at this time).

  • call -- Run another target (and its subtargets) from within the same build file. Used to split build scripts into re-usable chunks.

Project Roadmap

BlitzBuild is an ongoing project, and many features are planned for future versions. This is a very rough list that gives an idea of where the project is headed and what features are planned.

  • Icon changing -- Commands to change executable icons.

  • Zip support -- Commands for creating and modifying zip archives.

  • FTP Support -- Basic support for uploading and downloading files using FTP.

  • HTTP Support -- Basic support for downloading files using HTTP.

  • Support for Subversion -- Functions to work with subversion libraries, including checking in and checking out of different versions.

  • Email Module -- Functions for emailing the build log upon completion.