============================
Die Installation von Freeciv
============================

Diese Datei beschreibt die Compilierung und Installation von Freeciv.
Stand: 25.09.02

0. Voraussetzungen:
===================

Freeciv hat einige (aber wenige) Ansprüche an das System, auf dem
installiert werden soll. Freecivs Konfigurationsskript (./configure)
ist "intelligent" genug um festzustellen, ob ein System die Anforderungen
erfüllt. Falls Zweifel bestehen, ob das System wirklich geeignet ist,
sollte man es einfach ausprobieren.

 - Unix (oder etwas vergleichbares)
 
   Unix, ein Unix-ähnliches System wie Linux oder FreeBSD oder ein
   Betriebssystem, daß eine Unix-artige Umgebung bereitstellt, wie z.B.
   EMX unter OS/2 oder das Cygwin-Toolkit von Cygnus für Windows
   (http://sourceware.cygnus.com/cygwin/). Des weiteren müssen sog.
   BSD-TCP/IP-Sockets vorhanden sein, sowie eine Bourne-Shell kompatible
   Shell,  wie z.B. die GNU "bash". (Die meisten Unixe sollten diese
   Anforderungen erfüllen)

 - Ein ANSI-kompatibler C Compiler
   
   Freeciv wurde (größtenteils) in sehr portablem ANSI-C geschrieben. Sowohl
   32 als auch 64-Bit-Rechner werden unterstützt. Ein sog. "K&R" sowie ein 
   reiner C++ Compiler können nicht benutzt werden.
   
   Freeciv wird hauptsächlich mit dem "gcc", dem C-Compiler des GNU-Projektes
   entwickelt. Release-Versionen können sowohl mit dem gcc als auch mit den
   meisten anderen Compilern übersetzt werden (z.B. dem Solaris C Compiler).
   Developer-Versionen sowie CVS-Abzüge hingegen können nur mit dem "gcc"
   übersetzt werden, es sei denn, configure wird mit der Option
   "--disable-cvs-deps" option aufgerufen (siehe auch den nächsten Abschnitt).

   Es ist vor gekommen, daß gcc mit der Option -O3 Freeciv falsch kompiliert
   hat. Dagegen gab es über Kompilationen mit -O2 keine negativen Berichte.

 - Ein "make"
 
   Wie auch beim Compiler wird hier hauptsächlich die GNU-Version eingesetzt,
   "gmake".
   
   Die Makefiles der offiziellen Release-Versionen von Freeciv arbeiten auch
   mit den meisten anderen "makes" zusammen. Bei Developer-Versionen und
   CVS-Abzügen gilt das gleiche wie beim Compiler: "gmake" wird
   vorausgesetzt, solange man configure nicht mit "--disable-cvs-deps"
   aufruft (siehe auch den nächsten Abschnitt).
   
   Um festzustellen, ob GNU make installiert ist, gibt man folgendes an
   der Befehlszeile ein:
   
   % make -v	[ falls es nicht funktioniert, "gmake -v" versuchen ]
   
   Die Ausgabe von make sollte dann irgendwo die Zeichenkette "GNU Make"
   enthalten.

Ein CVS-Abzug hat zusätzliche Vorraussetzungen; Release-Versionen beinhalten
die generierten Dateien bereits.

 - Die Programme aus dem Packet GNU gettext mit der Versionsnummer >= 0.10.36

   Speziell das Programm xgettext wird benötigt, um die *.gmo-Dateien für
   die Übersetzungen zu erzeugen, die im CVS-Baum nicht enthalten sind.

 - GNU autoconf in der Version >= 2.13

   Dies wird benötigt, um das Konfigurationsskipt "configure" aus 
   "configure.in" zu erzeugen.

 - GNU automake in der Version >= 1.4

   Automake wird benötigt, um die verschiedenen  "Makefile.in's aus den
   "Makefile.am"'s zu erzeugen.

1. Voraussetzungen der Clients:
===============================

Clients für Freeciv gibt es in zwei Versionen: einen für die "Athena
Widget Library" ("Xaw") und einen für Gtk+ (das Widget Set von/für 
"The Gimp"). Beide Clients haben unterschiedliche Anforderungen, auf
die weiter unten eingegangen wird. Das System sollte mindestens eine
der beiden Listen erfüllen (es sei denn, man will auf dem Rechner nur
einen Server für ein Freeciv-Spiel bereitstellen).

