If you are reading this in hopes that you will find the answer to a
specific question, please send the question to curt@flightgear.org and
suggest that I include the answer here.


I. Compilers and Portability
============================

Flight Gear is known to build with egcs-1.1 and higher, as well as
gcc-2.8 and higher.  Your mileage may vary with earlier versions of
these compilers although support for gcc-2.7.x is mostly there.

For other platforms where you may have access to native compilers,
again your mileage may vary.  We would like to support as many
different compilers and platforms as possible.  Please relay any
changes you make (or problems you encounter) back to
curt@flightgear.org, so that in the future we can better support your
platform and your compiler.  I have access to a few different
platforms, but I must depend on others to make sure their favorite
platform and compiler is well supported.


II. GLUT
========

Flight Gear requires GLUT version 3.7 or later (aka GameGLUT._ GLUT
needs to be installed on your system before you can build Flight Gear.
GLUT can be found at:

    http://reality.sgi.com/opengl/glut3/glut3.html

GLUT (pronounced like the glut in gluttony) is the OpenGL Utility
Toolkit, a window system independent toolkit for writing OpenGL
programs. It implements a simple windowing application programming
interface (API) for OpenGL. GLUT makes it considerably easier to learn
about and explore OpenGL programming.  GLUT provides a portable API so
you can write a single OpenGL program that works on both Win32 PCs and
X11 workstations.


III. Joystick Support
=====================

GLUT only has win32 joystick support but even at that, it is not well
implimented.  So we use Steve Backer's joystick library when possible,
and fall back to GLUT for win32 until Steve's library adds win32
support.

To make sure joystick support is included when building under Linux:

  - make sure you have the proper joystick module installed.
  - make sure the proper devices are created in /dev.
  - /usr/include/linux/joystick.h must exist on your system.


IV. Procedure to build FGFS with Native SGI Irix Compilers from CVS Sources
===========================================================================

(Contributed by Todd Smith <msmith@sikorsky.com>)

Download the latest version of plib (1.0.3) from:

    http://www.woodsoup.org/~sbaker/plib/

Install it both in /usr/local/plib and /usr/local/include/plib.  I
think that I am using it from /usr/local/include.

Download the FlightGear-0.6 via anonymous cvs as usual, then do:

> aclocal		# normal
> automake -a -i	# added '-i' flag to avoid dependency calc
			# that only sgi cc/CC doesn't support
> autoconf		# normal

Note the change in automake's command argument.

Now set env variables to use native compilers (csh syntax).

> setenv CC cc
> setenv CXX CC
> setenv CFLAGS '-Xcpluscomm -DEBUG:suppress=1001,1012,1014,
                            1116,1172,1174,1401,1460,1551,1552'
> setenv CXXFLAGS '-DEBUG:suppress=1001,1012,1014,1116,1172,
                          1174,1401,1460,1551,1552,3303,3322'

The '-DEBUG:suppress=' stuff just suppresses anonying warnings during
compile.  The meaning of each one is shown later in this file.
You can use all or none of these here.

> setenv CPPFLAGS '-woff 1014'

This is required so that configure will really believe that plib
is installed.  ( Otherwise a compiler warning makes configure
that plib/pu.h couldn't be found. )

> ./configure
> find . -name Makefile -exec irix-hack.pl {} \;	# normal irix hack
> gmake

Runs great.

Todd
msmith@sikorsky.com

-------------------------------------------
Warnings that I get. Ignore at your lesiure.

C and C++:
warning(1001): last line of file ends without a newline
warning(1012): parsing restarts here after previous syntax error
warning(1014): extra text after expected end of preprocessing directive		(breaks configure)
warning(1116): non-void function "poly_index_init" should return a value
warning(1172): subscript out of range
warning(1174): variable "j" was declared but never referenced
warning(1401): qualified name is not allowed in member declaration
warning(1460): function "..." redeclared "inline" after being called
warning(1551): variable "Altitude" is used before its value is set
warning(1552): variable "last" was set but never used

C++ only:
warning(3303): type qualifier on return type is meaningless
warning(3322): omission of explicit type is nonstandard ("int" assumed)


V. Additional Native SGI Irix Compilers Notes
=============================================

If you are building with native SGI compilers try running configure like the
following (assuming sh syntax):

  CC=cc CXX=CC CFLAGS="-Xcpluscomm -woff 1014" ./configure

Then (and this step is *VERY* important for your success) run the following 
command:

  find . -name Makefile -exec irix-hack.pl {} \;

This touches up the Makefiles to build libfoo.a with 

  CC -ar -o libfoo.a file1.o file2.o ...

The traditional method is to run:

  ar cru libfoo.a file1.o file2.o

I wonder if this means that the native SGI "ar" is somewhat broke?

Note, you should make sure you have perl installed on your system.  The
"irix-hack.pl" script assumes that perl is located in /usr/bin/perl so
if this isn't the proper location on your system, change it in the first
line of "irix-hack.pl" before running the above command.  One way to see
if perl is on your system (and determine where) is to run:

  which perl

Perl can be installed from "eoe.sw.gifts_perl" or can be fetched and
built from the net.

Finally you should run Gnu make.  The native Irix make utility just
can't handle the makefiles generated by the automake program.  Thus 
you will need to use Gnu make.  It's called "gmake" on my system so I 
just run:

  gmake

Don't worry about the make failing in the Tools directory.  That's all
under construction stuff right now (3/9/99) and if you get that far, 
rejoice because it means the simulator was successfully built in the 
Simulator/Main subdirectory.

Special note for those Irix users using the native compilers *AND* checking
out the current source tree via CVS:

You will need to run "aclocal ; automake -a ; autoconf" as per 
README.autoconf, but you need an additional flag for automake to disable
automatic dependency building (which breaks the native Irix compilers.)
You should instead run:

    aclocal ; automake -a --include-deps; autoconf

Then, proceed on to the configure step.  

Questions?  I realize this section is a big heap of random information so
if something isn't quite working for you, please ask.
