Note: If you do not use git to manage the source you must provide the verion to CMake manually:
cmake .. -DVERSION_NUM=1.0.0 -DVERSION_SUFFIX=FFFFFFF
Linux
sudo apt-get install cmake g++ libsdl2-mixer-dev libsdl2-ttf-dev libsodium-dev
sudo dnf install cmake glibc-devel SDL2-devel SDL2_ttf-devel SDL2_mixer-devel libsodium-devel libasan libubsan
cd build
cmake ..
make -j$(nproc)
macOS
Make sure you have Homebrew installed, then run:
brew bundle install
cd build
cmake ..
cmake --build . -j $(sysctl -n hw.physicalcpu)
FreeBSD
pkg install cmake sdl2_mixer sdl2_ttf libsodium
cd build
cmake ..
cmake --build . -j $(sysctl -n hw.ncpu)
NetBSD
pkgin install cmake SDL2_mixer SDL2_ttf libsodium
cd build
cmake ..
cmake --build . -j $(sysctl -n hw.ncpu)
OpenBSD
pkg_add cmake sdl2-mixer sdl2-ttf libsodium gmake
cd build
cmake -DCMAKE_MAKE_PROGRAM=gmake ..
cmake --build . -j $(sysctl -n hw.ncpuonline)
Windows via MinGW
Download and place the 32bit MinGW Development Libraries of SDL2, SDL2_mixer, SDL2_ttf and Libsodium 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
Download and place the 64bit MinGW Development Libraries of SDL2, SDL2_mixer, SDL2_ttf and Libsodium 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
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc.cmake ..
make -j$(nproc)
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../CMake/mingwcc64.cmake ..
make -j$(nproc)
Windows via Visual Studio
Make sure to install the C++ CMake tools for Windows
component for Visual Studio.
- Using vcpkg (recommended)
-
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.
-
Install required dependencies by executing the following command (via cmd or powershell):
For the 64-bit version of the dependencies please run this command:
vcpkg install sdl2:x64-windows sdl2-mixer:x64-windows sdl2-ttf:x64-windows libsodium:x64-windows
For the 32-bit version of the dependencies please run this command:
vcpkg install sdl2:x86-windows sdl2-mixer:x86-windows sdl2-ttf:x86-windows libsodium:x86-windows
- Manually
- Download and place the MSVC Development Libraries of SDL2, SDL2_mixer, SDL2_ttf and Libsodium in
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps\
. - If dependencies are not found or you wish to place them in other location - configure required path variables in "Manage Configurations..." dialog inside Visual Studio or in cmake-gui.
- Through Open->CMake in Visual Studio
- Go to
File -> Open -> CMake
, selectCMakeLists.txt
from the project root. - Select
Build devilution.exe
from theBuild
menu.
- 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 calledbuild
to avoid the binaries being added to the source tree. - It's recommended to input
Win32
inOptional Platform for Generator
, otherwise it will default to x64 build. - In case you're using
vcpkg
selectSpecify toolchain file for cross-compiling
and select the filescripts/buildsystems/vcpkg.cmake
fromvcpkg
directory 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
Generate
and open produced.sln
file 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.
Nintendo 3DS
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-sdl_mixer \
3ds-freetype 3ds-libogg 3ds-libvorbisidec 3ds-mikmod
- Download or compile bannertool and makerom
- Copy binaries to:
/opt/devkitpro/tools/bin/
- Copy binaries to:
cd build
cmake .. -DNIGHTLY_BUILD=ON -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/3ds.cmake
make -j$(nproc)
The output-files will be generated in the build folder.
PlayStation Vita
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake -DCMAKE_BUILD_TYPE=Release ..
make
Haiku
pkgman install cmake_x86 devel:libsdl2_x86 devel:libsdl2_mixer_x86 devel:libsdl2_ttf_x86 devel:libsodium_x86
pkgman install cmake devel:libsdl2 devel:libsdl2_mixer devel:libsdl2_ttf devel:libsodium
cd build
setarch x86 #Switch to secondary compiler toolchain (GCC8+)
cmake ..
cmake --build . -j $(nproc)
No setarch required, as there is no secondary toolchain on x86_64, and the primary is GCC8+
cd build
cmake ..
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
.ipk
or.opk
package.
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
docker build -f Packaging/amiga/Dockerfile -t devilutionx-amiga .
docker run --rm -v "${PWD}:/work" devilutionx-amiga
sudo chown "${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.
Outside of the Docker container, from the DevilutionX directory, run:
cp Packaging/amiga/devilutionx.info Packaging/amiga/LiberationSerif-Bold.ttf build-amiga/
sudo chown "${USER}:" 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
-DBINARY_RELEASE=ON
changed build type to release and optimize for distribution.-DNONET=ON
disable network support, this also removes the need for the ASIO and Sodium.-DUSE_SDL1=ON
build for SDL v1 instead of v2, not all features are supported under SDL v1, notably upscaling.-DCMAKE_TOOLCHAIN_FILE=../CMake/32bit.cmake
generate 32bit builds on 64bit platforms (remember to use thelinux32
command if on Linux).-DCROSS_PREFIX=/path/to/prefix
set the path to thei686-w64-mingw32
directory.
-DDEBUG=OFF
disable debug mode of the Diablo engine.-DASAN=OFF
disable address sanitizer.-DUBSAN=OFF
disable undefined behavior sanitizer.