Build Tools

A lot of the software on this site is Open Source, so whilst you may only wish to use the ‘pre-built’ downloads, having the tools available to allow it to be built from scratch is important – both for those who wish to experiment with the code, and for users in terms of ensuring that the source code is safe.

In most cases, the development environment is the GCCSDK on a Linux system. As a result, many of the tools here are supplied from repositories on GitHub. There is a guide to constructing the build environment from scratch if you’re using a Linux system.

Where the tools are equally useful natively on RISC OS, perhaps with the Desktop Development Environment, the RISC OS versions are available ready-built on their own pages.

If you do use the tools here to make changes or fix bugs in any of my software, then please do consider feeding them back to me regardless of the licence requirements. I can then include the improvements in the original versions of the software, to help ensure that everyone benefits and multiple branches of the code do not end up in the wild.

Common Tools

A number of common build tools are used by all of my software to handle tasks such as controlling the build, assembling menu structures and creating standardised documentation.

Shared Makefiles

The Shared Makefiles provide standard Make recipes for building a number of the projects, which reduces the amount of duplication between different pieces of code.

As supplied, they are for use with GCC in the GCCSDK Cross-Compiler environment, and can be obtained from GitHub.

MenuGen

MenuGen is a tool for building RISC OS menus from definitions contained in text files. It is required to convert the menu definition files found in some of my software source archives into a block of data that the menu routines in SFLib (for applications in C) or WimpLib (for applications in BASIC) can understand.

As the software has evolved, MenuGen can produce two output formats: ‘old’ and ‘new’. Code using SFLib will generally require the newer output format which includes embedded menu and dialogue box names; code using WimpLib will always use the older format without.

For use with the GCCSDK Cross-Compiler environment, MenuGen can be obtained from GitHub. If you wish to use it natively on RISC OS, it can be obtained ready built from elsewhere on this site.

ManTools

ManTools are a set of Perl scripts intended for generating StrongHelp, HTML, DDF and plain text help files from a single source file. This makes it possible to derive all the different formats of a manual from one piece of text, simplifying the process of updates.

As supplied, they are for use with GCC in the GCCSDK Cross-Compiler environment, and can be obtained from GitHub.

As Perl scripts, they might also work on RISC OS systems with the help of Alex Waugh’s port of Perl 5, although this has not been tested.

StrongHelp & BindHelp

To turn the output from ManTools’ StrongHelp script into a complete manual, it is necessary to have a tool to assemble manuals form their composite files. If you are building on RISC OS, then StrongHelp itself provides both drag-and-drop and command-line methods to do this.

When cross-compiling on Linux, the BindHelp utility that comes with OSLib’s build tools can do the job – you will need the version that comes in SVN r407 or later, which includes the -r and -f command-line options. Many of the supplied makefiles and build scripts are set up to use BindHelp.

PackTools

PackTools are a set of Perl scripts intended to carry out some of the actions needed to package software as part of the release process.

As supplied, they are for use with GCC in the GCCSDK Cross-Compiler environment, and can be obtained from GitHub.

As Perl scripts, they might also work on RISC OS systems with the help of Alex Waugh’s port of Perl 5, although this has not been tested.

C Tools

Most of the newer software on this site is written in C. Although it should be able to be compiled using RISC OS Open’s Desktop Development Environment (Acorn’s old tools), everything has been set up to work with GCC.

Although a native version of GCC is available, it has been a long time since I used this to compile any of my code. These days, development is done in a Linux environment using the GCCSDK Cross-Compiler – as such, things like makefiles expect bash commands and ‘foreign’ filenames to be available. Source archives will often contain filenames with RISC OS filetypes denoted using the trailing ‘,xxx’ notation.

SFLib

The C Wimp Library – or SFLib – is used by a number of the applications and utilities available on this website.

The library provides a range of functions to aid the implementation of non-Toolbox, event-driven applications using OSLib – as such, it may be of use to other developers in its own right.

As supplied, SFLib is for use with GCC in the GCCSDK Cross-Compiler environment, and can be obtained from GitHub.

A version of SFLib is also available in AOF format, for use with the RISC OS Open Desktop Development Environment. It can be found elsewhere on this site.

FlexLib

FlexLib is a sliding heap management library which comes as part of the Desktop Development environment.

To make it easier to use with GCC in the GCCSDK Cross-Compiler environment, a stand-alone copy can be obtained from GitHub.

BASIC Tools

Other software on the site is written in BBC BASIC, and while this can in theory be run ‘straight from the box’, much of the source is now held in ASCII “BasText” format to allow it to be stored and managed under revision control.

Tokenize

Tokenize is a cross-platform tool for turning text files containing untokenised BBC BASIC into tokenized ARM BASIC V files. It is required to convert the ASCII “BasText” source files for some of the BASIC programs on this site into properly tokenized BASIC.

For use with the GCCSDK Cross-Compiler environment, Tokenize can be obtained from GitHub. If you wish to use it natively on RISC OS, it can be obtained ready built from elsewhere on this site.

Current versions of Tokenize are also stored in RISC OS.info’s SVN repository. The content can be viewed online via WebSVN or checked out anonymously via svn://svn.riscos.info/tokenize/trunk/. Note that the SVN revision numbers in the archive names on this page refer to a different repository, and therefore have no relationship with those in the repository on RISC OS.info.

The current trunk in the RISC OS.info repository can be built automatically for Linux using the native-tokenize package in the GCCSDK Autobuilder. This is the recommended way of getting a version suitable for use on the Linux platform.

BASIC Wimp Library

This simple BASIC Wimp Library (or “WimpLib”) is used by a number of the applications and utilities available on this website. Although they come self-contained and do not require the library in order to be run, it will be required if any use is made of the supplied source code.

As supplied, SFLib is for use with GCC in the GCCSDK Cross-Compiler environment, and can be obtained from GitHub.

There’s a version for use natively on RISC OS available elsewhere on this site.

ObjAsm, AsAsm & ExtBASICasm

Most of the assembler sources on this site are now supplied in ObjAsm format, and have been configured for use in AsAsm which comes as part of the GCCSDK.

A set of standard SWI headers are required, can be obtained from GitHub.