Updated hexemplio select sprites.
[freeciv.git] / INSTALL
blob5a58748288d2602aa34801e9e3d351d72718d36d
1 ===================
2 Installing Freeciv:
3 ===================
5 This file describes how to compile and install Freeciv. Last time we
6 made sure this file is up to date was 16-Jul-06.
7 Last minor update was 21-Apr-15.
9 There may be a localized version of this file in the ./doc directory,
10 named INSTALL.<locale> (e.g., INSTALL.de).
12 This document contains sections and subsections as follows:
13      0. Prerequisites:
14      1. Prerequisites for the clients:
15           1a. Prerequisites for the Gtk2 client:
16           1b. Prerequisites for the Gtk3 client:
17           1c. Prerequisites for the Gtk3.22 client:
18           1d. Prerequisites for the SDL client:
19           1e. Prerequisites for the SDL2 client:
20           1f. Prerequisites for the Xaw client:
21           1g. Prerequisites for the Qt client:
22      2. Generating Makefiles
23           2a. Generating the Makefile for svn versions:
24           2b. Generating the Makefile for release versions:
25      3. Compiling Freeciv:
26      4. Installation:
27      5. Native Language Support:
28      6. Readline Support:
29      7. Reinier's Solaris Installation Notes:
30      8. Reinier's libXpm Solaris Installation Notes:
31      9. Mac OS X and Darwin notes:
32     10. Debian GNU/Linux notes:
33     11. Windows notes:
36 0. Prerequisites:
37 =================
39 Freeciv has a number of prerequisites.  Note, that apart from the first
40 prerequisite, the Freeciv configuration process is smart enough to work
41 out whether your system is suitable.  If in doubt, just try it.
43  - Unix (or similar)
45    The Unix operating system, a work-alike such as Linux or FreeBSD,
46    or some OS that provides a very Unix-like personality or mode, like
47    EMX under OS/2 or the Cygnus Cygwin toolkit under Windows.
48    (See http://sourceware.cygnus.com/cygwin/).  Support for
49    BSD-style TCP/IP sockets is essential, as is a Bourne-shell
50    compatible shell, such as GNU "bash".  (Most Unixes fit the bill...)
52  - An ANSI C compiler.
54    Freeciv is written in very portable (almost) ANSI C.  Both 32- and 64-
55    bit machines are supported.  You cannot use a "K&R C" compiler, or
56    a C++ compiler.
58    Development of Freeciv is primarily done with "gcc", the GNU
59    project's excellent C compiler.  Releases can be compiled with gcc
60    or most other compilers (such as the unbundled Solaris C compiler).
61    Note that there have been reports that gcc with -O3 miscompiled
62    freeciv.
64  - A "make" program.
66    Freeciv developers generally use "gmake", the GNU make program.
68    Officially released versions of Freeciv are designed to have
69    makefiles which work with most make programs.
71    You can check if you have GNU make installed on your system by
72    typing:
74     % make -v                   [and if this doesn't work, try "gmake -v"]
76    The output should include "GNU Make" somewhere.
78  - libcurl version 7.12.1 or better
80    Libcurl takes care of http communication with the metaserver, and
81    file transfers of modpack installers
83    http://curl.haxx.se/
85 The svn version has additional requirements. A release version
86 contains the generated files.
88  - The programs from GNU gettext version 0.14 or better
90    Especial the xgettext program is required to create the *.gmo
91    files which aren't included in the svn tree.
93  - GNU autoconf version 2.61 or better
95    Autoconf is required to create configure from configure.ac.
97  - GNU automake version 1.10 or better
99    Automake is required to create the various Makefile.in from
100    Makefile.am.
102 1. Prerequisites for the clients:
103 =================================
105 The Freeciv client comes in the following forms:
106 * Gtk+ 2.0 widget library ("Gtk+ 2.0").
107 * Gtk+ 3.0 widget library ("Gtk+ 3.0").
108 * X Athena Widgets library ("Xaw").
109 * SDL
110 * Qt
112 These forms have different prerequisites, explained separately below.
114 Your system will need to satisfy at least one of these sets of prerequisites.
116 Note that most Linux systems have separate library packages for "runtime" 
117 library support and for development support (for compiling programs 
118 which use those libraries).  To compile Freeciv on such systems you 
119 will need to have the appropriate "development" packages installed.
122 1a. Prerequisites for the Gtk+ 2.0 client:
123 ==========================================
125  - "pkg-config".
127    "pkg-config" is a system for managing library compile/link flags that
128    works with automake and autoconf. You may obtain it at:
130       http://pkgconfig.freedesktop.org/releases/pkg-config-0.26.tar.gz
132  - The "Glib" utility library.
134    The "Glib" utility library provides non-graphical functions used by the
135    "Gdk" and "Gtk+" libraries, like hash tables, single linked lists, etc.
137    Freeciv requires a version of "Glib" greater or equal to 2.6.0.
139    If the Freeciv configure process tells you that you don't have the
140    Glib library installed, then it may be obtained from here:
142      http://ftp.gnome.org/pub/gnome/sources/glib/2.30/glib-2.30.2.tar.xz
144  - The "Atk" accessibility library.
146    The "Atk" library provides a set of interfaces for accessibility.
147    It allows people with disabilities to utilize all the functionality
148    provided by Gtk+ apps. You may obtain it at:
150      http://ftp.gnome.org/pub/gnome/sources/atk/2.2/atk-2.2.0.tar.xz
152  - The "Pango" text layout and rendering library.
154    "Pango" is library for layout and rendering of text, with an emphasis
155    on internationalization. You may obtain it at:
157      http://ftp.acc.umu.se/pub/gnome/sources/pango/1.28/pango-1.28.4.tar.bz2
159  - The "Gtk+" widget library.
161    The "Gtk+" widget library was designed for the GIMP graphics program.
162    Since then it has gained popularity as an easy to program, free toolkit.
164    The "Gtk+" library comes with two companion libraries:
166      "Gdk":
167        Provides an abstraction layer over X-Windows/LinuxFB/Win32 to implement
168        basic drawing functions, windows, clipping, etc.
170      "GdkPixbuf":
171        Provides image loading/saving facilities.
173    Freeciv requires a version of "Gtk+" greater or equal to 2.12.0.
174    At least 2.16.0 is recommended; some minor UI features will be
175    missing with earlier versions.
177    If the Freeciv configure process tells you that you don't have the
178    Gtk+ library installed, then it may be obtained from here:
180      http://ftp.acc.umu.se/pub/gnome/sources/gtk+/2.24/gtk+-2.24.9.tar.xz
182    "Gtk+" depends on the "Glib", "Atk" and "Pango" libraries.
184 If you are going to make these yourself, build and install them in the
185 following order: pkg-config, Glib, Atk, Pango, Gtk+.
187 1b. Prerequisites for the Gtk+ 3.0 client:
188 ==========================================
190  - "pkg-config".
192    "pkg-config" is a system for managing library compile/link flags that
193    works with automake and autoconf. You may obtain it at:
195       http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz
197  - The "Glib" utility library.
199    The "Glib" utility library provides non-graphical functions used by the
200    "Gdk" and "Gtk+" libraries, like hash tables, single linked lists, etc.
202    Freeciv requires a version of "Glib" greater or equal to 2.36
204    If the Freeciv configure process tells you that you don't have the
205    Glib library installed, then it may be obtained from here:
207      http://ftp.gnome.org/pub/gnome/sources/glib/2.36/glib-2.36.1.tar.xz
209  - The "Atk" accessibility library.
211    The "Atk" library provides a set of interfaces for accessibility.
212    It allows people with disabilities to utilize all the functionality
213    provided by Gtk+ apps. You may obtain it at:
215      http://ftp.gnome.org/pub/gnome/sources/atk/2.8/atk-2.8.0.tar.xz
217  - The "Pango" text layout and rendering library.
219    "Pango" is library for layout and rendering of text, with an emphasis
220    on internationalization. You may obtain it at:
222      http://ftp.gnome.org/pub/gnome/sources/pango/1.34/pango-1.34.0.tar.xz
224  - The "Gdk-Pixbuf" image loading/saving library
226    "Gdk-Pixbuf" used to be part of "Gtk+" itself, but is now separate
227    project. It may be obtained from:
229      http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.28/gdk-pixbuf-2.28.1.tar.xz
231  - The "Gtk+" widget library.
233    The "Gtk+" widget library was designed for the GIMP graphics program.
234    Since then it has gained popularity as an easy to program, free toolkit.
236    "Gtk+ 3" is the default client. If you don't specify any client with
237    "--enable-client" to configure, you will get "Gtk+ 3" client.
239    The "Gtk+" library comes with one companion libraries:
241      "Gdk":
242        Provides an abstraction layer over X-Windows/LinuxFB/Win32 to implement
243        basic drawing functions, windows, clipping, etc.
245    Freeciv requires a version of "Gtk+" greater or equal to 3.8.0.
247    If the Freeciv configure process tells you that you don't have the
248    Gtk+ library installed, then it may be obtained from here:
250      http://ftp.gnome.org/pub/gnome/sources/gtk+/3.12/gtk+-3.12.2.tar.xz
252    "Gtk+" depends on the "Glib", "Atk", "Gdk-Pixbuf", and "Pango" libraries.
254 If you are going to make these yourself, build and install them in the
255 following order: pkg-config, Glib, Atk, Pango, Gdk-Pixbuf, Gtk+.
257 1c. Prerequisites for the Gtk+ 3.22 client:
258 ==========================================
260  - "pkg-config".
262    "pkg-config" is a system for managing library compile/link flags that
263    works with automake and autoconf. You may obtain it at:
265       http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.1.tar.gz
267  - The "Glib" utility library.
269    The "Glib" utility library provides non-graphical functions used by the
270    "Gdk" and "Gtk+" libraries, like hash tables, single linked lists, etc.
272    Freeciv requires a version of "Glib" greater or equal to 2.50
274    If the Freeciv configure process tells you that you don't have the
275    Glib library installed, then it may be obtained from here:
277      http://ftp.gnome.org/pub/gnome/sources/glib/2.50/glib-2.50.1.tar.xz
279  - The "Atk" accessibility library.
281    The "Atk" library provides a set of interfaces for accessibility.
282    It allows people with disabilities to utilize all the functionality
283    provided by Gtk+ apps. You may obtain it at:
285      http://ftp.gnome.org/pub/gnome/sources/atk/2.22/atk-2.22.0.tar.xz
287  - The "Pango" text layout and rendering library.
289    "Pango" is library for layout and rendering of text, with an emphasis
290    on internationalization. You may obtain it at:
292      http://ftp.gnome.org/pub/gnome/sources/pango/1.40/pango-1.40.3.tar.xz
294  - The "Gdk-Pixbuf" image loading/saving library
296    "Gdk-Pixbuf" used to be part of "Gtk+" itself, but is now separate
297    project. It may be obtained from:
299      http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.36/gdk-pixbuf-2.36.0.tar.xz
301  - The "Gtk+" widget library.
303    The "Gtk+" widget library was designed for the GIMP graphics program.
304    Since then it has gained popularity as an easy to program, free toolkit.
306    The "Gtk+" library comes with one companion libraries:
308      "Gdk":
309        Provides an abstraction layer over X-Windows/LinuxFB/Win32 to implement
310        basic drawing functions, windows, clipping, etc.
312    Freeciv requires a version of "Gtk+" greater or equal to 3.22.0.
314    If the Freeciv configure process tells you that you don't have the
315    Gtk+ library installed, then it may be obtained from here:
317      http://ftp.gnome.org/pub/gnome/sources/gtk+/3.22/gtk+-3.22.1.tar.xz
319    "Gtk+" depends on the "Glib", "Atk", "Gdk-Pixbuf", and "Pango" libraries.
321 If you are going to make these yourself, build and install them in the
322 following order: pkg-config, Glib, Atk, Pango, Gdk-Pixbuf, Gtk+.
324 1d. Prerequisites for the SDL client:
325 =====================================
327  - The "SDL" library.
329    "Simple DirectMedia Layer is a cross-platform multimedia library designed
330     to provide low level access to audio, keyboard, mouse, joystick, 3D hardware
331     via OpenGL, and 2D video framebuffer." (http://www.libsdl.org)
332     
333    These features make it a good choice for portable games. You may obtain it
334    at:
335     
336    http://www.libsdl.org/release/SDL-1.2.11.tar.gz
338    To compile the client using the "SDL" library add "--enable-client=sdl"
339    to the Freeciv configure script.  See the section below for more 
340    information about the configure script.
341     
342  - The "SDL_image" library.
344    This library loads the PNG images (with the help of libpng) and converts
345    them to "SDL surfaces" that can be handled by the "SDL" library. You may
346    obtain it at:
348    http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz
350  - The "SDL_gfx" library.
352    http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.25.tar.gz
354  - The "SDL_ttf" library.
356    http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.11.tar.gz
358  - The "freetype" library.
360    This library helps to render text for the SDL client, using an externally
361    provided TrueType font. You may obtain it at:
362    
363    http://download.savannah.gnu.org/releases/freetype/freetype-2.3.2.tar.gz
365 1e. Prerequisites for the SDL2 client:
366 =====================================
368  - The "SDL2" library.
370    "Simple DirectMedia Layer is a cross-platform multimedia library designed
371     to provide low level access to audio, keyboard, mouse, joystick, 3D hardware
372     via OpenGL, and 2D video framebuffer." (http://www.libsdl.org)
374    These features make it a good choice for portable games. You may obtain it
375    at:
377    http://www.libsdl.org/release/SDL2-2.0.3.tar.gz
379    To compile the client using the "SDL2" library add "--enable-client=sdl2"
380    to the Freeciv configure script.  See the section below for more 
381    information about the configure script.
383  - The "SDL2_image" library.
385    This library loads the PNG images (with the help of libpng) and converts
386    them to "SDL surfaces" that can be handled by the "SDL" library. You may
387    obtain it at:
389    http://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.0.tar.gz
391  - The "SDL2_gfx" library.
393    http://www.ferzkopp.net/Software/SDL2_gfx/SDL2_gfx-1.0.1.tar.gz
395  - The "SDL2_ttf" library.
397    http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.25.tar.gz
399  - The "freetype" library.
401    This library helps to render text for the SDL2 client, using an externally
402    provided TrueType font. You may obtain it at:
404    http://download.savannah.gnu.org/releases/freetype/freetype-2.5.4.tar.bz2
406 1f. Prerequisites for the Xaw client:
407 =====================================
409  - X-Windows.
411    The Freeciv Xaw client is an X-Windows program, so you'll need 
412    some way of running X-Windows programs.  (Most Unixes can...)
414    If the Freeciv configuration program can't find X Windows on
415    your system, you may need to use the --x-includes=DIR
416    and --x-libraries=DIR options.
418  - The "Athena" widget library.
420    This library (also known as "Xaw") is usually supplied standard
421    with the rest of X Windows, but some platforms (HP-UX 10 for
422    example) only provide it in a limited form.
424    To compile the client using the "Xaw" library add "--enable-client=xaw"
425    to the Freeciv configure script.  See the section below for more 
426    information about the configure script.
428    Many modern Unix systems (such as Linux) ship with a variant called
429    "Xaw3d", which has a more modern "3D" look.  If you'd like to try
430    compiling with Xaw3d, then add "--with-xaw3d" to the Freeciv
431    configure script.
433    There are also other variants of Xaw, such as Nextaw.  Freeciv
434    does not work with these, although it should be possible to modify
435    it in the same fashion as for Xaw3d.  Another tool which may help
436    is called "xaw_wrappers", although how to use it is beyond the
437    scope of this file.
439  - The "Xpm" library.
441    This library is essential for icon and bitmap handling.  It is in
442    wide use, and is supplied standard on most modern Unix machines,
443    although it may be missing on traditional or older Unixes, eg,
444    Solaris.
446    When you run the Freeciv configure script, it may be necessary for
447    you to use the "--with-xpm-prefix=DIR" command-line option, where
448    DIR is the name of the directory containing the "include" and "lib"
449    subdirectories where Xpm may be found.
451    If the Freeciv configure process tells you that you don't have the
452    Xpm library installed, then it may be obtained from here:
454      ftp://koala.inria.fr/pub/xpm/xpm-3.4k.tar.gz
455      ftp://ftp.x.org/contrib/libraries/xpm-3.4k.tar.gz
457    Install it as you would any other package.  If you can't install
458    it in a standard system directory, then use the --with-xpm-prefix
459    option, as described above.
461    If you have problems installing libXpm on Solaris, or don't want to
462    install it as root, see Reinier's libXpm Solaris Installation Notes
463    section near the end of this file.
465  - A suitable font.
467    To run the Xaw client a suitable font is required. The X fonts should do.
468    If the Xaw client complains about not being able to open a font your X
469    installation probably don't have them. X fonts can be obtained from:
471      http://xorg.freedesktop.org/releases/individual/font/
473    If you use Debian you can install the package named xfonts-base in stead.
474    After installing a suitable font and restarting X the problem should go
475    away.
477 1g. Prerequisites for the Qt client:
478 ====================================
480  - C++ compiler.
482    Qt-client is written in C++, so you need appropriate compiler.
483    In Freeciv development, g++ has been used.
485  - Qt5Core, Qt5Gui, and Qt5Widgets libraries and headers
488 2. Generating Makefiles
489 =======================
490 This section contains two parts, one for generating makefiles from svn
491 versions and one for generating makefiles from release versions.
493 2a. Generating the Makefile for svn versions:
494 =============================================
496 This step is only needed for svn versions.
498 To create the makefile just type
500  % ./autogen.sh
502 This will create the configure script and will run it. All parameters
503 of autogen.sh are passed to configure. Read the next section about the
504 parameters which can be passed to configure.
506 2b. Generating the Makefile for release versions:
507 =================================================
509 Before you compile Freeciv, you must generate a Makefile.  This makefile
510 is configured to suit the features available on your machine.
512 This configuration is done using the GNU "configure" script.
514 To use "configure", "cd" into the top directory containing the Freeciv
515 files, and type:
517  % ./configure
519 This script will then attempt to determine the relevant features (and
520 misfeatures!!) of your system.  It should print a page or two of
521 diagnostics about your machine, then stop gracefully.
523 If you'd like help on the various options supported by the configure
524 script, try the --help option, like this:
526  % ./configure --help
528 By default the configure script will choose the Gtk+ client if the 
529 required libraries are found. If you prefer to override this default,
530 you can give configure the "--enable-client=xaw" option.
532 If you want to change the compiler options, set the CFLAGS environment
533 variable in your shell before running "configure".  For example:
535  % CFLAGS="-O -g -pipe" ./configure   [for people using Bourne shell or bash]
539  % setenv CFLAGS "-O -g -pipe"
540  % ./configure                        [for people using C shell or tcsh]
542 If you're tracking down a "core dump", we suggest that you use
543 a value of "-g" for CFLAGS.
545 When you install Freeciv (later), the game components will be copied into
546 subdirectories of /usr/local by default.  If you would like to use some
547 other installation prefix besides /usr/local, you should specify it now:
549  % ./configure --prefix=/opt/freeciv
551 If for some reason using "configure" gives you trouble, follow these steps:
553   - Read the prerequisites section carefully, to determine if your
554     system meets all the requirements.
556   - If you are compiling the Xaw version of the client: Ensure that
557     you have both the Xpm and Xaw libraries installed on your system.
558     Make sure that the configure script can find them, either by
559     installing them in the standard places on your system, or by
560     instructing the configure script with the appropriate command-line
561     options.  (See ./configure --help).
563   - If the problem is with "gettext", please read the Native Language
564     Support section, below, for possible work-arounds.
566   - Let us know, so that we can fix it for the next release!!
568     Send mail to the freeciv-dev mailing list, telling us what you did,
569     and what the result is.  It would be helpful to include the output
570     of the configure script, and the contents of the "config.status",
571     "config.cache" and "config.log" files, which are generated by the
572     configure script.
574     You can find out about the freeciv-dev mailing list on our web
575     site, at http://www.freeciv.org/
578 3. Compiling Freeciv:
579 =====================
581 If all has gone well previous to this point, then compiling Freeciv
582 should be as easy as typing "make" (or preferably, "gmake").
584 If you have problems, read the file BUGS, and follow the advice 
585 carefully.  If the problem is with "gettext", please read the Native
586 Language Support section, below, for possible work-arounds.
588 After compilation, the important results are:
590   - The "client/freeciv-<GUI>" and "server/freeciv-server" binaries.
591   - The "data/" directory, which contains the graphics and scenarios.
592   - The "translations/" directory, which contains the localization files.
593   - The "fcgui" and "fcser" scripts.
595 It's perfectly feasible to play Freeciv in this directory, without
596 installing it.  If you do this, the "fcgui" and "fcser" scripts may be
597 useful, although they are not as necessary as they used to be.
599 See the README file for more information.
601 (However you cannot use Internationalization when playing Freeciv from
602 the source directory; you must install Freeciv for that.)
605 4. Installation:
606 ================
608 Installing Freeciv involves installing the components mentioned in the
609 Compiling Freeciv section.  These need to be copied to a directory such
610 as /usr/local (the default), /usr/games, /usr/games/freeciv,
611 /usr/local/freeciv, or some other suitable directory.
613 Typing "make install" should install everything correctly on your machine.
614 You may like to use the --prefix=DIR configure option (see the Generating
615 the Makefile section) to ensure the files get placed where you want.
617 When the Freeciv client and Freeciv server are run they both need to 
618 find some files from the "data" directory.  By default freeciv looks
619 in the following directories, in order, for any data files: the current 
620 directory; the "data" subdirectory of the current directory; the 
621 subdirectory ".freeciv" in the user's home directory; and the directory
622 where the files are placed by running "make install".  You can override
623 this search patch by setting the FREECIV_PATH environment variable, to
624 a single directory or a list of directories separated by colons.
626 For example:
628   % setenv FREECIV_PATH "/usr/games/freeciv/data:./data"
629   (for users of csh, tcsh, etc.)
631   % FREECIV_PATH="/usr/games/freeciv/data:./data"; export FREECIV_PATH
632   (for users of sh, bash, ksh, zsh, etc.)
634 Also, note that you generally must install Freeciv if you wish to use
635 its Native Language Support.  See the README file for more information.
637 Finally, if you've chosen to use the Xaw client and you have permission
638 to log in as the 'root' user, you should consider copying the resource
639 file data/Freeciv into your app-defaults directory. (Usually this is
640 /usr/lib/X11/app-defaults).
643 5. Native Language Support:
644 ===========================
646 Freeciv uses the "gettext" system for Native Language Support.
648 If you experience problems with gettext in either configuring or compiling
649 Freeciv, there are a few work-arounds you can try:
651 1. If you don't need Native Language Support, disable it using the
652    "--disable-nls" ./configure option:
654       % ./configure --disable-nls
655       % make
657 2. You can try to install the latest version of GNU gettext.
658    It may be obtained from here:
660       ftp://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.2.tar.xz
663 6. Readline Support:
664 ====================
666 Freeciv has optional support for the readline library.
668 Readline support is what makes the server command line behave sensibly,
669 making it possible to
670  - Use the backspace key.
671  - Use the cursor to move back and forth on the line you have written.
672  - Use TAB completion of commands and command arguments. Ie, when you
673    push tab the server will finish the word for you if there is only one
674    possible choice.
675  - Use the up and down cursor to scroll through the history of previously
676    entered commands.
677  - etc.
679 The configure script will check if you have the readline library correctly
680 installed. If so it will automatically set up the makefiles so that readline
681 is compiled into the server. If not then it will just silently configure
682 without readline support.
683 You can force configure to include readline or die trying by giving
684 configure the --with-readline option:
686  % ./configure --with-readline
688 Some linux distributions (and possibly other operating systems) have
689 readline version 4 incorrectly installed, so that readline is not
690 set up to declare it's dynamic dependencies. In that case configure
691 will try to guess which extra libs it should link against and add them.
692 The configure script will give a warning if it had to add extra libs
693 to make readline work. This should be harmless, and is just meant as
694 a reminder to the folks who distribute readline. :)
696 7. Reinier's Solaris Installation Notes:
697 ========================================
699 Solaris (2.5 and up) has its own version of X in /usr/openwin, its own
700 version of make in /usr/ccs/bin/make, and its own compiler (to be purchased
701 separately) which, if you have it, is available in /opt/SUNWspro/bin.
702 Solaris does not provide the XPM library, which is required for the Xaw
703 client; it doesn't provide any of the stuff required for imlib, gdk and gtk,
704 either, which is required to build the GTK+ client.  However, with some
705 patience, everything can be compiled without problems.
707 For information on how to install XPM on Solaris, see the next section.
709 Many Solaris installations also have MIT X (usually, in /usr/X11), GNU make,
710 the gcc compiler, and the XPM library installed somewhere.  The standard
711 command "./configure && make" may not be able to find your XPM library and
712 it is likely to confuse the different versions.
714 Make sure your environment variables, especially $PATH and $LD_LIBRARY_PATH,
715 and the ./configure options do not point to an inconsistent set of software,
716 and compiling will be fine.
718 A simple recipe to compile with Sun X, Sun make and Sun cc, assuming the xpm
719 libraries are on their own in the nonstandard location /path/to/xpm:
721   % setenv PATH /opt/SUNWspro/bin:/usr/ccs/bin:/bin
722   % unsetenv LD_LIBRARY_PATH
723   % ./configure --with-xpm-prefix=/path/to/xpm
724   % make
726 You can set up your $PATH and ./configure to use only GNU
727 tools.  Furthermore, Freeciv is known to compile with MIT X, and with
728 certain combinations of GNU and Sun tools.  The exact recipes depend on your
729 local installation.
732 8. Reinier's libXpm Solaris Installation Notes:
733 ===============================================
735 When I was root on my Solaris system, I *still* didn't want to install
736 third-party software as root.  It's bad practice.
738 Unfortunately, the libXpm installation procedure assumes installation
739 in /usr/openwin, which is owned by root.  But it's not all that hard to
740 get around that.
742 Caveats:
744  - Make sure /usr/ucb/install is in your $PATH before /usr/bin/install,
745    otherwise 'make install' will break with strange error messages.
747  - The destination you want to install to can be specified with $DESTDIR;
748    however, installation will actually take place in $DESTDIR/$OPENWINDIR,
749    so the additional $OPENWINDIR subdir must be stripped afterwards
750    (changing the value of $OPENWINHOME doesn't work).
752 The Procedure:
754  - Get the source from somewhere, untar it, cd into the source directory,
755    and issue:
757      % setenv MYXPMDEST /usr/local   # or wherever you want to install it
758      % xmkmf; make Makefiles includes depend; make
759      % setenv PATH /usr/local/bin:/usr/ucb:$PATH
760      % make DESTDIR=$MYXPMDEST install
761      % make DESTDIR=$MYXPMDEST install.man
762      % cd $MYXPMDEST; mv ./$OPENWINHOME/* .; rm -rf ./$OPENWINHOME
764    (If you use sh, bash, ksh, zsh, etc., the "setenv"s above should be:
765      % MYXPMDEST=/usr/local; export MYXPMDEST
766      % PATH=/usr/local/bin:/usr/ucb:$PATH
767    .)
769  - You can now configure Freeciv with
771      % ./configure --with-xpm-prefix=$MYXPMDEST
773    which will add the proper -I/-L/-R options to the compile and link
774    commands.
777 9. Mac OS X and Darwin notes:
778 =============================
780 Apple's version of GCC uses precompiled headers that does not support
781 vararg macros (a GCC extension).  This causes GCC to fail when
782 compiling Freeciv since the compiler is otherwise (mostly)
783 indistinguishable from vanilla GCC.  So instead of the usual
785   % ./configure <...>
787 you should use either
789  Bourne shell:
790    $ CC="gcc -no-cpp-precomp" ./configure <...>
794  C shell:
795    % env CC="gcc -no-cpp-precomp" ./configure <...>
797 depending on whether your shell is a Bourne or C shell variant.  (If
798 in doubt, just try both to see which one will work.)
800 Replace <...> with whatever additional arguments you want to give to
801 configure.
804 10. Debian GNU/Linux notes:
805 ===========================
807 To compile freeciv on a debian system you need the following packages:
809  Common requirements:
810    gcc
811    libc6-dev
812    libreadline4-dev
813    zlib1g-dev
814    xlib6g-dev
816  For the xaw client:
817    xaw3dg-dev
818    libxpm4-dev
820 If you want to compile the xaw client you should give configure the
821 argument --with-xaw3d, ie
823   % ./configure --with-xaw3d
825 If you need to run aclocal (if you don't know what aclocal is then you
826 don't need it) you also need to install imlib-dev to get the
827 AM_PATH_GDK_IMLIB macro. It is a bug in debian that this macro isn't
828 in gdk-imlib-dev, and it will hopefully be fixed in future debian
829 releases.
831 11. Windows notes:
832 ==================
834 Windows version of Freeciv can be built either with MinGW or Cygwin.
835 Official Windows binaries are built with MinGW, and they are self-contained
836 packages. For using Cygwin version, you need Cygwin environment installed.
838 Build instructions for MinGW versions are documented on top of file
839 win32/installer/Makefile
841 Cygwin specific installation notes can be found in doc/INSTALL.Cygwin.
843 ** END **