The Goanna tools and examples use the GOBO geant and gexace tools to perform Ace file generation and to control the compilation process. You will need to have a recent CVS version of GOBO on your system to build Goanna.

All scripts rely on the enviornment variable GOANNA. It should be set to the root directory of the Goanna installation.

To initialise the library, build all examples and all tools, you can run geant on the build.eant file located in the root directory of the Goanna installation. To install the library on Unix, run:

cd $GOANNA/library
geant install

To install the library on Windows, run:

cd %GOANNA%/library
geant install

To compile individual examples or tools you must first prepare the library by running geant in the library directory. This will generate compiler specific files for all '.ge' files by using the gepp GOBO tool. Once the library has been initialised you can execute geant in a particular example or tool directory.

The build rules provided by the geant files include:

For example, to build the standalone web server example using ISE Eiffel on Unix, run:

cd $GOANNA/examples/servlet/standalone
set GOBO_EIFFEL=ise
geant compile

This will compile the example using ISE Eiffel in finalization mode. An executable will be generated in the current directory. If you need to compile in debug mode, then use the build rule 'compile_debug' instead. To use the SmallEiffel compiler set the GOBO_EIFFEL variable to 'se'. You can also force the use of a particular compiler by using the build rules 'compile_ise', 'compile_se', 'compile_debug_ise' and 'compile_debug_se'.

Build rules are also provided to compile with the HACT and VisualEiffel compilers, however no testing has been performed using these compilers. If you have any success with these compilers please let Glenn Maughan know.

If you run geant without any arguments it will display the build rules available in the 'build.eant' file found in the current directory.

Note, some of the library clusters and examples will not compile under SmallEiffel. They will be ported to SmallEiffel when time permits and compiler support allows. The following table shows the progress of the porting effort.

Cluster/Application ISE Eiffel SmallEiffel
library/utility Yes Yes
library/utility/codegen Yes No (ISE classes)
library/utility/log4e Yes Yes
library/webservices/connectors/cgi Yes Yes
library/webservices/connectors/fast_cgi Yes Yes
library/webservices/connectors/stand_alone Yes Yes
library/models/dom Yes Yes
library/protocols/xmlrpc Yes No (agents)
library/services Yes No (agents)
library/servlet Yes Yes
src/bdv Yes No (ISE classes)
src/xmle Yes No (ISE classes)
examples/bachelor Yes No (ISE classes)
examples/dom_printer Yes No (ISE classes)
examples/servlet/cgi Yes Yes
examples/servlet/fast_cgi Yes Yes
examples/servlet/standalone Yes Yes
examples/xmlrpc/client/addressbook Yes No (Vision, agents)
examples/xmlrpc/client/calculator Yes No (Vision, agents)
examples/xmlrpc/client/currenttime Yes No (Vision, agents)
examples/xmlrpc/client/currenttime-web Yes No (agents)
examples/xmlrpc/client/spellchecker Yes No (Vision, agents)
examples/xmlrpc/server Yes No (agents)