11 KiB
Building from Source
Note: If you do not use git to manage the source you must provide the version to CMake manually:
cmake .. -DVERSION_NUM=1.0.0 -DVERSION_SUFFIX=FFFFFFF -DCMAKE_BUILD_TYPE=Release
Linux
Note that pkg-config is an optional dependency for finding libsodium,
although we have a fallback if necessary.
Installing dependencies on Debian and Ubuntu
sudo apt-get install cmake g++ libsdl2-ttf-dev libsodium-dev libpng-dev
Installing dependencies on Fedora
sudo dnf install cmake gcc-c++ glibc-devel SDL2-devel SDL2_ttf-devel libsodium-devel libpng-devel libasan libubsan
Compiling
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
macOS
Make sure you have Homebrew installed, then run:
brew bundle install
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -j $(sysctl -n hw.physicalcpu)
FreeBSD
Installing dependencies
pkg install cmake sdl2_ttf libsodium libpng
Compiling
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -j $(sysctl -n hw.ncpu)
NetBSD
Installing dependencies
pkgin install cmake SDL2_ttf libsodium libpng
Compiling
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -j $(sysctl -n hw.ncpu)
OpenBSD
Installing dependencies
pkg_add cmake sdl2-ttf libsodium libpng gmake
Compiling
cd build
cmake .. -DCMAKE_MAKE_PROGRAM=gmake -DCMAKE_BUILD_TYPE=Release
cmake --build . -j $(sysctl -n hw.ncpuonline)
Windows via MinGW
Installing dependencies on WSL, Debian and Ubuntu
32-bit
Download the 32bit MinGW Development Libraries of SDL2, SDL2_ttf and Libsodium as well as headers for zlib and place them in /usr/i686-w64-mingw32. This can be done automatically by running Packaging/windows/mingw-prep.sh.
sudo apt-get install cmake gcc-mingw-w64-i686 g++-mingw-w64-i686 pkg-config-mingw-w64-i686
64-bit
Download the 64bit MinGW Development Libraries of SDL2, SDL2_ttf and Libsodium as well as headers for zlib and place them in /usr/x86_64-w64-mingw32. This can be done automatically by running Packaging/windows/mingw-prep64.sh.
sudo apt-get install cmake gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 pkg-config-mingw-w64-x86-64
Compiling
32-bit
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc.cmake -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
64-bit
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc64.cmake -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
Note: If your (i686|x86_64)-w64-mingw32 directory is not in /usr (e.g. when on Debian), the mingw-prep scripts and the CMake
command won't work. You need adjust the mingw-prep scripts and pass -DCROSS_PREFIX=/path to CMake to set the path to the parent
of the (i686|x86_64)-w64-mingw32 directory.
Windows via Visual Studio
Installing dependencies
Make sure to install the C++ CMake tools for Windows component for Visual Studio.
Install vcpkg following the instructions from https://github.com/microsoft/vcpkg#quick-start. Don't forget to perform user-wide integration step for additional convenience.
Compiling
- Through Open->CMake in Visual Studio
- Go to
File -> Open -> CMake, selectCMakeLists.txtfrom the project root. - Select
Build devilution.exefrom theBuildmenu.
- Through cmake-gui
- Input the path to devilutionx source directory at
Where is the source code:field. - Input the path where the binaries would be placed at
Where to build the binaries:field. If you want to place them inside source directory it's preferable to do so inside directory calledbuildto avoid the binaries being added to the source tree. - It's recommended to input
Win32inOptional Platform for Generator, otherwise it will default to x64 build. - In case you're using
vcpkgselectSpecify toolchain file for cross-compilingand select the filescripts/buildsystems/vcpkg.cmakefromvcpkgdirectory otherwise just go withUse default native compilers. - In case you need to select any paths to dependencies manually do this right in cmake-gui window.
- Press
Generateand open produced.slnfile using Visual Studio. - Use build/debug etc. commands inside Visual Studio Solution like with any normal Visual Studio project.
Nintendo Switch
Run:Packaging/switch/build.sh
This will install the Switch devkit and build a DevilutionX Switch package. If you already have the devkit installed, or are on a non-Debian system, pass the the devkit path to the script like this:
DEVKITPRO=<path to devkit> Packaging/switch/build.sh
The nro-file will be generated in the build folder. Test with an emulator (RyuJinx) or real hardware.
Android
Installing dependencies
Install Android Studio After first launch configuration, go to "Configure -> SDK Manager -> SDK Tools". Select "NDK (Side by side)" and "CMake" checkboxes and click "OK".
Compiling
Click "Open Existing Project" and choose "android-project" folder in DevilutionX root folder.
Wait until Gradle sync is completed.
In Android Studio, go to "Build -> Make Project" or use the shortcut Ctrl+F9
You can find the compiled APK in /android-project/app/build/outputs/apk/
Nintendo 3DS
Installing dependencies
https://devkitpro.org/wiki/Getting_Started
-
Install (dkp-)pacman: https://devkitpro.org/wiki/devkitPro_pacman
-
Install required packages with (dkp-)pacman:
sudo (dkp-)pacman -S \
devkitARM general-tools 3dstools devkitpro-pkgbuild-helpers \
libctru citro3d 3ds-sdl 3ds-sdl_ttf 3ds-freetype 3ds-libpng \
3ds-cmake 3ds-pkg-config picasso 3dslink
- Download or compile bannertool and makerom
- Copy binaries to:
/opt/devkitpro/tools/bin/
- Copy binaries to:
Compiling
If you are compiling using MSYS2, you will need to run export MSYS2_ARG_CONV_EXCL=-D before compiling.
Otherwise, MSYS will sanitize file paths in compiler flags which will likely lead to errors in the build.
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
The output files will be generated in the build folder.
PlayStation Vita
Compiling
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake -DCMAKE_BUILD_TYPE=Release
make
Haiku
Installing dependencies on 32 bit Haiku
pkgman install cmake_x86 devel:libsdl2_x86 devel:libsdl2_ttf_x86 devel:libsodium_x86 devel:libpng_x86
Installing dependencies on 64 bit Haiku
pkgman install cmake devel:libsdl2 devel:libsdl2_ttf devel:libsodium devel:libpng
Compiling on 32 bit Haiku
cd build
setarch x86 #Switch to secondary compiler toolchain (GCC8+)
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -j $(nproc)
Compiling on 64 bit Haiku
No setarch required, as there is no secondary toolchain on x86_64, and the primary is GCC8+
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -j $(nproc)
OpenDingux / RetroFW
DevilutionX uses buildroot to build packages for OpenDingux and RetroFW.
The build script does the following:
- Downloads and configures the buildroot if necessary.
- Builds the executable (using CMake).
- Packages the executable and all related resources into an
.ipkor.opkpackage.
The buildroot uses ~2.5 GiB of disk space and can take 20 minutes to build.
For OpenDingux builds mksquashfs needs to be installed.
To build, run the following command
Packaging/OpenDingux/build.sh <platform>
Replace <platform> with one of: retrofw, rg350, or gkd350h.
This prepares and uses the buildroot at $HOME/buildroot-$PLATFORM-devilutionx.
End-user manuals are available here:
Clockwork PI GameShell
You can either call
Packaging/cpi-gamesh/build.sh
to install dependencies and build the code.
Or you create a new directory under /home/cpi/apps/Menu and copy the file there. After restarting the UI, you can download and compile the game directly from the device itself. See the readme for more details.
Amiga via Docker
Build the container from the repo root
docker build -f Packaging/amiga/Dockerfile -t devilutionx-amiga .
Build DevilutionX Amiga binary
docker run --rm -v "${PWD}:/work" devilutionx-amiga
sudo chown -R "${USER}:" build-amiga
The command above builds DevilutionX in release mode. For other build options, you can run the container interactively:
docker run -ti --rm -v "${PWD}:/work" devilutionx-amiga bash
See the CMD in Packaging/amiga/Dockerfile for reference.
Copy the necessary files
Outside of the Docker container, from the DevilutionX directory, run:
sudo chown -R "${USER}:" build-amiga
cp Packaging/amiga/devilutionx.info Packaging/amiga/LiberationSerif-Bold.ttf build-amiga/
To actually start DevilutionX, increase the stack size to 50KiB in Amiga. You can do this by selecting the DevilutionX icon, then hold right mouse button and select Icons -> Information in the top menu.
CMake build options
General
-DCMAKE_BUILD_TYPE=Releasechanged build type to release and optimize for distribution.-DNONET=ONdisable network support, this also removes the need for the ASIO and Sodium.-DUSE_SDL1=ONbuild for SDL v1 instead of v2, not all features are supported under SDL v1, notably upscaling.-DCMAKE_TOOLCHAIN_FILE=../CMake/32bit.cmakegenerate 32bit builds on 64bit platforms (remember to use thelinux32command if on Linux).
Debug builds
-DDEBUG=OFFdisable debug mode of the Diablo engine.-DASAN=OFFdisable address sanitizer.-DUBSAN=OFFdisable undefined behavior sanitizer.