Mercurial > molko
annotate doc/docs/install.md @ 591:bca466732620
misc: update .hgignore
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 20 Mar 2023 21:12:15 +0100 |
parents | 19782ea1cf4a |
children |
rev | line source |
---|---|
239
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 # Installation |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 |
366
19782ea1cf4a
misc: start rebranding
David Demelier <markand@malikania.fr>
parents:
240
diff
changeset
|
3 This page will explain how to build Molko's Emgi and libraries. |
239
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 ## Requirements |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 The following requirements are necessary to build the project. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 - C11 compiler: obviously, |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 - [CMake][]: the build system, |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 - [SDL2][]: the main game library, |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 - [SDL2_image][]: to load images, |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 - [SDL2_mixer][]: to play sounds and music, |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 - [SDL2_ttf][]: to open fonts, |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 - [Jansson][]: only for `mlk-tileset` and `mlk-map` tools. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 ## Platforms supported |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 The project has been tested on the following platforms. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 - Windows 10: only with [MSYS2][], Visual Studio **is not** supported yet. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 - macOS 11.0 (Big Sur): using Xcode 12 and libraries from [brew][], |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 - Linux: on Alpine Linux (musl) and Arch Linux (glibc). |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 ## C and POSIX features |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 Both of the API and the game are written using C99 and C11 but not all of the |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 features from both C versions are required. Here's a list of functionalities |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 that are required: |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 ### From C99 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 Features: |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 - [Compound literals][] |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 - [inline] keyword |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 Headers: |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 - [stdbool.h][] |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 Functions: |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 - [snprintf][] |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 - [vsnprintf][] |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 ### From C11 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 - [stdnoreturn.h][] |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 ### From POSIX |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 Expectations: |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 - We use a few parts of [POSIX][] specification but try to keep its use limited |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 as not all platforms are POSIX compliant. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 - We assume that `fopen`, `malloc` and friends set errno in case of failures. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 Functions: |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 - [dirname][] |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 - [getopt][] |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 Headers: |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 - [libgen.h][] |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 Macros: |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 - `PATH_MAX`: in limits.h. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 !!! note |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 When a POSIX requirement isn't present it is replaced by a shim |
240 | 74 specified for the platform. |
239
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 ## Building with CMake |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 Enter the source directory and type the following commands. In this example we |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 will use the "Unix Makefiles". |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 mkdir build |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 cd build |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 cmake .. -DCMAKE_BUILD_TYPE=Debug |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 make |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 !!! note |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 If you use a CMake generator that supports configuration types (e.g. Xcode, |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 Visual Studio) do not set `CMAKE_BUILD_TYPE`. |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 ### Available options |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 The following CMake options are availble: |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 `MOLKO_WITH_DOC` |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 : Enable documentation (default: On). |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 `MOLKO_WITH_EXAMPLES` |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 : Build examples (default: On). |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 `MOLKO_WITH_TESTS` |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 : Build tests (default: On). |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 [CMake]: http://cmake.org |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 [Compound literals]: https://en.cppreference.com/w/c/language/compound_literal |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 [Jansson]: https://digip.org/jansson |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 [MSYS2]: https://www.msys2.org |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799 |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 [SDL2]: http://libsdl.org |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 [SDL2_image]: https://www.libsdl.org/projects/SDL_image |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 [SDL2_mixer]: https://www.libsdl.org/projects/SDL_mixer |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 [SDL2_ttf]: https://www.libsdl.org/projects/SDL_ttf |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 [brew]: https://brew.sh |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 [dirname]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/dirname.html |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 [getopt]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 [inline]: https://en.cppreference.com/w/c/language/inline |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 [libgen.h]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/libgen.h.html |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 [snprintf]: https://en.cppreference.com/w/c/io/fprintf |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 [vsnprintf]: https://en.cppreference.com/w/c/io/fprintf |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 [stdbool.h]: https://en.cppreference.com/w/c/language/arithmetic_types#Boolean_type |
d47e70da760e
doc: switch to mkdocs+doxybook2, closes #2516 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 [stdnoreturn.h]: https://en.cppreference.com/w/c/types |