
Cygwin installation notes
=========================

This is doc/INSTALL.Cygwin, which contains Cygwin platform specific
Freeciv installation information.

A translated version of this file may be in language specific
subdirectories of doc/.

See also the generic installation notes in INSTALL.

On Cygwin, meson based build system can be used instead of
the autotools system. That is not yet covered in this document.
See doc/INSTALL.meson for generic meson build instructions.
Notable benefit of meson based build compared to autotools
build described here is that building also sdl2-client is
possible with meson.

Cygwin is a free Unix variant for MS Windows operating systems.
It comes with an X server, Xorg.

To install Freeciv for Cygwin:

a) Install or update your Cygwin by downloading and running installer
   from https://www.cygwin.com/

   In addition to default install, install at least following packages
   to build freeciv
   (packages to be installed as dependencies of ones in the list
    are not listed):
   - gcc-g++ (section Development)
   - pkg-config (Development) or pkgconf (Development)
   - make (Development)
   - libsqlite3-devel (Devel)
   - libiconv-devel (Libs)
   - libcurl-devel (Libs)
   - zlib-devel (Libs)
   - libicu-devel (Libs)

  Install development packages for the guis you want to compile, one or more of
  - libgtk3-devel (Libs)
  - libQt5Core-devel (Libs) + libQt5Gui-devel (Libs)
    Note: As Of 04-Mar-21 Cygwin does not have new enough version of Qt for
    building Qt-client of Freeciv-3.1 or later.

  For additional functionality install also:
   - libreadline-devel (Libs) (for server command history & completion)
   - gettext-devel (Development) (for native language support)
   - libSDL2_mixer-devel (Libs) (for client audio support)
   - libzstd-devel (Libs) (for support of zst-compressed savegames)
   - liblzma-devel (Libs) (for support of xz-compressed savegames)
   - libbz2-devel (Archive) (for deprecated bz2-compressed savegames support)
   - libMagick-devel (Graphics) (for better mapimg support)

  To get and build freeciv development version directly from version control,
  you need also
   - git (Development)
   - automake1.16 (Development)
   - libtool (Development)
   - python3 (Python)

  To run freeciv client, you need to install also
  - xlaunch (X11)

b) Get a Freeciv source tree (the doc/ directory this INSTALL.Cygwin is in,
   is a subdirectory of the source tree's root directory).
   Put it in a temporary place like /tmp.

      ./configure --enable-client=<gui> [any other options e.g. --prefix=...]
   where <gui> is "gtk3.22", "qt", or list like "gtk3.22,qt". If you
   didn't install gettext-devel, you have to give also configure option
   --disable-nls to disable Native Language Support.

   If you are building directly from version control, and not from
   tarball that has some files, including ./configure, pregenerated,
   you need to run ./autogen.sh instead of ./configure. Use same options
   as you would for directly running ./configure.

   If you get messages of missing or outdated components, install them.

c) Compile and install Freeciv:

      make
      make install

You should now have bin/freeciv-server.exe and bin/freeciv-<gui>.exe in the
directory you installed Freeciv into (/usr/local by default).
If 'make install' succeeds, the source code tree can be removed.

d) Test the results:

    /path/to/freeciv-server.exe  [any additional options]

  will start the server, but you only need it for private games.
  To start the client, you need to run the X server (this can be
  done by typing 'xlaunch'), then into a terminal type

    /path/to/freeciv-<gui>.exe  [any additional options]

More details on using server and client are in doc/README.
