git clone https://github.com/romforth/toolchain
make
There are a boatload of dependencies that are required to build romforth successfully.
I've recently created a repo to help with building binutils for all of the architectures required by romforth.
This repo provides a toolchain to generate all most of the binaries
required to build/test romforth (including binutils, by leveraging
build-binutils) among others.
Source dependencies which have a makefile are listed in make_list.tsv which
has three required columns : url, owner, repo, and two optional columns
- the build
directory and the buildtarget.
The repos listed in make_list.tsv will be downloaded and built using a build
template that looks something like this:
git clone https://$url/$owner/$repo ../../$owner/$repo
make -C ../../$owner/$repo/$dir $target
where each of the variables correspond to the column values in make_list.tsv
The repos listed in make_list.tsv are used to build the following binaries:
- binutils (all architectures that are required for the build)
- retroutils (used to build bin2load)
- simh (used to build BIN/pdp11, BIN/ibm1130 and Ibm1130/utils/asm1130)
Source dependencies which need an autogen + configure step are listed in
autogen_list.tsv. It has the same format requirements as make_list.tsv
which are listed earlier (see previous section regarding make_list.tsv)
The repos listed in autogen_list.tsv will be downloaded and built using a
build template that looks something like this:
git clone https://$url/$owner/$repo ../../$owner/$repo
cd ../../$owner/$repo ; ./autogen.sh
cd ../../$owner/$repo ; ./configure
make -C ../../$owner/$repo/$dir $target
where each of the variables match the column values in autogen_list.tsv
The repos listed in autogen_list.tsv are used to build the following binaries:
- nasm
In addition to the repos which can be built by calling make the Makefile
takes care of downloading and building the following repos where the build
is a bit more involved than just running make
- sdcc (which needs
configure ; make)
The toolchain currently does not build the following dependencies which are
needed for a romforth build and assumes that they have been installed by
other means and are in your PATH already. Just to keep track of dependencies
in one place I've used a shell script (linkbin) which creates the appropriate
links in the ../bin directory. It sets up links for the following dependencies:
- perl
- zig
- qemu
- m4
- msp430-gcc
- wasmtime
I plan to whittle down the above list so that many of the uncommon ones (msp430-gcc, wasmtime) can be provided by this toolchain.
If you are on Ubuntu (or NixOS), installing these packages may be pretty trivial but I want to see if I can also help the folks who are on distros where many of these dependencies may not be already available in packaged form.