Compiling TADS for Yellow Dog Linux / LinuxPPC (Sept 2003)

TADS, the Text Adventure Development System, is a wonderful software package for playing and writing text adventure (i.e. interactive fiction) games. It is available pre-compiled for many different platforms, including Windows, Mac, and Intel Linux. However, it is not yet available pre-compiled for Yellow Dog Linux or LinuxPPC.

Hence, to run TADS on my Yellow Dog Linux (YDL) machine, I had to download and compile the TADS Version 2.5.5 source code.

Unfortunately, due to some idiosyncracies in YDL, a fix is required. Otherwise you get the error "vocab.c: In function `vocerr_va': vocab.c:603: invalid initializer. make: *** [vocab.o] Error 1".

Thanks to Alan J Rosenthal (and also assistance from Mike Armstrong and Stephen Granade), the following fix works:

Change line 603 of vocab.c, currently

	va_list argptr_orig = argptr;
to either (1)
	va_list argptr_orig;
	argptr_orig[0] = argptr[0];
or (2)
	struct __va_list_tag *argptr_orig = argptr;
Either (1) or (2) seems to work fine.

After doing the above, go to the "unix" subdirectory of your TADS source code directory, and edit "makefile" as follows: uncomment all the lines under the "Linux 386 with GCC 2.7.2" section, and also change the line

	OPTIMIZE=-O2 -funroll-loops -fomit-frame-pointer -m486
to simply
Then run "make" from the unix subdirectory, and sit back and wait!

The compiling still gives a number of warnings about pointers etc. But it works! In the end you get the executables "tadsr" (for running TADS games) and "tadsc" (for compiling them).

Then you can play all TADS games, from the amazing Lost New York by Neil deMause, right down to my own much more modest game Galactic Peace. For many more games, see e.g. the official TADS page, or the Interactive Fiction Archive.

As an alternative to the above, I provide here a bare-bones tar file of TADS executables precompiled for YDL (which should also work with LinuxPPC). But it comes with no guarantees!

I have now been in touch with Mike Roberts, the maintainer of the TADS source, and he has indicated that future releases of the TADS source will be ANSI-compliant re va_list, so this problem should disappear then.

This page provided by Jeffrey Rosenthal; comments welcome. See also my IF page.