annotate doc/build.rst @ 235:fb304a94a05c

rpg: prepare equipment
author David Demelier <markand@malikania.fr>
date Thu, 26 Nov 2020 18:00:45 +0100
parents 081c71d1f723
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
233
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 ====================
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 Building from source
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 ====================
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
4
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 This page will explain how to build Molko's Adventure and libraries.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
6
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 Requirements
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 ------------
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
9
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 The following requirements are necessary to build the project.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
11
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 - C11 compiler: obviously,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 - cmake_: the build system,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 - `SDL2`_: the main game library,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 - `SDL2_image`_: to load images,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 - `SDL2_mixer`_: to play sounds and music,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 - `SDL2_ttf`_: to open fonts,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 - `Jansson`_: only for ``mlk-tileset`` and ``mlk-map`` tools.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
19
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 Platforms supported
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 -------------------
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 The project has been tested on the following platforms.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 - Windows 10: only with `MSYS2`_, Visual Studio **is not** supported yet.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 - macOS 11.0 (Big Sur): using Xcode 12 and libraries from `brew`_,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 - Linux: on Alpine Linux (musl) and Arch Linux.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 C and POSIX features
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 --------------------
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 Both of the API and the game are written using C99 and C11 but not all of the
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 features from both C versions are required. Here's a list of functionalities
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 that are required:
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
235
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
36 From C99
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
37 ^^^^^^^^
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
38
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
39 Features:
233
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
40
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 - `Compound literals`_,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 - `inline`_ keyword.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
235
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
44 Headers:
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
45
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
46 - `stdbool.h`_
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
47
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
48 Functions:
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
49
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
50 - `snprintf`_
233
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
235
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
52 From C11
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
53 ^^^^^^^^
233
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
235
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
55 - `stdnoreturn.h`_
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
56
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
57 From POSIX
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
58 ^^^^^^^^^^
233
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
235
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
60 Expectations:
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
61
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
62 - We use a few parts of POSIX_ specification but try to keep its use limited as
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
63 not all platforms are POSIX compliant.
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
64 - We assume that ``fopen``, ``malloc`` and friends set errno in case of failures.
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
65
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
66 Functions:
233
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
235
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
68 - `dirname`_,
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
69 - `getopt`_.
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
70
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
71 Headers:
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
72
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
73 - `libgen.h`_
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
74
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
75 Macros:
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
76
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
77 - PATH_MAX: in limits.h.
233
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
78
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 .. note:: When a POSIX requirement isn't present it is replaced by a shim
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 specified for the platform.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 .. _Compound literals: https://en.cppreference.com/w/c/language/compound_literal
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 .. _Jansson: https://digip.org/jansson
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 .. _MSYS2: https://www.msys2.org
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 .. _POSIX: https://pubs.opengroup.org/onlinepubs/9699919799
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 .. _SDL2: http://libsdl.org
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 .. _SDL2_image: https://www.libsdl.org/projects/SDL_image
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 .. _SDL2_mixer: https://www.libsdl.org/projects/SDL_mixer
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 .. _SDL2_ttf: https://www.libsdl.org/projects/SDL_ttf
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 .. _brew: https://brew.sh
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 .. _cmake: http://cmake.org
235
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
92 .. _dirname: https://pubs.opengroup.org/onlinepubs/9699919799/functions/dirname.html
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
93 .. _getopt: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html
233
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 .. _inline: https://en.cppreference.com/w/c/language/inline
235
fb304a94a05c rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents: 233
diff changeset
95 .. _libgen.h: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/libgen.h.html
233
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 .. _snprintf: https://en.cppreference.com/w/c/io/fprintf
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 .. _stdbool.h: https://en.cppreference.com/w/c/language/arithmetic_types#Boolean_type
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 .. _stdnoreturn.h: https://en.cppreference.com/w/c/types