forked from freeciv/freeciv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
INSTALL.meson
146 lines (104 loc) · 5.07 KB
/
INSTALL.meson
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
==============================
Installing Freeciv with Meson:
==============================
This file describes how to compile and install Freeciv with the experimental
Meson build system support. Meson support is still work-in-progress. Fully
supported official way to compile and install Freeciv is still using
autotools as described in INSTALL.
Prerequisites:
==============
Freeciv has mostly the same prerequisites no matter if it's built
with autotools or meson and ninja. The only difference is the requirement
of the build system itself. Meson build does not need autotools, nor does
autotools build need meson. See main (autotools) INSTALL file for the
common prerequisites.
For the meson based build minimum version of meson is 0.48.0.
Overview:
=========
There's two parts in building freeciv. First one needs to configure the
build, and then execute it.
Build directory is configured with the 'meson' command. This is equivalent
of running './configure' in autotools based system. Meson does not allow
configuring the source directory. It always requires separate build directory.
Just create an empty directory, cd in to it, and run meson with path to
source directory as parameter. You can also give configure options in this
phase.
> mkdir build ; cd build
> meson ../freeciv-3.1.0
You need to configure the build directory just once. As source files get
updated, you can just execute incremental builds in the build directory.
You can have multiple build directories configured to use the same source
directory, typically set up with different configure options. You can
for example have separate build directories for different kinds of clients.
The build is executed with 'ninja' command. This is equivalent of running
'make' in autotools based system. It's also used to install freeciv
> ninja
> ninja install
Configure options:
==================
Configure options are given as '-D<option>=<value>'.
For example to set freeciv installation prefix as
'/home/cazfi/freeciv-install':
> meson ../src -Dprefix=/home/cazfi/freeciv-install
You can give configure options when you first set up the build directory
(like in example above), or you can change configure options for the
build directory later by 'meson configure' subcommand like this:
> meson configure -Dprefix=/home/cazfi/freeciv-install
You get full list of configure options by running 'meson configure'
subcommand without any configure options to set
> meson configure
Some of the configure options are implemented by meson itself for
all meson-based projects. Some options are implemented in freeciv build
system, and they are specific to freeciv.
Notable generic configure options:
----------------------------------
prefix (string):
The directory where Freeciv will be installed. You can install multiple
versions of Freeciv in parallel by using different prefix for each.
It's also a good idea to use prefix to avoid messing your system directories
debug (boolean):
Whether debug version of Freeciv should be built. While this is generic
option, some functionality in Freeciv depends on this setting.
Freeciv specific configure options:
-----------------------------------
ack_experimental (boolean):
As the official build system for freeciv is still autotools, user
has to acknowledge that they are using experimental build system when
using meson. This configure options must be set to 'true', or build
refuses to start
clients (array):
List of clients to build. To disable client build completely, give an
empty array ('-Dclients=[]'). Currently gtk3.22-, sdl2-client, and qt-client
builds are supported. By default builds only gtk3.22-client
fcmp (array):
List of freeciv modpack installer UIs to build. To disable their build
completely, give an empty array ('-Dfcmp=[]'). Currently gtk3, qt, gtk4,
and cli are supported. By default builds just gtk3 UI.
cacert-path (string):
Custom path to CA cert bundle. If this is empty, default path will be used.
This affects mostly downloading custom modpacks with modpack installer from
an 'https' URL.
json-protocol (boolean):
Build json-protocol support in. Json-protocol is an alternative to the default
raw-protocol between freeciv server and client.
syslua ('try'/'true'/'false')
Whether to use lua from the system, or to build lua included in freeciv
source tree. The default is 'try' to use lua from the system if possible,
but fallback to using freeciv's included one if not found from system.
audio (boolean):
Build sound support to the clients. Defaults to true.
ruledit (boolean):
Build ruleset editor. Defaults to true.
nls (boolean):
Build in Native Language Support. Defaults to true.
gitrev (boolean):
Include git commit id to the version string.
freeciv-web (boolean):
Build freeciv-web version instead of normal one.
run.sh
------
One of the build results is script named 'run.sh' in the build directory -
it does not get installed to the installation directory. This script can
be used to run freeciv executables from the build directory.
Give the executable name and parameters as parameters to ./run.sh, e.g.,
./run.sh freeciv-server --help