Außerdem existiert ein nativer Client für den Amiga.

ACHTUNG: Einige Distributionen/Systeme besitzen getrennte Pakete für
die eigentlichen Libraries und die zur Programmentwicklung nötigen
Dateien. D.h., daß man auf diesen Distributionen die entsprechenden
"development"-Pakete installieren muß (gilt z.B. für Debian GNU/Linux,
RedHat Linux und SuSE Linux).

1a. Anforderungen des Xaw-Clients:
==================================

 - X-Window
 
   Der Xaw-Client von Freeciv ist ein Programm für X-Window, also
   benötigt man irgend etwas, um X-Window Programme ablaufen zu lassen
   (Auch hier gilt: die meisten Unixe können das...)
   
   Falls Freecivs Konfigurationsskript (./configure) ein installiertes 
   X nicht finden sollte, muß man die Optionen "--x-includes=DIR" und
   "--x-libraries=DIR" von configure benutzen um die Pfade explizit
   mitzuteilen.

 - Die "Athena" Widget Library
 
   Athena (aka "Xaw") gehört normalerweise zum Lieferumfang von
   X-Window, allerdings ist es auf einigen Plattformen (z.B. HP-UX 10) 
   nur mit eingeschränkter Funktionalität zu finden.
   
   Um den "Xaw"-Client zu erzeugen, ruft man configure mit 
   "--enable-client=xaw" auf. Im nächsten Abschnitt gibt es weitere
   Informationen über das configure Skript.
   
   Viele moderne unixoide Systeme (wie z.B. Linux) kommen mit einer
   Variante der "Xaw"-Library, "Xaw3d", die einen moderneren 3D-Look
   besitzt. Um Freeciv mit "Xaw3d" zu übersetzen, ruft man configure
   mit "--with-xaw3d" auf.
   
   Es gibt noch andere Varianten von Xaw, z.B. Nextaw. Freeciv arbeitet
   nicht mit diesen zusammen, aber es sollte möglich sein, Freeciv für
   diese Bibliotheken wie für Xaw3d zu verändern. Eine andere
   Möglichkeit wäre die Verwendung von "xaw_wrappers"; Eine Anleitung dafür
   würde aber den Rahmen dieser Datei bei weitem sprengen.
   
 - Die "Xpm" Library
 
   Diese Library ist grundlegend für den Umgang mit Icons und
   Bitmaps. Sie ist weit verbreitet und standardmäßig auf den meisten
   modernen Unix-Rechnern vorhanden. Jedoch kann es sein, daß sie auf
   älteren Unixen nicht vorhanden ist.
   
   Es könnte nötig sein, configure explizit mit "--with-xpm-prefix=DIR"
   mitzuteilen, wo sich die "lib" und "include"-Verzeichnisse von Xpm
   befinden.
  
   Sollte Xpm nicht vorhanden sein, kann man Xpm von hier bekommen:
   
     ftp://koala.inria.fr/pub/xpm/xpm-3.4k.tar.gz
     ftp://ftp.x.org/contrib/libraries/xpm-3.4k.tar.gz
 
   Dieses Packet kann wie jedes andere auch installiert werden. Falls es
   nicht in ein Standardverzeichnis (wie /usr/lib oder /usr/local/lib o.ä.)
   installiert werden kann, muß beim Aufruf von configure die option
   --with-xpm-prefix benutzt werden.
 
   Hinweise zu Problemen mit der libXpm unter Solaris bzw. dem
   Installieren der libXpm als nicht-root gibts gegen Ende der Datei in
   "Reinier's libXpm Solaris Installation Notes"
  
   
