Mercurial > molko
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 |
rev | line source |
---|---|
233 | 1 ==================== |
2 Building from source | |
3 ==================== | |
4 | |
5 This page will explain how to build Molko's Adventure and libraries. | |
6 | |
7 Requirements | |
8 ------------ | |
9 | |
10 The following requirements are necessary to build the project. | |
11 | |
12 - C11 compiler: obviously, | |
13 - cmake_: the build system, | |
14 - `SDL2`_: the main game library, | |
15 - `SDL2_image`_: to load images, | |
16 - `SDL2_mixer`_: to play sounds and music, | |
17 - `SDL2_ttf`_: to open fonts, | |
18 - `Jansson`_: only for ``mlk-tileset`` and ``mlk-map`` tools. | |
19 | |
20 Platforms supported | |
21 ------------------- | |
22 | |
23 The project has been tested on the following platforms. | |
24 | |
25 - Windows 10: only with `MSYS2`_, Visual Studio **is not** supported yet. | |
26 - macOS 11.0 (Big Sur): using Xcode 12 and libraries from `brew`_, | |
27 - Linux: on Alpine Linux (musl) and Arch Linux. | |
28 | |
29 C and POSIX features | |
30 -------------------- | |
31 | |
32 Both of the API and the game are written using C99 and C11 but not all of the | |
33 features from both C versions are required. Here's a list of functionalities | |
34 that are required: | |
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 | 40 |
41 - `Compound literals`_, | |
42 - `inline`_ keyword. | |
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 | 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 | 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 | 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 | 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 | 78 |
79 .. note:: When a POSIX requirement isn't present it is replaced by a shim | |
80 specified for the platform. | |
81 | |
82 .. _Compound literals: https://en.cppreference.com/w/c/language/compound_literal | |
83 .. _Jansson: https://digip.org/jansson | |
84 .. _MSYS2: https://www.msys2.org | |
85 .. _POSIX: https://pubs.opengroup.org/onlinepubs/9699919799 | |
86 .. _SDL2: http://libsdl.org | |
87 .. _SDL2_image: https://www.libsdl.org/projects/SDL_image | |
88 .. _SDL2_mixer: https://www.libsdl.org/projects/SDL_mixer | |
89 .. _SDL2_ttf: https://www.libsdl.org/projects/SDL_ttf | |
90 .. _brew: https://brew.sh | |
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 | 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 | 96 .. _snprintf: https://en.cppreference.com/w/c/io/fprintf |
97 .. _stdbool.h: https://en.cppreference.com/w/c/language/arithmetic_types#Boolean_type | |
98 .. _stdnoreturn.h: https://en.cppreference.com/w/c/types |