81 lines
2.8 KiB
Markdown
81 lines
2.8 KiB
Markdown
# Compiling jujube
|
|
|
|
jujube uses the meson build system.
|
|
Only time will tell if this turned out to be a wise choice, I wanted to try something other than CMake.
|
|
|
|
Regardless of the target platform the build steps are pretty much the same :
|
|
|
|
0. Get an up-to-date C++ compiler (compatible with C++17 at least)
|
|
0. Install (or build) the dependencies :
|
|
- **meson** : the build system, installation explained [here](https://mesonbuild.com/Quick-guide.html)
|
|
- **SFML 2.5.1** : the game framework
|
|
- *possibly others*
|
|
0. Download the code from the repo
|
|
0. Go to your terminal and type
|
|
```bash
|
|
$ cd {jujube repo root}
|
|
$ CXX={your compiler} meson build
|
|
$ cd build
|
|
$ ninja
|
|
```
|
|
(Replacing the `{...}`s with what you chose)
|
|
|
|
and voila !
|
|
|
|
If you managed to compile jujube with another toolchain I did not mention here you're very welcome to do a PR appending the relevant parts of this doc.
|
|
|
|
## Linux
|
|
|
|
You need at least gcc `9.0.0`
|
|
|
|
The meson install is pretty straightforward.
|
|
|
|
For SFML, If you want to use another compiler than the one shipped with your system you may need to re-build SFML yourself using the compiler you chose. [Here's](https://www.sfml-dev.org/tutorials/2.5/compile-with-cmake.php) their docs. Don't forget to manually specify the compiler (and maybe the library install path) at the configuration step (when you run `meson build`).
|
|
|
|
## Windows
|
|
|
|
This section explains how to setup MSYS2 to compile jujube. MSYS2 is most likely *not* the only way to go but it's my favorite way of getting a very recent gnu-friendly toolchain on windows.
|
|
|
|
### MSYS2
|
|
|
|
Installing MSYS2 is extremly straightforward and detailed [on their website](https://www.msys2.org/).
|
|
Once you're done `pacman -Syu`ing and `pacman -Su`ing your system you can install the required packages for jujube :
|
|
|
|
```bash
|
|
$ pacman -S meson mingw-w64-x86_64-toolchain mingw-w64-x86_64-meson mingw-w64-x86_64-sfml mingw-w64-x86_64-cairo
|
|
```
|
|
|
|
then you can just use the same build commands as the Linux section but from the `MSYS2 MinGW 64-bit` terminal
|
|
|
|
## MacOS
|
|
### clang-9 from brew's llvm package
|
|
If you do not have it already, install [Homebrew](https://brew.sh/).
|
|
When it's done use it to install basically everything :
|
|
|
|
```bash
|
|
$ brew install llvm sfml openal-soft
|
|
```
|
|
|
|
Once it's done (llvm is huge, go do something else while it installs), open a terminal, `cd` to your local copy of jujube's repo and use this carefully crafted command to setup your build folder :
|
|
|
|
```bash
|
|
$ LLVM=$(brew --prefix llvm) \
|
|
CC=$LLVM/bin/clang \
|
|
CXX=$LLVM/bin/clang++ \
|
|
LD=$LLVM/bin/ld.lld \
|
|
AR=$LLVM/bin/llvm-ar \
|
|
RANLIB=$LLVM/bin/llvm-ranlib \
|
|
PKG_CONFIG_PATH+=$(brew --prefix sfml)/lib/pkgconfig:$(brew --prefix openal-soft)/lib/pkgconfig \
|
|
LDFLAGS+="-L$LLVM/lib -Wl,-rpath,$LLVM/lib" \
|
|
CPPFLAGS+="-I$LLVM/include -I$LLVM/include/c++/v1/" \
|
|
meson build
|
|
```
|
|
|
|
then just
|
|
|
|
```bash
|
|
$ cd build
|
|
$ ninja
|
|
```
|
|
|