1b. Anforderungen des GTK+-Clients:
===================================

 - Die "Glib" Library
 
   "Glib" stellt nocht-grafische Funktionen für Gdk und Gtk+, wie z.B. 
   hash-Tabellen, verkettete Listen usw. zur Verfügung.
   
   Freeciv benötigt die Glib mit der Version >=1.2.1
   
   Sollte Glib nicht vorhanden sein, bekommt man es hier:

     ftp://ftp.gtk.org/pub/gtk/v1.2/glib-1.2.10.tar.gz

   (Hinweis: Wenn glib schon nicht vorhanden ist, ist es auch sehr
   wahrscheinlich, daß gtk+ auch nicht vorhanden ist. gtk+ liegt an
   gleicher Stelle auf oben genanntem Server)
   
 - Die "Gtk+" Widget Library
   
   Gtk+ wurde für The Gimp entworfen und entwickelt. Seitdem hat es
   sich Popularität als ein einfach zu programmierendes, freies
   Toolkit erworben. Zu Gtk+ gehört auch Gdk, das grundlegende
   Zeichen-Funktionen, Fenster, Clipping usw. zur Verfügung stellt.
   
   Freeciv benötigt Gtk+ mit der Version >=1.2.5
   
   Sollte Gtk+ nicht vorhanden sein, bekommt man es hier:
   	
     ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-1.2.10.tar.gz
     
 - Die "Imlib" Library
 
   Imlib ist eine Library für den Umgang mit Bitmaps. Sie wird
   außerdem beim GNOME Projekt benutzt.
   
   Freeciv benötigt die "Imlib" in einer Version >=1.9.2
   
   Falls configure sagt, daß Imlib nicht vorhanden ist, bekommt man es
   hier:

     ftp://ftp.gnome.org/pub/GNOME/stable/sources/imlib/imlib-1.9.10.tar.gz

   (Laut Dokumentation benötigt Imlib für bestimmte Features (z.B. für
   die Unterstützung von PNG-Grafiken) weitere Libraries - diese sind
   für Freeciv allerdings nicht nötig).
   
Compiliert man selbst, sollte (oder muß) folgende Reihenfolge
eingehalten werden: Glib, Gtk+, Imlib

2. Generierung des Makefiles:
=============================

2a. Generierung für CVS-Versionen:
==================================

Dieser Schritt wird nur bei CVS-Versionen benötigt:

Um das Makefile zu erzeugen, einfach

 % ./autogen.sh

tippen. Dieser Befehl erzeugt "configure" und ruft startet es. Alle Parameter
von autogen.sh werden an configure weitergereicht. Welche Parameter an
configure übergeben werden können, findet sich im nächsten Abschnitt.

2b. Generierung für Release-Versionen:
======================================

Bevor Freeciv compiliert werden kann, muß ein sog. Makefile erstellt
werden. Dieses wird automatisch erzeugt und geht auf die auf dem System
vorhandenen Features ein.

Dafür wird das GNU "configure" Skript eingesetzt. configure befindet sich
im obersten Verzeichnis von Freeciv. Aufgerufen wird configure mit
 
 % ./configure

Dieses Skript versucht herauszufinden, welche der benötigten
zusätzlichen Libraries auf dem System vorhanden sind (und welche
nicht). configure sollte ein oder zwei Bildschirmseiten voll mit
Diagnosemeldungen über das System ausgeben und sich dann beenden.

Hilfe zu den verschiedenen Optionen von configure gibt es mit --help:
  
 % ./configure --help
  
Beim Compilieren von Entwicklerversionen oder CVS-Abzügen ohne GNU
make oder gcc muß configure mit der Option "--disable-cvs-deps"
aufgerufen werden, besonders wenn man cc und make unter Solaris
benutzt.
   
Dadurch wird die automatische Überprüfung der Abhängigkeiten der
Quelldateien untereinander außer Kraft gesetzt. Wenn danach eine
Headerdatei (*.h) verändert wurde, sollte vor dem nächsten Aufruf
von "make" auch noch ein "make clean" durchgeführt werden, um sicher
zu gehen, daß alle Dateien korrekt übersetzt werden.
   
