diff doc/docs/install.md @ 239:d47e70da760e

doc: switch to mkdocs+doxybook2, closes #2516 @2h
author David Demelier <markand@malikania.fr>
date Fri, 27 Nov 2020 17:00:30 +0100
parents
children d7e5e02f70a1
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/docs/install.md	Fri Nov 27 17:00:30 2020 +0100
@@ -0,0 +1,120 @@
+# Installation
+
+This page will explain how to build Molko's Adventure and libraries.
+
+## Requirements
+
+The following requirements are necessary to build the project.
+
+- C11 compiler: obviously,
+- [CMake][]: the build system,
+- [SDL2][]: the main game library,
+- [SDL2_image][]: to load images,
+- [SDL2_mixer][]: to play sounds and music,
+- [SDL2_ttf][]: to open fonts,
+- [Jansson][]: only for `mlk-tileset` and `mlk-map` tools.
+
+## Platforms supported
+
+The project has been tested on the following platforms.
+
+- Windows 10: only with [MSYS2][], Visual Studio **is not** supported yet.
+- macOS 11.0 (Big Sur): using Xcode 12 and libraries from [brew][],
+- Linux: on Alpine Linux (musl) and Arch Linux (glibc).
+
+## C and POSIX features
+
+Both of the API and the game are written using C99 and C11 but not all of the
+features from both C versions are required. Here's a list of functionalities
+that are required:
+
+### From C99
+
+Features:
+
+- [Compound literals][]
+- [inline] keyword
+
+Headers:
+
+- [stdbool.h][]
+
+Functions:
+
+- [snprintf][]
+- [vsnprintf][]
+
+### From C11
+
+- [stdnoreturn.h][]
+
+### From POSIX
+
+Expectations:
+
+- We use a few parts of [POSIX][] specification but try to keep its use limited
+  as not all platforms are POSIX compliant.
+- We assume that `fopen`, `malloc` and friends set errno in case of failures.
+
+Functions:
+
+- [dirname][]
+- [getopt][]
+
+Headers:
+
+- [libgen.h][]
+
+Macros:
+
+- `PATH_MAX`: in limits.h.
+
+!!! note
+    When a POSIX requirement isn't present it is replaced by a shim
+       specified for the platform.
+
+## Building with CMake
+
+Enter the source directory and type the following commands. In this example we
+will use the "Unix Makefiles".
+
+    mkdir build
+    cd build
+    cmake .. -DCMAKE_BUILD_TYPE=Debug
+    make
+
+!!! note
+    If you use a CMake generator that supports configuration types (e.g. Xcode,
+    Visual Studio) do not set `CMAKE_BUILD_TYPE`.
+
+### Available options
+
+The following CMake options are availble:
+
+`MOLKO_WITH_DOC`
+:   Enable documentation (default: On).
+
+`MOLKO_WITH_EXAMPLES`
+:   Build examples (default: On).
+
+`MOLKO_WITH_TESTS`
+:   Build tests (default: On).
+
+[CMake]: http://cmake.org
+[Compound literals]: https://en.cppreference.com/w/c/language/compound_literal
+[Jansson]: https://digip.org/jansson
+[MSYS2]: https://www.msys2.org
+[POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799
+[SDL2]: http://libsdl.org
+[SDL2_image]: https://www.libsdl.org/projects/SDL_image
+[SDL2_mixer]: https://www.libsdl.org/projects/SDL_mixer
+[SDL2_ttf]: https://www.libsdl.org/projects/SDL_ttf
+[brew]: https://brew.sh
+[dirname]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/dirname.html
+[getopt]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html
+[inline]: https://en.cppreference.com/w/c/language/inline
+[libgen.h]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/libgen.h.html
+[snprintf]: https://en.cppreference.com/w/c/io/fprintf
+[vsnprintf]: https://en.cppreference.com/w/c/io/fprintf
+[stdbool.h]: https://en.cppreference.com/w/c/language/arithmetic_types#Boolean_type
+[stdnoreturn.h]: https://en.cppreference.com/w/c/types