1
0
Fork 0
fgdata/Docs/source/building.tex
2002-09-08 04:13:01 +00:00

691 lines
No EOL
30 KiB
TeX

%%
%% getstart.tex -- Flight Gear documentation: Installation and Getting Started
%% Chapter file
%%
%% Written by Michael Basler % Bernhard Buckel, starting September 1998.
%%
%% Copyright (C) 2002 Michael Basler (pmb@epost.de)
%% & Bernhard Buckel (buckel@wmad95.mathematik.uni-wuerzburg.de)
%%
%% This program is free software; you can redistribute it and/or
%% modify it under the terms of the GNU General Public License as
%% published by the Free Software Foundation; either version 2 of the
%% License, or (at your option) any later version.
%%
%% This program is distributed in the hope that it will be useful, but
%% WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%% General Public License for more details.
%%
%% You should have received a copy of the GNU General Public License
%% along with this program; if not, write to the Free Software
%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
%%
%% $Id: building.tex,v 0.6 2002/09/09 michael
%% (Log is kept at end of this file)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Building the plane: Compiling\index{compiling} the program\label{building}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\markboth{\thechapter.\hspace*{1mm} BUILDING THE
PLANE}{\thesection\hspace*{1mm} COMPILING UNDER LINUX}
This central chapter describes how to build \FlightGear{} on several systems. In case you
are on a Win32 (i.\,e. Windows95/98/ME/NT/2000/XP) platform or any of the other platforms
which binary executables are available for, you may not want to go though that
potentially troublesome process but skip that chapter instead and straightly go to the
next one. (Not everyone wants to build his or her plane himself or herself, right?)
However, there may be good reason for at least trying to build the simulator:
\begin{itemize}
\item In case you are on a \Index{UNIX}/\Index{Linux} platform there may be no
pre-compiled binaries\index{binaries, pre-compiled} available for your system. In
practice it is common to install programs like this one on \Index{UNIX} systems by
recompiling them.
\item There are several options you can set during compile time only.
\item You may be proud you did.
\end{itemize}
On the other hand, compiling \FlightGear{} is not a task for novice users. Thus, if
you're a beginner (we all were once) on a platform which \Index{binaries} are available
for, we recommend postponing this task and just starting with the binary
distribution\index{distribution!binary} to get you flying.
As you will notice, this Chapter is far from being complete. Basically, we describe
compiling for two operating systems only, \Index{Windows} and \Index{Linux}, and for only
one compiler, the GNU C compiler. \FlightGear{} has been shown to be built under
different compilers (including Microsoft Visual C) as well as different systems
(Macintosh) as well. The reason for these limitations are:
\begin{itemize}
\item Personally, we have access to a Windows machine running the Cygnus compiler only.
\item According to the mailing lists, these seem to be the systems with the largest user base.
\item These are the simplest systems to compile \FlightGear{} on. Other compilers may need special
add-ons (workplace etc.) or even modification of the code.
\item The GNU compiler is free in the same sense of the GPL as \FlightGear{} is.
\end{itemize}
You might want to check Section \ref{missed}, \textit{Missed approach}, if
anything fails during compilation. In case this does not help we recommend sending a note to one of the mailing lists (for hints on subscription see Chapter \ref{landing}).
There are several \Index{Linux distributions} on the market, and most of them should work. Some come even bundled with (often outdated) versions of \FlightGear{}$\!$.
However, if you are going to download or buy a distribution, \Index{Debian} (Woody) is
suggested by most people. \Index{SuSE} works well, too.
Contrary to Linux/Unix systems, Windows usually comes without any development tools. This
way, you first have to install a development environment. On Windows, in a sense, before
building the plane you will have to build the plant for building planes. This will be the
topic of the following section, which can be omitted by Linux users.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Preparing the \Index{development environment} under Windows\label{preparewin}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
There is a powerful development environment available for Windows and this even for free:
The Cygnus development tools,\index{Cygnus!development tools} resp. \Cygwin. Their home
is at
\medskip
\web{http://sources.redhat.com/cygwin/},
\medskip
\noindent
and it is always a good idea to check back what is going on there now and then.
Nowadays, installing \Cygwin{}\index{Cygwin!setup} is nearly automatic. First, make sure
the drive you want \Cygwin{}, \PLIB{}, \SimGear{} and \FlightGear{} to live on, has
nearly 1 GB of free \Index{disk space}. Create a temporary directory and download the
installer from the site named above to that directory. (While the installer does an
automatic installation of the Cygnus environment, it is a good idea to download a new
installer from time to time.)
Invoke the installer now. It gives you three options. To avoid having to download stuff
twice in case of a re-installation or installation on a second machine, we highly
recommended to take a two-step procedure. First, select the option \texttt{Download from
Internet}. Insert the path of your temporary directory, your Internet connection settings
and then choose a mirror form the list. Near servers might be preferred, but may be
sometimes a bit behind with mirroring. We found
\medskip
\web{ftp://mirrors.rcn.net}
\medskip
\noindent
a very recent and fast choice. In the next windows the default settings are usually a
good start. Now choose \texttt{Next}, sit back and wait.
If you are done, invoke the installer another time, now with the option
\texttt{Install from local directory}. After confirming the temporary directory you can
select a root directory (acting as the root directory of your pseudo UNIX file system).
Cygnus does not recommend taking the actual root directory of a drive, thus choose
\texttt{c:/Cygwin} (while other drives than \texttt{c:} work as well). Now, all \Cygwin{} stuff and all \FlightGear{} stuff lives under this directory. In addition, select
\texttt{Default text file type: Unix}
\noindent
In addition, you have the choice to install the compiler for all users or just for you.
The final window before installation gives you a selection of packages to install. It is hard, to provide a minimum selection of packages required for \FlightGear{} and the accompanying libraries to install. We have observed the following (non minimum) combination to work:\index{Cygwin!packages to install}
\begin{itemize}
\item{\texttt{Admin}} skip
\item{\texttt{Archive}} install
\item{\texttt{Base}} install
\item{\texttt{Database}} skip
\item{\texttt{Devel}} install
\item{\texttt{Doc}} install
\item{\texttt{Editors}} skip
\item{\texttt{Graphics}} install
\item{\texttt{Interpreters}} install
\item{\texttt{Libs}} install
\item{\texttt{Mail}} skip
\item{\texttt{Net}} skip
\item{\texttt{Shells}} install
\item{\texttt{Text}} install
\item{\texttt{Utils}} install
\item{\texttt{Web}} skip
\item{\texttt{XFree86}} do not install!
\end{itemize}
\textbf{Note} XFree86\index{Cygwin!XFree86} must be not installed for building \FlightGear{} and the accompanying libraries. If it is installed you have to deinstall it first. Otherwise \FlightGear{}'s configuration scripts will detect the XFree86 OpenGL libraries and link to them, while the code is not prepared to do so.
As a final step you should include the \Index{binary directory} (for instance:\\
\texttt{c:/Cygwin/bin}) into your path by adding \verb/path=c:\Cygwin\bin/ in
your \texttt{autoexec.bat} under Windows 95/98/ME. Under WindowsNT/2000/XP, use the \texttt{Extended} tab under the \texttt{System properties} page in Windows \texttt{control panel}. There you'll find a button \texttt{Environment variables}, where you can add the named directory.
Now you are done. Fortunately, all this is required only once. At this point you have
a nearly UNIX-like (command line) development environment. Because of this, the following
steps are nearly identical under Windows and Linux/Unix.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Preparing the \Index{development environment} under Windows\label{preparelin}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Linux, like any UNIX, usually comes with a compiler pre-installed. On the other hand, you still have to make sure several required libraries being present.
First, make sure you have all necessary OpenGL libraries. Fortunately, most of the recent Linux distributions (i.e. SuSE-7.3) put these already into the right place. (There have been reports, though, that on Slackware you may have to copy the libraries to \texttt{/usr/local/lib} and the headers to \texttt{/usr/local/include} by hand after building \texttt{glut-3.7}). Be sure to install the proper packages: Besides the basic X11 stuff you want to have - SuSE as an
example - the following packages: mesa, mesa-devel, mesasoft, xf86\_glx,
xf86glu, xf86glu-devel, mesaglut, mesaglut-devel and plib.
Also you are expected to have a bunch of tools installed that are usually
required to compile the Linux kernel. So you may use the Linux kernel source
package top determine the required dependencies. The following packages
might prove to be useful when fiddling with the \FlightGear{} sources:
automake, autoconf, libtool, bison, flex and some more, that are not
required to build a Linux kernel.
{\bfseries Please compare the release of the Plib library with the one that ships with
your Linux distribution.} It might be the case that \FlightGear{} requires a
newer one that is not yet provided by your vendor.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{One-time preparations for Linux and Windows users\label{preparelinwin}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
There are a couple of 3rd party libraries which your Linux or Windows system may or may have not installed, i.e. the \textbf{\textit{ZLIB}} library and the \textbf{\textit{Metakit}} library. You can either check your list of installed packages or just try building \SimGear{}: It should exit and spit an error message (observe this!) if one of these libraries is missing.
If you make this observation, install the missing libraries, which only is required once (unless you don't re-install you development environment).
Both libraries come bundled with \SimGear{}, which links to them, bus does not automatically install them. For installing either of them, get the most recent file \texttt{SimGear-X.X.X.tar.gz}\index{SimGear} from
\medskip
\web{http://www.simgear.org/downloads.html}
\medskip
\noindent
Download it to \texttt{/usr/local/source}. Change to that directory and unpack \SimGear{}
using
\texttt{tar xvfz SimGear-X.X.X.tar.gz}.
You will observe a directory \texttt{src-libs} which contains the two names libraries.
\subsection{Installation of \textbf{\textit{ZLIB}\index{ZLIB!installation}\label{zlibinstall}}}
\noindent
\texttt{cd} into \texttt{SimGear-X.X.X/scr-libs} and unpack \textbf{\textit{ZLIB}} using
\medskip
\noindent
\texttt{tar xvfz zlib-X.X.X.tar.gz}.
\medskip
\noindent
Next, change to the newly created directory \texttt{zlib-X.X.X} and type
\medskip
\noindent
\texttt{./configure}\\
\texttt{make}\\
\texttt{make install}
\medskip
\noindent
Under Linux, you have to become root for being able to \texttt{make install}, for instance via the \texttt{su} command.
\subsection{Installation of \textbf{\textit{Metakit}\index{Metakit!installation}\label{metakeitinstall}}}
\noindent
\texttt{cd} into \texttt{SimGear-X.X.X/scr-libs} and unpack \textbf{\textit{Metakit}} using
\medskip
\noindent
\texttt{tar xvfz metakit-X.X.X.tar.gz}.
\medskip
\noindent
Next, change to directory \texttt{zlib-X.X.X/builds} (!) and type (where the configure option \texttt{-$ $-with-tcl=no} is at least required on a Cygwin system):
\medskip
\noindent
\texttt{./configure -$ $-with-tcl=no}\\
\texttt{make}\\
\texttt{make install}
\medskip
\noindent
Under Linux, you have to become root for being able to \texttt{make install}, for instance via the \texttt{su} command.
You may want to consult the Readme files under \texttt{SimGear-X.X.X/scr-libs} in case you run into trouble.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Compiling \FlightGear{} under Linux/Windows\label{compilinglinwin} \index{compiling!Linux}\index{compiling!Windows}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
The following steps are identical under Linux/Unix and under Windows with minor
modifications. Under Windows, just open the \Cygwin{} icon from the Start menu or from
the desktop to get a command line.
To begin with, the \FlightGear{} build process is based on four packages which you need to built and installed in this order:
\begin{itemize}
\item PLIB
\item SimGear
\item FlightGear, program
\item FlightGear, base (data - no compilation required)
\end{itemize}
\begin{enumerate}
\item First, choose an \Index{install directory} for FlightGear. This will not be the one your binaries will live in but the one for your source code and compilation files. We suggest
\texttt{cd:/usr/local/}
\texttt{mkdir source}
\item Now, you have to install a support library \PLIB\index{PLIB} which is absolutely essential for the building process. \PLIB{} contains most of the basic graphics
rendering, audio, and joystick routines. Download the latest stable version of \PLIB\index{PLIB} from
\medskip
\web{http://plib.sourceforge.net/}
\medskip
\noindent
to \texttt{/usr/local/source}. Change to that directory and unpack \PLIB{} using
\texttt{tar xvfz plib-X.X.X.tar.gz}.
\texttt{cd} into \texttt{plib-X.X.X} and run
\texttt{./configure}\\
\texttt{make}\\
\texttt{make install}.
Under Linux, you have to become root for being able to \texttt{make install}, for
instance via the \texttt{su} command.
Confirm you now have \PLIB's header files\index{PLIB!header files} (as \texttt{ssg.h} etc.) under\\ \texttt{/usr/include/plib} (and nowhere else).
\item Next, you have to install another library \SimGear{}\index{SimGear} containing the basic simulation routines. Get the most recent file \texttt{SimGear-X.X.X.tar.gz}\index{SimGear} from
\medskip
\web{http://www.simgear.org/downloads.html}
\medskip
\noindent
Download it to \texttt{/usr/local/source}. Change to that directory and unpack \SimGear{}
using
\texttt{tar xvfz SimGear-X.X.X.tar.gz}.
\noindent
\texttt{cd} into \texttt{SimGear-X.X.X} and run
\texttt{./configure}\\
\texttt{make}\\
\texttt{make install}
\noindent
Again, under Linux, you have to become root for being able to \texttt{make
install}, for instance via the \texttt{su} command.
\item Now, you're prepared to build \FlightGear{} itself, finally.
Get\\ \texttt{FlightGear-X.X.X.tar.gz} from
\medskip
\web{http://www.flightgear.org/Downloads/}
\medskip
\noindent
and download it to \texttt{/usr/local/source}. Unpack \FlightGear{} using
\medskip
\texttt{tar xvfz FlightGear-X.X.X.tar.gz}.
\medskip
\texttt{cd} into \texttt{FlightGear-X.X.X} and run
\texttt{./configure}
\medskip
\Index{configure} knows about numerous options, \index{options, configure} with the more
relevant ones to be specified via switches as
\begin{itemize}
\item{\texttt{-$ $-with-network-olk}}: Include Oliver Delise's multi-pilot \Index{networking support},
\item{\texttt{-$ $-with-new-environment}}: Include new experimental environment subsystem,
\item{\texttt{-$ $-with-weathercm}}: Use WeatherCM instead of FGEnvironment,\index{weather}
\item{\texttt{-$ $-with-plib=}PREFIX}: Specify the prefix path to \PLIB{},
\item{\texttt{-$ $-with-metakit=}PREFIX}: Specify the prefix path to \textbf{\textit{Metakit}},
\item{\texttt{-$ $-with-simgear=}PREFIX}: Specify the prefix path to \SimGear{},
\item{\texttt{-$ $-prefix=/XXX}}: Install \FlightGear{} in the directory \texttt{XXX}.
\item{\texttt{-$ $-disable-jsbsim}}: Disable \JSBSim{}m FDM (in case of trouble compiling it).
\item{\texttt{-$ $-disable-yasim}}: Disable \YASim{} FDM (in case of trouble compiling it).
\item{\texttt{-$ $-disable-larcsim}}: Disable \textbf{\textit{LaRCsim}} FDM (in case of trouble compiling it).
\item{\texttt{-$ $-disable-uiuc}}: Disable UIUC FDM (in case of trouble compiling it).
\end{itemize}
A good choice would be \texttt{-$ $-prefix=/usr/local/FlightGear}. In this case
\FlightGear{}'s binaries\index{binaries!directory} will live under
\texttt{/usr/local/FlightGear/bin}. (If you don't specify a \texttt{-$ $-prefix} the binaries will go into \texttt{/usr/local/bin} while the base package files are expected under \texttt{/usr/local/lib/FlightGear}.)
Assuming \texttt{configure} finished successfully, run
\medskip
\texttt{make}\\
\texttt{make install}.
\noindent
Again, under Linux, you have to become root for being able to \texttt{make
install}, for instance via the \texttt{su} command.
\noindent
Note: You can save a significant amount of space by stripping all the
debugging symbols off the executable. To do this, make a
\medskip
\texttt{cd /usr/local/FlightGear/bin}
\noindent
to the directory in the \texttt{install tree} where your binaries live and run
\medskip
\texttt{strip *}.
\end{enumerate}
This completes building the executable and should result in a file \texttt{fgfs} (Unix) or
\texttt{fgfs.exe} (Windows) under \texttt{/usr/local/FlightGear/bin}
\textbf{Note:} If for whatever reason you want to re-build the simulator, use the command
\texttt{make distclean} either in the \texttt{SimGear-X.X.X} or in the
\texttt{FlightGear-X.X.X} directory to remove all the build. If you want to re-run
\texttt{configure} (for instance because of having installed another version of \PLIB{}
etc.), remove the files \texttt{config.cache} from these same directories before.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Compiling \FlightGear{} under Mac OS X \index{compiling!Macintosh}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
For compiling under Mac OS X you will need
\begin{itemize}
\item Mac X OS 10.1+ with developer tools installed.
\item 500MB disk (minimum) free disk space.
\item Fearlessness of command line compiling.
\end{itemize}
This will need a bit more bravery than building under Windows or Linux. First, there are less people who tested it under sometimes strange configurations. Second, the process as described here itself needs a touch more experience by using CVS repositories.
First, download the development files. They contain files that help simplify
the build process, and software for automake, autoconf, and plib:
\medskip
\href{http://expert.cc.purdue.edu/~walisser/fg/fgdev.tar.gz}{http://expert.cc.purdue.edu/$\tilde{~~}$walisser/fg/fgdev.tar.gz}
\medskip
\noindent
or
\medskip
\web{http://homepage.mac.com/walisser}
\medskip
\noindent
Once you have this extracted, make sure you are using TCSH as your shell,
since the setup script requires it.
\noindent
\textbf{Important for Jaguar users:}
If you run Mac OS X 10.2 or later, gcc 3.1 is the default compiler. However, only version 2.95 works with \FlightGear{} as of this writing. To change the default compiler, run this command (as root). You'll only have to do this once and it will have a global effect on the system.
\medskip
\texttt{sudo gcc\underline{~}select 2}
\begin{enumerate}
\item Setup the build environment:\\
\texttt{cd fgdev}\\
\texttt{source bin/prepare.csh}
\item Install the latest versions of the automake and autoconf build tools:\\
\texttt{cd {\$}BUILDDIR/src/automake-X.X.X}\\
\texttt{./configure -$ $-prefix={\$}BUILDDIR}\\
\texttt{make install}\\
\texttt{rehash}
\texttt{cd {\$}BUILDDIR/src/autoconf-X.XX}\\
\texttt{./configure -$ $-prefix={\$}BUILDDIR}\\
\texttt{make install}\\
\texttt{rehash}
\item Download PLIB\\
\texttt{cd {\$}BUILDDIR/src} \\
\texttt{setenv CVSROOT :pserver:anonymous@cvs.plib.sf.net:}\\
\texttt{/cvsroot/plib} (one line!)\\
\texttt{cvs login}\\
Press $<$enter$>$ for password\\
\texttt{cvs -z3 checkout plib}
\item Build PLIB\\
\texttt{cd {\$}BUILDDIR/src/plib}\\
\texttt{./autogen.sh}\\
\texttt{./configure -$ $-prefix={\$}BUILDDIR}\\
\texttt{make install}
\item Get the \SimGear{} sources\\
\texttt{cd {\$}BUILDDIR/src}\\
\texttt{setenv CVSROOT :pserver:cvs@cvs.simgear.org:}\\
\texttt{/var/cvs/SimGear-0.0} (one line)\\
\texttt{cvs login}\\
Enter $<$guest$>$ for password\\
\texttt{cvs -z3 checkout SimGear}\\
\item Build Metakit\\
\texttt{cd {\$}BUILDDIR/src/SimGear/src-libs}\\
\texttt{tar -zxvf metakit-X.X.X-32.tar.gz}\\
\texttt{cd metakit-X.X.X/builds}\\
\texttt{../unix/configure -$ $-prefix=\&BUILDDIR}\\
\texttt{-$ $-enable-static -$ $-disable-dynamic} (one line)\\
\texttt{make install}\\
\item Build \SimGear{}\\
\texttt{cd {\$}BUILDDIR/src/SimGear}\\
\texttt{./autogen.sh}\\
\texttt{./configure --prefix={\$}BUILDDIR}\\
\texttt{make install}\\
\item Get the \FlightGear{} sources\\
\texttt{cd {\$}BUILDDIR/src}\\
\texttt{setenv CVSROOT :pserver:cvs@cvs.flightgear.org:}\\
\texttt{/var/cvs/FlightGear-0.X} (one line!)\\
\texttt{cvs login}\\
Enter $<$guest$>$ for password\\
\texttt{cvs -z3 checkout FlightGear}
\item Build \FlightGear{}\\
\texttt{cd {\$}BUILDDIR/src/FlightGear}\\
\texttt{patch -p0 < ../jsb.diff}\\
\texttt{./autogen.sh}\\
\texttt{./configure --prefix={\$}BUILDDIR }\\
\texttt{--with-threads --without-x} (one line)\\
\texttt{make install}
\item Get the base data files (if you don't have them already)\\
\texttt{cd {\$}BUILDDIR}\\
\texttt{setenv CVSROOT :pserver:cvsguest@rockfish.net:}\\
\texttt{/home/cvsroot} (one line)\\
\texttt{cvs login}\\
Password is "cvsguest"\\
\texttt{cvs -z3 checkout fgfsbase}
\item Move data files (if you have them already)\\
just make a symlink or copy data files to "fgfsbase" in {\$}BUILDDIR\\
alternatively adjust \texttt{-$ $-fg-root=xxx} parameter appropriately
\item Run FlightGear\\
\texttt{cd {\$}BUILDDIR}\\
\texttt{src/FlightGear/src/Main/fgfs}
\end{enumerate}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Compiling on other systems\index{compiling!other systems}\index{compiling!IRIX}\index{compiling!Solaris}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Compiling on other \Index{UNIX} systems - at least on \Index{IRIX} and on
\Index{Solaris}, is pretty similar to the procedure on Linux - given the presence of a working GNU C compiler. Especially IRIX and also recent releases of Solaris come with the
basic OpenGL libraries.\index{OpenGL!libraries} Unfortunately the ''glut'' libraries are
mostly missing and have to be installed separately (see the introductory remark to this chapter). As compilation
of the ''glut'' sources is not a trivial task to everyone, you might want to use a
pre-built binary. Everything you need is a static library ''libglut.a'' and an include
file ''glut.h''. An easy way to make them usable is to place them into \texttt{/usr/lib/}
and \texttt{/usr/include/GL/}. In case you insist on building the library yourself, you
might want to have a look at \Index{FreeGLUT}
\medskip
\web{http://freeglut.sourceforge.net/}
\medskip
\noindent
which should compile with minor tweaks. Necessary patches might be found in
\medskip
\href{ftp://ftp.uni-duisburg.de/X11/OpenGL/freeglut_portable.patch}{ftp://ftp.uni-duisburg.de/X11/OpenGL/freeglut\_portable.patch}
\medskip
\noindent
Please note that you do \textbf{not} want to create 64 bit binaries in IRIX with
GCC (even if your CPU is a R10/12/14k) because GCC produces a broken ''fgfs'' binary (in
case the compiler doesn't stop with ''internal compiler error''). Things might look
better if Eric Hofman\index{Hofman, Eric} manages to tweak the \FlightGear{} sources for
proper compiling with MIPSPro compiler (it's already mostly done).
There should be a workplace for Microsoft \Index{Visual C++} (MSVC6) included in the official
\FlightGear{} distribution. \Index{Macintosh} users find the required \Index{CodeWarrior}
files as a \texttt{.bin} archive at
\medskip
\href{http://icdweb.cc.purdue.edu/~walisser/fg/}{http://icdweb.cc.purdue.edu/$\tilde{~~}$walisser/fg/}.
Numerous (although outdated, at times) hints on compiling on different systems are included in the source code under \texttt{docs-mini}.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Installing the base package\index{base package!installation}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
If you succeeded in performing the steps named above, you will have a directory holding the
executables for \FlightGear{}$\!$. This is not yet sufficient for performing
\FlightGear{}$\!$, though. Besides those, you will need a collection of support data
files (scenery, aircraft, sound) collected in the so-called base package. In case you
compiled the latest official release, the accompanying base package is available from
\medskip
\web{ftp://www.flightgear.org/pub/flightgear/Shared/fgfs-base-X.X.X.tar.gz}.
This package\index{base package!installation} is usually quite large (around 25 MB), but
must be installed for \FlightGear{} to run. There is no compilation required for it. Just download it to \texttt{/usr/local} and install it with
\medskip
\texttt{tar xvfz fgfs-base-X.X.X.tar.gz}.
\noindent
Now you should find all the \FlightGear{} files under \texttt{/usr/local/Flightgear} in the
following directory structure:\index{directory structure}\index{FlightGear!directory
structure}:
\medskip
\texttt{/usr/local/Flightgear}
\texttt{/usr/local/Flightgear/Aircraft}
\texttt{/usr/local/Flightgear/Aircraft-uiuc}
\ldots
\texttt{/usr/local/Flightgear/bin}
\ldots
\texttt{/usr/local/Flightgear/Weather}.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{For test pilots only: Building the CVS snapshots}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
It you are into adventures or feel you're an advanced user, you can try one of the recent \Index{bleeding edge snapshots}\index{snapshots} at
\medskip
\web{http://www.flightgear.org/Downloads/}.
\medskip
\noindent
In this case you have to get the most recent Snapshot from \SimGear{} at
\medskip
\web{http://www.simgear.org/downloads.html}
\medskip
\noindent
as well. But be prepared: These are for development and may (and often do)
contain bugs.
If you are using these CVS snapshots, the base package named above will usually not be
in sync with the recent code and you have to download the most recent developer's version
from
\medskip
\web{http://rockfish.net/fg/}.
\medskip
\noindent
We suggest downloading this package \texttt{fgfs$\_$base-snap.X.X.X.tar.gz} to a temporary
directory. Now, decompress it using
\medskip
\texttt{tar xvfz fgfs$\_$base-snap.X.X.X.tar.gz}.
\medskip
Finally, double-check you got the directory structure named above.
%% Revision 0.00 1998/09/08 michael
%% Initial revision for version 0.53.
%% employing redame.win32/readame.linux
%% by c. olson , b. buckel
%% Revision 0.01 1998/09/20 michael
%% several extensions and corrections
%% revision 0.10 1998/10/01 michael
%% final proofreading for release
%% revision 0.11 1998/11/01 michael
%% deleted some obsolete stuff from the Linux Section
%% revision 0.12 1999/03/07 michael
%% changed Windows to Cygnus b20
%% revision 0.20 1999/06/04 michael
%% complete rewrite of the windows build Section exploiting Curt's README.win32
%% revision 0.21 1999/06/30 bernhard
%% complete rewrite of Linux build Section
%% revision 0.22 2000/01/18 michael
%% added hint to "missed approach" and some more hints from J. Berndt on Cygnus stuff
%% Corrected path to mesa libs
%% revision 0.3 2000/04/20 michael
%% Complete rewrite Linux and Windows reflecting split /SimGear/FlightGear, numerous changes and updates,
%% made Linux/Windows more similar (for later merging???)
%% Removed building TerraGear and its libraries (should go into Scenery Guide)
%% revision 0.4 2001/05/12 michael
%% Chapter Completely rewritten, Merged former Linux/Windows sections, added separate Cygwin section
%% Separate description and reference to base package
%% Removed reference to other compilers
%% new section on nightly snapshots (more people are using them)
%% revision 0.41 2001/07/01 martin
%% enlarged section on Irix, Solaris
%% revision 0.5 2002/01/01 michael/martin
%% General update on contents and links without re-structuring
%% Paragraphs by Martin on rewuired Linux Libs
%% Added section on compiling for Mac OS X added based on Darrel's Readme
%% List of required packages
%% Modified section on CVS (former nightly) snapshots
%% revision 0.6 2002/09/09 michael
%% update of D. Wallissers Mac recipe
%% added selection of Cygwin packeges to install/not install
%% Installation of ZLIB/Metakit
%% added/removed configure options