Bei Stable-Release-Versionen hat die Option "--disable-cvs-deps"
keine Wirkung.
   
Standardmäßig erstellt das Makefile den Gtk+-Client, wenn auf dem
System Gtk+ vorhanden ist, andernfalls den Xaw-Client.
Um dies zu umgehen, kann man configure mit der Option
"--enable-client=xaw" aufrufen.

Um die Compileroptionen zu beeinflussen, kann man die Umgebungsvariable
CFLAGS setzen, bevor man "./configure" aufruft, z.B.:

 % CFLAGS="-O -g -pipe" ./configure  [für die Bourne shell oder die Bash]
 
oder

 % setenv CFLAGS "-O -g -pipe"
 % ./configure                       [für die C-Shell oder tcsh]

Falls man einen "core dump" verfolgen möchte, sollte man "-g" in seine
CFLAGS mit aufnehmen.

Bei der (späteren) Installation von Freeciv werden die Dateien nach
/usr/local installiert. Sollten Sie einen anderen Ort als /usr/local
vorziehen, so können sie diesen mit übergeben:
  
 % ./configure --prefix=/opt/freeciv

Sollte configure nicht durchlaufen und abbrechen, sollten folgende Schritte
durchgeführt werden:

  - Erfüllt das System die im Abschnitt 1 gestellten Anforderungen?
  
  - Beim Gtk+-Client: Sind Gtk+, Gdk, Glib und Imlib installiert?
    Kann configure diese auch finden? Die Libraries sollten in den
    Standardverzeichnissen installiert werden oder configure der
    Installationsort mit den passenden Optionen mitgeteilt werden.
    (siehe auch ./configure --help)
    
  - Beim Xaw-Client: Sind Xaw und die Xpm-Library installiert?
    Kann configure diese finden? Auch hier gilt: die Libraries
    sollten in den Standardverzeichnissen installiert oder aber
    configure der Installationsort mit den passenden Optionen
    mitgeteilt werden. (siehe auch ./configure --help)

  - Für Probleme, die mit "gettext" zusammenhängen, gibt es im
    Abschnitt über "NLS" ("Unterstützung der Landessprache", weiter unten)
    evtl. Work-Arounds.
    
  - Fehler den Entwicklern mitteilen, damit diese zum nächsten Release
    beseitigt werden können (die Fehler ;-) !!
    
    Dazu schickt man eine Mail an die Mailingliste freeciv-dev, in der
    man beschreibt, was man getan hat und wie/welcher Fehler auftrat.
    Hilfreich wäre auch, wenn die Ausgabe des configure-Skripts, sowie
    der Inhalt der Dateien "config.status", "config.cache" und
    "config.log" mitgeschickt werden. Diese Dateien werden von configure
    erstellt.
    
    Mehr zur Mailingliste freeciv-dev gibt es unter
    https://www.freeciv.org

Achtung: Seit der Freeciv Version 1.7.2 wird Imake nicht mehr
unterstützt, und seit Version 1.8.1 gehört die Datei Makefile.noimake
nicht mehr zur Freeciv-Distribution.
    
    
3. Freeciv compilieren:
=======================

Wenn bis jetzt alles geklappt hat, sollte das Compilieren allein durch
die Eingabe von "make" (oder vorzugsweise "gmake") geschehen.

