webperimental: killstack decides stack protects.
[freeciv.git] / doc / README.msys2
blob1809952257d6d429a56c501757afe199deea5d75
2  MSYS2 Windows Installer build notes
3 ====================================
5 This document is about building Freeciv Windows Installer packages
6 using MSYS2 from http://msys2.github.io
9  Status
10 ====================================
12 - Buildable clients are gtk3, gtk3.22, sdl2, and Qt
15  Setup
16 ====================================
18  This chapter is about creating new msys2 build environment.
20  If you want to reproduce more official freeciv builds, the environment
21  used to make those builds is documented in the next chapter ("Premade environment"),
22  with listing of versions current at the time of this freeciv version.
24 1) Install MSYS2 following the documentation on their homepage
26 1.1) Download
27  https://sourceforge.net/projects/msys2/files/Base/i686/msys2-i686-20161025.exe
28  for win32 or
29  https://sourceforge.net/projects/msys2/files/Base/x86_64/msys2-x86_64-20161025.exe
30  for win64
32 1.2) Run it to install MSYS2 on build system
34 1.3) Launch msys2_shell to update packages
35 > pacman -Syu
37 2) Install following packages with 'pacman -Su'
39 2.1) Packages needed for building freeciv
40  These packages are needed even if you don't plan to make installer,
41  but only build freeciv for local use.
43 2.1.1) Arch independent packages needed for building freeciv
45 2.1.1.1) Arch independent packages always needed for building freeciv
46  With these packages it's possible to build freeciv source tree that
47  has already such generated files present that are created for the
48  release tarball.
50  - make
51  - gettext
52  - pkg-config
54 2.1.1.2) Arch independent packages needed for getting and extracting freeciv
55  source tarball
57  - tar
59 2.1.1.3) Arch independent packages needed for building freeciv from repository
60  checkout. These are needed in addition to the ones always needed for building
61  freeciv.
63  - git
64  - automake
65  - libtool
66  - autoconf
67  - python
69 2.1.2) Arch-specific packages needed for building freeciv
71 2.1.2.1) Arch-specific packages for building common parts
72  - mingw-w64-i686-gcc / mingw-w64-x86_64-gcc
73  - mingw-w64-i686-icu / mingw-w64-x86_64-icu
74  - mingw-w64-i686-curl / mingw-w64-x86_64-curl
75  - mingw-w64-i686-bzip2 / mingw-w64-x64_64-bzip2
76  - mingw-w64-i686-readline / mingw-w64-x86_64-readline
77  - mingw-w64-i686-imagemagick / mingw-w64-x86_64-imagemagick
78  - mingw-w64-i686-SDL2_mixer / mingw-w64-x86_64-SDL2_mixer
80 2.1.2.2) Arch-specific packages for building gtk3-client
81  - mingw-w64-i686-gtk3 / mingw-w64-x86_64-gtk3
83 2.1.2.3) Arch-specific packages for buildind Qt-client and/or Ruledit
84  - mingw-w64-i686-qt5 / mingw-w64-x86_64-qt5
86 2.1.2.4) Arch-specific packages for building sdl2-client
87  - mingw-w64-i686-SDL2_image / mingw-w64-x86_64-SDL2_image
88  - mingw-w64-i686-SDL2_ttf / mingw-w64-x86_64-SDL2_ttf
89  - mingw-w64-i686-SDL2_gfx / mingw-w64-x86_64-SDL2_gfx
91 2.2) Packages needed for building installer package
92  These are needed in addition to above ones used in the
93  building step already.
95 2.2.1) Arch-specific packages needed for building installer
96  package
98  - mingw-w64-i686-nsis / mingw-w64-x86_64-nsis
101  Premade environment
102 ====================================
104 Premade msys2 environment is available for download from
105 https://sourceforge.net/projects/freeciv/files/dependencies/msys2/
107 Current version is
109 win64 host:
110 -----------
111 msys2-freeciv-win64-170422.7z, based on
112 https://sourceforge.net/projects/msys2/files/Base/x86-64/msys2-x86_64-20161025.exe
113 with packages updated to 22-Apr-17 level.
115 Only win64 target is included - replace <arch> with 'x86_64' in package names below
118 Following packages have been installed:
119 - make
120 - pkg-config
121 - tar
122 - git
123 - patch
124 - nano
125 - automake
126 - libtool
127 - autoconf
128 - python
129 - gdb
130 - mingw-w64-<arch>-gcc
131 - mingw-w64-<arch>-icu
132 - mingw-w64-<arch>-curl
133 - mingw-w64-<arch>-sqlite3
134 - mingw-w64-<arch>-gtk3
135 - mingw-w64-<arch>-nsis
136 - mingw-w64-<arch>-bzip2
137 - mingw-w64-<arch>-readline
138 - mingw-w64-<arch>-SDL2_mixer
139 - mingw-w64-<arch>-SDL2_image
140 - mingw-w64-<arch>-SDL2_ttf
141 - mingw-w64-<arch>-SDL2_gfx
142 - mingw-w64-<arch>-imagemagick
143 - mingw-w64-<arch>-qt5
146  Build
147 ====================================
149 Launch msys2 shell. Get the freeciv sources there
150 somehow. Some options are:
151 1) Download freeciv tarball within msys2 shell with wget
152 2) Use svn within msys2 shell to get them from version control
153 3) Copy them from Windows folder where they are to a directory that
154    is within msys2
156 > cd windows/installer_msys2
157 > make <targets>
159   Target can be:
160   - "<gui>-installer", where <gui> is
161      - gtk3
162      - gtk3.22
163      - sdl2
164      - qt
165   - "ruledit-installer"
166   - "snapshot", if your freeciv sources are in svn checkout directory
168  You can also set minimum Windows version targeted. While setting this
169  to an older version allows those Windows versions to run the created
170  executables, it may come with the cost of disabling functionality that
171  newer Windows versions could otherwise have.
172  The version is set via MIN_WIN_VER variable. For values to use, see
173  list in: https://msdn.microsoft.com/en-us/library/6sehtctf.aspx
174  Current default is 0x0601 (Windows 7).
176  It's possible to set number of make jobs used in the build by
177  setting suitable make parameter to MAKE_PARAMS variable, e,g,
178  MAKE_PARAMS="-j3"
180  Problems
181 ====================================
183 - Freeciv linked against readline in msys2 does not work.
184   Configure freeciv with --without-readline
187  TODO
188 ====================================
190 - Readline support