annotate doc/build.rst @ 233:081c71d1f723

doc: add build.rst
author David Demelier <markand@malikania.fr>
date Thu, 26 Nov 2020 13:33:16 +0100
parents
children fb304a94a05c
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
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 From C99:
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 - `Compound literals`_,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 - `stdbool.h`_ header,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 - `snprintf`_ function and friends,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 - `inline`_ keyword.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 From C11:
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 - `stdnoreturn.h`_ header.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 From POSIX:
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 We use a few parts of POSIX_ specification but try to keep its use limited as
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 not all platforms are POSIX compliant.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 - `getopt(3)`_: to parse arguments,
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 - We assume that ``fopen``, ``malloc`` and friends set errno in case of failures.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 .. 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
56 specified for the platform.
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 .. _Compound literals: https://en.cppreference.com/w/c/language/compound_literal
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 .. _Jansson: https://digip.org/jansson
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 .. _MSYS2: https://www.msys2.org
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 .. _POSIX: https://pubs.opengroup.org/onlinepubs/9699919799
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 .. _SDL2: http://libsdl.org
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 .. _SDL2_image: https://www.libsdl.org/projects/SDL_image
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 .. _SDL2_mixer: https://www.libsdl.org/projects/SDL_mixer
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 .. _SDL2_ttf: https://www.libsdl.org/projects/SDL_ttf
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 .. _brew: https://brew.sh
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 .. _cmake: http://cmake.org
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 .. _getopt(3): https://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 .. _inline: https://en.cppreference.com/w/c/language/inline
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 .. _snprintf: https://en.cppreference.com/w/c/io/fprintf
081c71d1f723 doc: add build.rst
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 .. _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
72 .. _stdnoreturn.h: https://en.cppreference.com/w/c/types