Skip to content

Latest commit

 

History

History
113 lines (84 loc) · 2.99 KB

COMPILING.md

File metadata and controls

113 lines (84 loc) · 2.99 KB

Compiling

As it stands, the version of Lugaru in this repository supports Linux, OSX and Windows. Not all toolchains are tested, thus we would welcome help from new contributors especially regarding MSVC and OSX support.

Common dependencies

You will need the following development libraries and tools, usually available via your package manager (dnf, urpmi, apt, brew, etc.):

  • CMake
  • SDL2
  • Mesa OpenGL Utility library (GLU)
  • LibJPEG (TurboJPEG)
  • LibPNG
  • OpenAL Soft
  • Ogg, Vorbis and Vorbisfile

GNU/Linux

Both GCC and Clang are supported as compilers. Define the CC and CXX env variables according to the compiler you want to use, if not the default one. Then build with:

mkdir build && cd build
cmake ..
make

The resulting lugaru binary will expect to find the Data/ folder next to it, so either copy build/lugaru in the main directory, or create a symbolic link to run the game.

Packaging

If you want to package Lugaru for a GNU/Linux distribution, or if you want to install it system-wide locally, you need to set the SYSTEM_INSTALL CMake option, and (optionally) define the CMAKE_INSTALL_BINDIR and _DATADIR if they differ from the default ones (bin and share appended to the prefix). Example:

mkdir build && cd build
cmake -DSYSTEM_INSTALL=ON \
      -DCMAKE_INSTALL_BINDIR=games \
      -DCMAKE_INSTALL_DATADIR=share/games \
      ..
make
sudo make install

Mac OSX

The instructions are similar to the GNU/Linux ones, provided you have installed Xcode and the required dependencies (e.g. via homebrew).

Windows

As of now, only MinGW32 and MinGW64 are supported, and were only tested by cross-compiling from Linux.

MSVC

Help needed :)

MinGW on Windows

Help needed :)

Cross-compiling from Linux

Cross-compiling for Windows using MinGW32 and MinGW64 was tested on Fedora and Mageia. The instructions may vary for other distros, do not hesitate to send a merge request to update them if need be.

You will need to install the mingw32- or mingw64- variants of the dependencies listed above.

MinGW32

First you will need to setup some environment variables:

export PKG_CONFIG_LIBDIR="/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig:/usr/i686-w64-mingw32/sys-root/mingw/share/pkgconfig"
export PATH=/usr/i686-w64-mingw32/bin:$PATH

Then build:

mkdir build-mingw32 && cd build-mingw32
cmake .. -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=install
make
make install

The make install step should copy the Data/ and required DLLs from the system to build-mingw32/install.

MinGW64

The instructions are similar to those for MinGW32:

export PKG_CONFIG_LIBDIR="/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig:/usr/x86_64-w64-mingw32/sys-root/mingw/share/pkgconfig"
export PATH=/usr/x86_64-w64-mingw32/bin:$PATH
mkdir build-mingw64 && cd build-mingw64
cmake .. -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-mingw64.cmake -DCMAKE_INSTALL_PREFIX=install
make
make install