This is a list of things you'll need to compile and use GTC. The list should be accurate as of this writing (Tue Jan 4 16:48:58 EST 2000). Items marked (OPTIONAL) are, well, optional.
From the GTC directory, type:
./configure
make
su
make install
The first step detects your system configuration and libraries, the second builds the library, tests and demos. The third makes you root (hope you know the password). The fourth installs libraries, tests and demos in /usr/local or something. See also the INSTALL file for generic configuration instructions. The third and fourth steps are optional if you don't want to install GTC somewhere sane.
You can pass parameters to the configure script (on the command line). For generic installation instructions, see the file INSTALL. You can also get a list of configuration options by running
./configure --help
The top level makefile also has the special target "doc" which can be used to build the documentation using doxygen. That is, typing
make doc
will generate the documentation. However, when I distribute the tarballs, this has already been done for you. The only reason you'd want to do that is if you are using the CVS version (which doesn't come with the documentation) or if you're modifying the library and want to refresh the documentation.
First I assume you know how to use CVS and that you somehow magically got my CVS sources. Then, you need to use the GNU build tools. In short, you need to do:
aclocal
autoconf
automake
./configure
make
The tests and demos directories contain a number of executables you can try to run.
The best way to make certain that the demos run is to do a make install (as above) to make certain that all data files can be found.
You can then try the following. (You'll need two or more shells). First, start a server.
python /path/to/gtc/demos/cubedemo.py
That starts the space shooter server listening on port 4000. From another shell prompt on the same computer, type:
xcli
You should see a big mess of triangles. You can rotate them with the cursor keys. Space should stop them from spinning. ESC should cause the server to exit; just close the client's window to exit the client.
Once you've installed, you should have, at /usr/local/bin/gtc-config, a short script to help you use GTC. For a list of all supported options, you can try gtc-config --help. Mainly, gtc-config --link will give you link-time options to use if you want to link against GTC, while gtc-config --compile will give you compile time options to compile against GTC.
GTC versions 0.12 and earlier had a problem with autorepeat in X11 and you could be left with autorepeat turned off. If this happens to you, type
xset r
at the prompt.
GTC 0.13 and later do not have this bug.
If you have a Python enabled GTC, it is very likely that all executables linked against GTC will be an enormous 1MB or more. That is very unfortunate but that's Guido's fault. It turns out that Python does not support being dynamically linked under *nix. Guido's a really cool guy so we should all thank him for the wonderful work he does. It would be great if he made the dynamically linked library version of Python standard, at least on Linux (since he does explain a simple process to do that in his FAQ.)
If you want to solve the problem locally, please see question 3.30 of Python's FAQ. http://www.python.org/doc/FAQ.html#3.30
You will need to re-build gtc to take advantage of a dynamically linked python interpreter. If you see a message like the one below while you build GTC, it probably means that you've linked against a static libpython.a, though it could be some other library that you've statically linked against.
This is roughly the message you'll get if GTC is linked against a static version of the Python library:
Warning: This library needs some functionality provided by -lpython1.6. I have the capability to make that library automatically link in when you link to this library. But I can only do this if you have a shared version of the library, which you do not appear to have. The inter-library dependencies that have been dropped here will be automatically added whenever a program is linked with this library or is declared to -dlopen it.
Variables Environment Variables
GTC_CONFIG can be the pathname to a gtcrc file. GTC_ABORT_ON_ERROR, if set, will cause any GTC internal errors (those caused by a GTCERROR message) to abort() instead of exit().
GTC is distributed under the terms of the GPL. Please see the file COPYING, included with GTC or visit http://www.gnu.org/ to get a copy from them. If you have special licensing needs, contact me (see below). Unless otherwise specified, all files should be considered to be covered by the GNU General Public License (GPL).
The GPL does not speak on the subject of "public performance of copyrighted works", but I feel the need to be more specific. A person could use GTC to build an application and run it on a certain server. Then, this person could allow third parties to connect to said server via the "xcli" client program. Under normal uses of GTC, the only derivatives ever made would be of this type, and the only binaries ever distributed would be the standard "xcli" client. If no restrictions on public performance of GTC is imposed, since no special binary is ever distributed, the GPL is useless and does not serve its purpose of encouraging the sharing of code.
For this reason, I feel obligate to add the following language to the GPL. As far as I'm concerned, this is a "clarification" of the GPL as it applies to GTC. I sincerely hope that Mr. Stallman one day decides to create a license with a similar purpose.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Limited right to public performance of GTC is granted under the following conditions:
The entirety of the "derived work" -- the "application built with GTC", all data files, images, music, sound, modified clients, databases and any additional information required by the "derived work" are "distributed freely", as described below. As an EXAMPLE, if the "derived work" requires a cryptographic key to work properly, this cryptographic key must be "Distributed Freely" as well.
"Distributed Freely": all "derived work" must be made available to the general public at zero cost and no additional restrictions, under the same license as GTC. The general public must be able to retrieve the "derived work" from a publicly available internet location, under the same license as GTC. You must continue distributing the "derived work" for at least one year after the last public performance of the "derived work".
The "derived work" must be distributed in "source code", as is understood under the GPL: "...the preferred form of the work for making modifications to it."
Any tools required to convert the "derived work's" source code into the final application must be freely available to the general public.
If you can not comply with all of the above clauses, or if you are unwilling to comply with all of the above clauses, then you have no right of public performance of GTC or any "derived work" of GTC.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sebastien Loisel -- http://gtc.seul.org/
1.2.8.1 written by Dimitri van Heesch,
© 1997-2001