Sollte trotzdem ein Problem auftreten, sollte man die Hinweise in der
Datei BUGS zu rate ziehen. Sollte das Problem mit "gettext"
zusammenhängen, lesen Sie bitte den Abschnitt über NLS ("Unterstützung
der Landessprache", weiter unten) für evtl. Work-Arounds

Nach dem Compiliervorgang erhält man die folgenden wichtigen
"Ergebnisse":
  - Die zwei Programme "client/civclient" und "server/civserver".
  - Das Verzeichnis "data/", welches die Szenarien und Grafiken
    enthält.
  - Das Verzeichnis "po/", welches die Lokalisierungsdateien enthält
  - Die beiden Skripte "civ" und "ser"
  
Es ist ziemlich einfach, Freeciv aus diesem Verzeichnis heraus zu
spielen, ohne es zu installieren. Dabei können die Skripte "civ" und
"ser" hilfreich sein, man benötigt diese jedoch nicht unbedingt.

Weitere Informationen dazu befinden sich in der Datei README bzw.
README.de

(Allerdings kann man so die Lokalisierung nicht benutzten. Um in der
jeweiligen Landessprache (also Deutsch) zu spielen, muß man Freeciv
installieren.)

4. Installation:
================

Bei der Installation von Freeciv werden die in Abschnitt "Freeciv
compilieren" erwähnten Dateien in Verzeichnisse wie /usr/local
(Standard-Installationspfad), /usr/games, /usr/games/freeciv,
/usr/local/freeciv oder ein anderes passendes Verzeichnis kopiert.

Ein Aufruf von "make install" sollte das jedoch erledigen. Den
Installationspfad kann man durch die Option "--prefix=DIR" (siehe: 
"Generierung des Makefiles") von configure an das eigene System
anpassen.

Sowohl der Client als auch der Server benötigen einige Dateien aus dem
Verzeichnis "data". Freeciv sucht danach an folgenden Orten: das aktuelle
Verzeichnis; das Unterverzeichnis "data" des aktuellen Verzeichnisses;
das Verzeichnis ".freeciv" im Heimatverzeichnis des Benutzers;
schließlich und letztlich in dem Verzeichnis, in das "make install" die
Dateien kopiert hat. Zusätzlich kann durch die Umgebungsvariable
FREECIV_PATH ein Verzeichnis oder eine durch Doppelpunkte getrennte
Liste von Verzeichnissen angegeben werden.

Beispiele:

 % setenv FREECIV_PATH "/usr/game/freeciv/data:./data"
 (für die csh, tcsh etc.)
    
 % FREECIV_PATH="/usr/game/freeciv/data:./data"; export FREECIV_PATH
 (für die sh, bash, ksh, zsh etc.)

Wie oben schon erwähnt muß Freeciv installiert sein, um andere Sprachen
als Englisch benutzen zu können. Näheres in README und README.de

Wenn man den Xaw-Client benutzt und root-rechte besitzt, sollte man die Datei
data/Freeciv in das app-defaults Verzeichnis kopieren. (Normalerweise in
/usr/lib/X11/app-defaults)

5. NLS (Unterstützung der Landessprache)
=======================================================

Freeciv benutzt "gettext", um die (alternativ zur Standardsprache,
bei Freeciv ist das Englisch) lokale Sprache zu unterstützten. Die
lokale Sprache wird über die Variable "LANG" gesetzt. Für ein
deutsches Freeciv (oder auch andere Programme) sollte LANG auf
"de_DE" gesetzt werden:

 % setenv LANG "de_DE"    [ für die C-Shell oder die tcsh ]

oder:

 % export LANG="de_DE"    [ für die Bourne-Shell oder die bash ]

Falls während des Durchlaufs von "configure" oder beim Compilieren
Probleme mit "gettext" auftreten, können Sie folgende Work-Arounds
ausprobieren:

1. Falls Sie nur englische Programmeldungen wünschen oder brauchen,
   können Sie NLS mittels "--disable-nls" beim Aufruf von "configure"
   abschalten:

     % ./configure --disable-nls
     % make

2. Falls sie ein eingedeutschtes Freeciv möchten, können sie es mit dem
   von Freeciv mitgelieferten "gettext" versuchen, mittels
   "--with-included-gettext" beim Aufruf von configure:

     % ./configure --with-included-gettext
     % make

3. Schließlich können sie noch versuchen, die neueste Version von GNU
   gettext zu installieren. Sie können diese Version hier downloaden:

     ftp://ftp.gnu.org/gnu/gettext/gettext-0.11.4.tar.gz

6. Unterstützung von Readline
=============================

Freeciv unterstützt optional die Unterstützung der Readline-Library

Mit der Unterstützung der Readline-Library wird es im Server möglich
 - die Backspace-Taste zu benutzen
 - sich mit den Cursortasten in der Eingabezeile hin- und herzubewegen
 - mit TAB Befehle und Befehlsargumente wie auf der Shell automatisch zu
   vervollständigen, z.B. wenn Tab gedrückt wird, dann vervollständigt der
   Server das Wort, falls es nur eine mögliche Auswahl gibt.
 - sich mit den Cursortasten durch eine History der eingegebenen Kommandos zu
   bewegen
 - usw.

Das configure-skript prüft automatisch, ob readline installiert ist. Wenn ja,
wird readline automatisch in den Server eincompiliert, wenn nicht, wird der
Server ohne weitere Kommentare ohne readline compiliert.
Sie können configure dazu "zwingen", readline zu benutzen, indem sie configure
die Option "--with-readline" mitgeben:

 % ./configure --with-readline

Bei einigen Linux-Distributionen (und evtl. auch andere Betriebssystemen) ist
readline in der Version 4 nicht korrekt installiert, und zwar so, daß
readline nicht konfiguriert ist, seine dynamischen Abhängigkeiten zu
deklarieren. In diesem Fall versucht configure zu "raten", gegen welche
zusätzlichen Libraries noch gelinkt werden soll und fügt diese hinzu.
Das configure Skript wird eine Warnung ausgeben, wenn es zusätzliche Libraries
benutzen musste, damit readline funktioniert. Diese Warnung sollte harmlos sein,
sie ist nur als Erinnerung für die Leute gedacht, die für die Installation von
readline verantwortlich sind, sprich Admins oder Paketersteller der
Distributionen.

7. Reiniers Hinweise zur Installation unter Solaris
===================================================

Von Hause aus kommt Solaris (Version 2.5 und höher) mit einem eigenen X
(in /usr/openwin), einem eigenen make (in /usr/ccs/bin/make) und einem
eigenen Compiler (separat zu erwerben), der, falls vorhanden, unter
/opt/SUNWspro/bin liegt.
Solaris stellt von sich aus keine libXpm zur Verfügung, die für den
Xaw-Client benötigt wird; des weiteren auch nichts, was für die Imlib,
Gdk und Gtk, den Vorraussetzungen für den GTK+-Client, benötigt wird.
Mit ein wenig Geduld kann aber alles problemlos compiliert werden.

Informationen zur Installation der libXpm unter Solaris gibts im
nächsten Abschnitt.

Viele Installationen von Solaris haben außerdem MIT X (normalerweise
unter /usr/X11), GNU make, den gcc und XPM installiert (der Ort der
Installation ist im Allgemeinen von der jeweiligen Systeminstallation
abhängig). Beim normalen Aufruf von "./configure && make" könnte es
passieren, daß "configure" die XPM-Library nicht findet oder
verschiedene installierte Versionen durcheinander wirft.

Man sollte sicherstellen, daß die Umgebungsvariablen, im Besonderen
$PATH und $LD_LIBRARY_PATH, sowie die Optionen von ./configure sich
nicht auf widersprüchliche Software beziehen. Dann sollte die
Compilierung ohne Probleme verlaufen.

Ein einfaches Rezept zum Compilieren mit Sun X, Sun make und Sun cc
(unter der Annahme, daß die Xpm-Library in /pfad/zu/xpm installiert
ist):

 % setenv PATH /opt/SUNWspro/bin:/usr/ccs/bin:/bin
 % unsetenv LD_LIBRARY_PATH
 % ./configure --with-xpm-prefix=/pfad/zu/xpm
               --disable-cvs-deps --with-included-gettext
 % make

Die Option "--disable-cvs-deps" verhindert, daß ./configure Makefiles
erstellt, die nur von GNU make verstanden werden. Anzeichen dafür, daß
das passiert ist:
  
  make: Fatal error in reader:
        Makefile, line 214: = missing from replacement macro reference
  make: Fatal error: Command failed for target `all-recursive'

Alternativ können $PATH und ./confiure auch so konfiguriert werden, daß
nur GNU Tools benutzt werden. Des weiteren compiliert Freeciv auch unter
MIT X und bestimmten Kombinationen aus GNU und Sun-Tools, wobei das
genaue Vorgehen von der lokalen Installation abhängt.

8. Reinier's Installationshinweise zur libXpm unter Solaris:
=============================================================

Als ich root auf meinem Solarissystem war, wollte ich trotzdem keine
Third-party Software als root installieren. Das ist eine schlechte
Angewohnheit.

Unglücklicherweise möchte die Installationsroutine nach /usr/openwin
installieren, welches aber root gehört. Aber es ist nich allzu schwer,
dies zu umgehen.

Vorraussetzungen:

 - /usr/ucb/install sollte in $PATH vor /usr/bin/install stehen,
   andernfalls wird 'make install' mit seltsamen Fehlermeldungen
   abbrechen.

 - Das Zielverzeichnis der Installation kann mit $DESTDIR angegeben
   werden; installiert wird aber nach $DESTDIR/$OPENWINDIR, d.h. das
   Unterverzeichnis $OPENWINDIR muß hinterher entfernt werden (ein
   Ändern von $OPENWINHOME funktioniert nicht)

Der Ablauf:

 - Sourcen besorgen, untar-en, in das source-Verzeichnis wechseln und
   folgende Zeilen eingeben:

    % setenv MYXPMDEST /usr/local   # Xpm-Zielverzeichnis
    % xmkmf; make Makefiles includes depend; make
    % setenv PATH /usr/local/bin:/usr/ucb:$PATH
    % make DESTDIR=$MYXPMDEST install
    % make DESTDIR=$MYXPMDEST install.man
    % cd $MYXPMDEST; mv ./$OPENWINHOME/* .; rm -rf ./$OPENWINHOME

   (Bei sh, bash, ksh, zsh, usw. anstatt den setenvs oben:
    % MYXPMDEST=/usr/local; export MYXPMDEST
    % PATH=/usr/local/bin:/usr/ucb:$PATH
   .)

- Freeciv kann jetzt mit dem folgenden Aufruf von ./configure
  konfiguriert werden:

    % ./configure --with-xpm-prefix=$MYXPMDES

  Dies bewirkt, daß bei den Aufrufen von Compiler und Linker die
  Optionen -I/-L/-R entsprechend gesetzt werden.

9. Hinweise zu Mac OS X/Darwin:
===============================

Apples Version des GCC benutzt sog. "precompiled headers" die das 
vararg-Macro (eine GCC-Erweiterung) nicht unterstützen. Dies führt
dazu, das GCC während des Kompiliervorgangs von Freeciv scheitert,
da der Compiler sonst (größtenteils) nicht vom "normalen" GCC zu
unterscheiden ist. Anstatt des normalen

 % ./configure <...>
 
sollte entweder

 für die Bourne Shell:
   $ CC="gcc -no-cpp-precomp" ./configure <...>

oder

 für die C shell:
   % env CC="gcc -no-cpp-precomp" ./configure <...>

benutzt werden, abhängig davon, ob die benutzte Shell eine Bourne- oder
eine C-Shell Variante ist (Falls Zweifel bestehen, einfach beide Varianten
ausprobieren, und sehen, welche funktioniert).

<...> steht dabei für welche zusätzlichen Parameter sie auch immer
an configure übergeben wollen.

10. Hinweise zu Debian GNU/Linux:
=================================

Um Freeciv auf deinem Debian-System zu kompilieren benötigt man folgende
Pakete:

  Allgemein:
    gcc
    libc6-dev
    libreadline4-dev
    zlib1g-dev
    xlib6g-dev
 
  GTK-Client:
    gdk-imlib-dev
    libglib1.2-dev
    libgtk1.2-dev
    imlib-progs
 
  xaw-Client:
    xaw3dg-dev
    libxpm4-dev

Falls der xaw-Client kompiliert werden soll, sollte configure mit der Option
--with-xaw3d aufgerufen werden, z.B.:

   % ./configure --with-xaw3d

Falls ein Aufruf von aclocal notwendig werden sollte (wenn nicht bekannt ist,
was aclocal macht, benötigt man es auch nicht), wird auch imlib-dev benötigt,
um das Makro AM_PATH_GDK_IMLIB zu bekommen. Dies ist ein Fehler in Debian,
das dieses Makro nicht in gdk-imlib-dev definiert ist und wird hoffentlich in
zukünftigen Debian-Releases korrigiert.

11. Freeciv für win32 (nativ, d.h. ohne GTK+ und X-Server) kompilieren
===============================================================================

Benötigt werden:
	- eine Unix-Umgebung mit gcc und den binutils für Windows (mingw32)
	- libz und libpng (unter https://files.freeciv.org/requirements)

Diese funktionieren mit den Standard-Makefiles des gcc, allerdings müssen CC
und RANLIB entsprechend gesetzt werden. Werden libpng/libz benutzt, die bei
cygwin dabei sind, ist Ärger so gut wie garantiert.

Kompilieren von zlib mit

a) cygwin
	% make CC="gcc -mno-cygwin"
	
b) mingw32 cross compiler
	% make CC=iX86-mingw32-gcc RANLIB=iX86-mingw32-ranlib

Kompilieren von libpng mit

a) cygwin
	% make -f scripts/makefile.gcc CC="gcc -mno-cygwin"
b) mingw32 cross compiler
	% make -f scripts/makefile.gcc CC=iX86-mingw32-gcc \
	  RANLIB=iX86-mingw32-ranlib


Autoconf und co:

Beim Übersetzen von CVS-Abzügen muss in den folgenden Zeilen ./configure durch
./autogen.sh ersetzt werden.

Wird autoconf2.52 verwendet, werden Probleme bei den Pfaden auftreten,
insbesondere bei dem Verzeichnis der locales (Lokalisierungsdateien); daher
ist autoconf2.13 die bevorzugte Version (Um die Verwendung von autoconf 2.13
zu erzwingen kann der Schalter --disable-autoconf2.52 des Scripts autogen.sh
benutzt werden)

Die Konfiguration der Sourcen:
------------------------------

1. Mit den cygwin-Umgebung

Benötigt wird mingw und das win32api-Paket.

Aufruf:
   % export CC="gcc -mno-cygwin"
   % ./configure --with-included-gettext --prefix=.

2. Cross-Compilation von einem Unix

X sollte durch die Zahl ersetzt werden, die gewählt wurde, als der
Cross-Compiler konfiguriert wurde.

   % export CC=iX86-mingw32-gcc
   % export AR=iX86-mingw32-ar
   % export RANLIB=iX86-mingw32-ranlib
   % ./configure --host=iX86-mingw32 --build=$(./config.guess) \
   >  --with-included-gettext --enable-client=win32 --prefix=.

Übersetzen und Installieren:
----------------------------

   % make
   % make DESTDIR=/aboluter/installations/pfad/ bindir =./ install

/absoluter/installations/pfad/ ist der Pfad, in den Freeciv installiert werden
soll. Er muss absolut sein und mit einem "/" enden.

Die ausführbaren Dateien (civserver, civlcient) sollten die Endung .exe
besitzen. Es können jetzt noch die Debug-Informationen entfernt werden
(strippen). 

Danach das Datenverzeichnis verschieben

   % mv share/freeciv data
   
Der letzte Schritt ist das Konvertieren der Grakfiken in png. Dazu kann ein
bevorzugtes Grafikprogramm oder eine Kombination aus ImageMagick oder pngquant
verwendet werden. Es ist sehr wichtig, das das Ergnis kontrolliert wird; jede
Datei sollte überprüft werden. Der Alpha-Kanel (Transparenz) verschwindet des
Öfteren. Es gibt kein verlässliches Skript dafür.
