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) |