supertux
|
Last update: May 19, 2023
Quick links:
We try to provide precompiled binaries of SuperTux for a number of platforms. You should check https://supertux.org/download.html for the packages and instructions on how to install them. If there are no prebuilt binaries for your platform, then you might still be able to compile the source code yourself. In this case read the next sections.
We also provide binaries automatically generated as code is added to the repository. These are built using GitHub Actions and are generally used to validate code quality, but as they produce binaries, those can be downloaded and installed like any release. You may find the nightlies at https://download.supertux.org/.
Alternatively, if you have a GitHub account, you may find nightlies directly on GitHub either here for common platforms (Windows, Mac, Linux) or here for the rest (FreeBSD, WASM, Ubuntu Touch); click on any entry in the list on the right (topmost = most recent), then scroll down to the Artifacts section. Note that this only works if you are logged in to GitHub.
Tip: You may take inspiration from the workflow files.
To build SuperTux from source, you need to have a number of tools and libraries installed. Note that most of these things should already be available prepackaged and optimized for your distribution, it is recommended that you check your distribution first before downloading from the websites. You can also check https://github.com/SuperTux/wiki/blob/master/Building-SuperTux.md for up-to-date build instructions for a variety of different platforms and distributions.
build-essential
on Debian-based distros, base-devel
on Arch-based distros and the Xcode Command Line tools on OS X.cmake
Note I: for any of the above listed libraries (OpenGL, SDL2, SDL2_image, OpenAL, GLEW/glbinding, cURL, libogg and libvorbis), you should also have development headers installed. Debian-based distributions have -devel
packages containing the mentioned headers, on Arch Linux these should be included in the library package.
Note II: We tried to write our code clean, portable and platform neutral, so it should be possible to compile it on a wide range of platforms and also with other compilers than gcc or clang. We use GitHub Actions to test commits and pull requests in our repository, but unfortunately it's not always possible to test the code in very exotic setups. However, feel free to report issues to our bug tracker on GitHub.
Note III (regarding glbinding): To use glbinding instead of GLEW, call cmake
with the flag -DGLBINDING_ENABLED=ON
For ease of use, here are some installation lines for some Linux distributions:
SuperTux uses CMake to generate a set of Makefiles for the build process. To generate these Makefiles and build SuperTux, perform the following steps:
cd
to the directory where you unpacked the SuperTux source archive, i.e. to the directory containing src
and data
.git submodule update --init --recursive
to fetch/update squirrel, tinygettext, physfs, and some other modules. (If you got this version of Supertux from a tarball (.tar), squirrel and tinygettext are already in the tarball.)mkdir build
, cd build
.cmake ..
to create the Makefiles needed to build SuperTux with standard options. If you are missing any libraries needed to build SuperTux, install those first, then try running CMake again. See below for instructions on how to change to standard options.make
to start the build process.make install
to install the programs and any data files and documentation. (You should be a root user on Linux systems. You can become a root user with the su
command or by using sudo make install
) Note that there is no uninstall target, so you might wish to create a package or other system-specific installation instead.You can customize the build process by setting additional options for CMake. The easiest way to do this is to use run ccmake ..
instead of cmake ..
to bring up the curses-based user interface of CMake. Select an option using the arrow keys, change the selected option by pressing the Enter key, then hit the c
(repeatedly, if necessary) to apply your changes and bring up new options resulting from your newly set ones. When you are done, press the g
key to generate a new set of Makefiles and exit.
Alternatively, you can pass options to cmake ..
via the command line. Some common command line switches are:
-DCMAKE_VERBOSE_MAKEFILE=ON
: Generates Makefiles that print all commands prior to executing them.-Dxxx_LIBRARY=/path/to/library.so -Dxxx_INCLUDE_DIR=/path/to/headerfiles
: Manually specify the installation directory of a library.-DCMAKE_BUILD_TYPE=DEBUG
: Enables debug mode and compiles extra debug symbols into the SuperTux executable. This is useful when sending in bug reports to the developers.-DCMAKE_BUILD_TYPE=RELEASE
: Enables release mode and compiles some sanity checks out of the build.-DCMAKE_C_COMPILER=cc
, -DCMAKE_CXX_COMPILER=cpp
: Changes which compiler to use. Options are also available for the linker, but using this option is less common.-DENABLE_OPENGL=ON
, -DENABLE_OPENGLES2=ON
: The former controls whether to compile in OpenGL support (else the game will use the SDL renderer), the latter controls supporting OpenGL ES 2.-DBUILD_TESTS=ON
: Enables compiling the test suite. To run the test suite, run "test_supertux2" after compiling SuperTux. Requires installing GoogleTest as an additional dependency.-DBUILD_DOCUMENTATION=ON
: Enables building documentation. Requires downloading and installing Doxygen as an additional dependency. You may build documentation after building SuperTux by running "doxygen docs/Doxyfile" from the build directory, and by opening "docs/doxygen/html/index.html".-DENABLE_DISCORD=ON
: Enables compiling the Discord integration in SuperTux. You may re-disable the integration later by replacing "ON" with "OFF".-DVCPKG_BUILD=ON
: Used if using vcpkg for dependencies. If you are using this, don't forget -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake
and -DVCPKG_TARGET_TRIPLET=your-triplet
if necessary.-DWARNINGS=ON
: Enable all warnings. The CI enables this option, so it might be useful to keep this option activated during development.-DWERROR=ON
: Treat all warnings as errors. The CI enables this option, so it might be useful to enable this option and to recompile before opening a pull request.SuperTux does not need to be installed on the system; you can run it from its own directory.
If ccache
is installed and working, it can help to significantly reduce the (re)compilation time, e.g. when doing a git bisect with many checkouts. Furthermore, it is possible to reduce the optimization level to O1, which may reduce compilation times:
A general way to reduce compilation time is running make
with multiple threads:
Note: SuperTux is currently not compilable with MinGW.
To build SuperTux on Windows with Visual Studio, you will need:
Once all of these are installed; you may install dependencies with vcpkg. In any CLI, from the vcpkg folder, run:
Note: If you wish to produce 64-bit builds, replace --triplet=x86-windows
with --triplet=x64-windows
.
Once dependencies are installed:
git clone --recursive https://github.com/SuperTux/supertux.git
).build
folder.build
directory.Run cmake .. -A Win32 -DCMAKE_BUILD_TYPE=Release -DVCPKG_BUILD=ON -DCMAKE_TOOLCHAIN_FILE=C:/PATH/TO/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x86-windows
.
Make sure to change the path to vcpkg to the actual path to vcpkg on your system!
Options:
-A Win32
tells CMake to produce 32-bit executables. To produce 64-bit executables, you may either replace Win32
with x64
, or omit this argument entirely (remove everything, including the -A
).-DCMAKE_BUILD_TYPE=Release
creates a Release build, which does not contain debug information and runs faster. You may also produce Debug
builds, but these run significantly slower. Other options may be available, such as RelWithDebInfo
and MinSizeRel
, but they are not tested. More info-DVCPKG_BUILD=ON
tells SuperTux to use vcpkg to find dependencies.-DCMAKE_TOOLCHAIN_FILE=C:/PATH/TO/vcpkg/scripts/buildsystems/vcpkg.cmake
tells CMake to use the vcpkg toolchain to load dependencies. Make sure to change the path to the actual path to vcpkg on your system!-DVCPKG_TARGET_TRIPLET=x86-windows
tells vcpkg to use 32-bit dependencies for Windows. If you are compiling 64-bit executables, replace "x86" with "x64".-G "Visual Studio 16 2019"
to force a certain version of Visual Studio if multiple are installed on your system.For more CMake options, look at end of the Linux/UNIX build section.
cmake --build . --config Release
instead. (If you prefer building a debug build, change "Release" to "Debug". Make sure you use the same option as when calling CMake!)cd
in the Release/Debug folder beforehand.This port exists thanks to Pelya!
You will need to install Android Studio with the command-line tools and with NDK version 23 (other versions won't work). You will also need git.
It is recommended to run these commands on Ubuntu 20.04.
Note that the commands which require a certain wordking directory will have the assumed initial directory at the top of hte code block; if you follow these instructions step by step, you should have the assumed Current Working Directory at each step.
532acc9192
. Rename the folder "build.android" and place it at the root of the SuperTux repository.$HOME/Android/Sdk/ndk/[version 23]
, if it is not already set.)build.android/project
folder in Android Studio, although it might get laggy; you can also accept licenses from the CLI.`` <h1>Similarly as step #7, you can prepend
yes | ` to accept all licenses sudo $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager –licenses \ –sdk_root=pwd
mkdir -p ~/.android keytool -genkey -v -keystore ~/.android/debug.keystore -storepass android \ -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 \ -validity 10000 \ -dname "CN=Debug, OU=Debug, O=Debug, L=Debug, ST=Debug, C=Debug"
echo "sdk.dir=$ANDROID_SDK_ROOT" > local.properties echo "proguard.config=proguard.cfg;proguard-local.cfg" >> local.properties
cd ..
export PATH=$ANDROID_NDK_HOME:$ANDROID_SDK_ROOT/build-tools/31.0.0:$PATH ./build.sh
cd project ./gradlew bundleReleaseWithDebugInfo
cd jni/application/supertux ./create-apk-with-data.sh
git submodule update –init –recursive
git clone https://github.com/emscripten-core/emsdk.git cd emsdk ./emsdk install latest ./emsdk activate latest source ./emsdk_env.sh
source /path/to/emsdk/emsdk_env.sh
if you opened a new terminal since last step!emcmake cmake -DCMAKE_BUILD_TYPE=Release ..
rsync -aP ../data/ data/
emmake make -j$(nproc || sysctl -n hw.ncpu || echo 2)
cp template.html supertux2.html
emrun supertux2.html
git submodule update –init –recursive
clickable
clickable –config mk/clickable/build-with-glew.json
clickable desktop –config mk/clickable/clickable.json
clickable build –config mk/clickable/clickable.json `` You may specify an architecture using the
–arch ARCHflag. Clickable currently supports
amd64,
arm64and
armhf`.