]> git.jsancho.org Git - lugaru.git/blob - COMPILING.md
Added braces to all statements with clang-tidy and ran clang-format again
[lugaru.git] / COMPILING.md
1 # Compiling
2
3 As it stands, the version of Lugaru in this repository supports Linux, OSX
4 and Windows. Not all toolchains are tested, thus we would welcome help from
5 new contributors especially regarding MSVC and OSX support.
6
7 ## Common dependencies
8
9 You will need the following development libraries and tools, usually
10 available via your package manager (dnf, urpmi, apt, brew, etc.):
11
12 - CMake
13 - SDL2
14 - Mesa OpenGL Utility library (GLU)
15 - LibJPEG (TurboJPEG)
16 - LibPNG
17 - OpenAL Soft
18 - Ogg, Vorbis and Vorbisfile
19 - Zlib
20
21 ## GNU/Linux
22
23 Both GCC and Clang are supported as compilers. Define the `CC` and `CXX` env
24 variables according to the compiler you want to use, if not the default one.
25 Then build with:
26
27 ```
28 mkdir build && cd build
29 cmake ..
30 make
31 ```
32
33 The resulting `lugaru` binary will expect to find the `Data/` folder next to
34 it, so either copy `build/lugaru` in the main directory, or create a symbolic
35 link to run the game.
36
37 ### Packaging
38
39 If you want to package Lugaru for a GNU/Linux distribution, or if you want to
40 install it system-wide locally, you need to set the `SYSTEM_INSTALL` CMake
41 option, and (optionally) define the CMAKE_INSTALL_BINDIR and _DATADIR if they
42 differ from the default ones (`bin` and `share` appended to the prefix).
43 Example:
44
45 ```
46 mkdir build && cd build
47 cmake -DSYSTEM_INSTALL=ON \
48       -DCMAKE_INSTALL_BINDIR=games \
49       -DCMAKE_INSTALL_DATADIR=share/games \
50       ..
51 make
52 sudo make install
53 ```
54
55 ## Mac OSX
56
57 The instructions are similar to the GNU/Linux ones, provided you have
58 installed Xcode and the required dependencies (e.g. via homebrew).
59
60 ## Windows
61
62 As of now, only MinGW32 and MinGW64 are supported, and were only tested by
63 cross-compiling from Linux.
64
65 ### MSVC
66
67 Help needed :)
68
69 ### MinGW on Windows
70
71 Help needed :)
72
73 ### Cross-compiling from Linux
74
75 Cross-compiling for Windows using MinGW32 and MinGW64 was tested on Fedora
76 and Mageia. The instructions may vary for other distros, do not hesitate to
77 send a merge request to update them if need be.
78
79 You will need to install the `mingw32-` or `mingw64-` variants of the
80 dependencies listed above.
81
82 #### MinGW32
83
84 First you will need to setup some environment variables:
85 ```
86 export PKG_CONFIG_LIBDIR="/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig:/usr/i686-w64-mingw32/sys-root/mingw/share/pkgconfig"
87 export PATH=/usr/i686-w64-mingw32/bin:$PATH
88 ```
89
90 Then build:
91 ```
92 mkdir build-mingw32 && cd build-mingw32
93 cmake .. -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=install
94 make
95 make install
96 ```
97
98 The `make install` step should copy the `Data/` and required DLLs from the
99 system to `build-mingw32/install`.
100
101 #### MinGW64
102
103 The instructions are similar to those for MinGW32:
104
105 ```
106 export PKG_CONFIG_LIBDIR="/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig:/usr/x86_64-w64-mingw32/sys-root/mingw/share/pkgconfig"
107 export PATH=/usr/x86_64-w64-mingw32/bin:$PATH
108 ```
109 ```
110 mkdir build-mingw64 && cd build-mingw64
111 cmake .. -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-mingw64.cmake -DCMAKE_INSTALL_PREFIX=install
112 make
113 make install
114 ```