forked from Mirrorlandia_minetest/minetest
Split compilation instructions from README.md (#13457)
This commit is contained in:
parent
0fb6dbab36
commit
9c90358912
322
README.md
322
README.md
@ -124,326 +124,10 @@ Command-line options
|
|||||||
|
|
||||||
Compiling
|
Compiling
|
||||||
---------
|
---------
|
||||||
### Compiling on GNU/Linux
|
|
||||||
|
|
||||||
#### Dependencies
|
- [Compiling on GNU/Linux](doc/compiling/linux.md)
|
||||||
|
- [Compiling on Windows](doc/compiling/windows.md)
|
||||||
| Dependency | Version | Commentary |
|
- [Compiling on MacOS](doc/compiling/macos.md)
|
||||||
|------------|---------|------------|
|
|
||||||
| GCC | 5.1+ | or Clang 3.5+ |
|
|
||||||
| CMake | 3.5+ | |
|
|
||||||
| IrrlichtMt | - | Custom version of Irrlicht, see https://github.com/minetest/irrlicht |
|
|
||||||
| Freetype | 2.0+ | |
|
|
||||||
| SQLite3 | 3+ | |
|
|
||||||
| Zstd | 1.0+ | |
|
|
||||||
| LuaJIT | 2.0+ | Bundled Lua 5.1 is used if not present |
|
|
||||||
| GMP | 5.0.0+ | Bundled mini-GMP is used if not present |
|
|
||||||
| JsonCPP | 1.0.0+ | Bundled JsonCPP is used if not present |
|
|
||||||
|
|
||||||
For Debian/Ubuntu users:
|
|
||||||
|
|
||||||
sudo apt install g++ make libc6-dev cmake libpng-dev libjpeg-dev libxi-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev libzstd-dev libluajit-5.1-dev
|
|
||||||
|
|
||||||
For Fedora users:
|
|
||||||
|
|
||||||
sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libpng-devel libjpeg-devel libvorbis-devel libXi-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel libzstd-devel
|
|
||||||
|
|
||||||
For Arch users:
|
|
||||||
|
|
||||||
sudo pacman -S base-devel libcurl-gnutls cmake libxi libpng sqlite libogg libvorbis openal freetype2 jsoncpp gmp luajit leveldb ncurses zstd
|
|
||||||
|
|
||||||
For Alpine users:
|
|
||||||
|
|
||||||
sudo apk add build-base cmake libpng-dev jpeg-dev libxi-dev mesa-dev sqlite-dev libogg-dev libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev gmp-dev jsoncpp-dev luajit-dev zstd-dev
|
|
||||||
|
|
||||||
#### Download
|
|
||||||
|
|
||||||
You can install Git for easily keeping your copy up to date.
|
|
||||||
If you don’t want Git, read below on how to get the source without Git.
|
|
||||||
This is an example for installing Git on Debian/Ubuntu:
|
|
||||||
|
|
||||||
sudo apt install git
|
|
||||||
|
|
||||||
For Fedora users:
|
|
||||||
|
|
||||||
sudo dnf install git
|
|
||||||
|
|
||||||
For Arch users:
|
|
||||||
|
|
||||||
sudo pacman -S git
|
|
||||||
|
|
||||||
For Alpine users:
|
|
||||||
|
|
||||||
sudo apk add git
|
|
||||||
|
|
||||||
Download source (this is the URL to the latest of source repository, which might not work at all times) using Git:
|
|
||||||
|
|
||||||
git clone --depth 1 https://github.com/minetest/minetest.git
|
|
||||||
cd minetest
|
|
||||||
|
|
||||||
Download Minetest Game (otherwise only the "Development Test" game is available) using Git:
|
|
||||||
|
|
||||||
git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game
|
|
||||||
|
|
||||||
Download IrrlichtMt to `lib/irrlichtmt`, it will be used to satisfy the IrrlichtMt dependency that way:
|
|
||||||
|
|
||||||
git clone --depth 1 https://github.com/minetest/irrlicht.git lib/irrlichtmt
|
|
||||||
|
|
||||||
Download source, without using Git:
|
|
||||||
|
|
||||||
wget https://github.com/minetest/minetest/archive/master.tar.gz
|
|
||||||
tar xf master.tar.gz
|
|
||||||
cd minetest-master
|
|
||||||
|
|
||||||
Download Minetest Game, without using Git:
|
|
||||||
|
|
||||||
cd games/
|
|
||||||
wget https://github.com/minetest/minetest_game/archive/master.tar.gz
|
|
||||||
tar xf master.tar.gz
|
|
||||||
mv minetest_game-master minetest_game
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
Download IrrlichtMt, without using Git:
|
|
||||||
|
|
||||||
cd lib/
|
|
||||||
wget https://github.com/minetest/irrlicht/archive/master.tar.gz
|
|
||||||
tar xf master.tar.gz
|
|
||||||
mv irrlicht-master irrlichtmt
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
#### Build
|
|
||||||
|
|
||||||
Build a version that runs directly from the source directory:
|
|
||||||
|
|
||||||
cmake . -DRUN_IN_PLACE=TRUE
|
|
||||||
make -j$(nproc)
|
|
||||||
|
|
||||||
Run it:
|
|
||||||
|
|
||||||
./bin/minetest
|
|
||||||
|
|
||||||
- Use `cmake . -LH` to see all CMake options and their current state.
|
|
||||||
- If you want to install it system-wide (or are making a distribution package),
|
|
||||||
you will want to use `-DRUN_IN_PLACE=FALSE`.
|
|
||||||
- You can build a bare server by specifying `-DBUILD_SERVER=TRUE`.
|
|
||||||
- You can disable the client build by specifying `-DBUILD_CLIENT=FALSE`.
|
|
||||||
- You can select between Release and Debug build by `-DCMAKE_BUILD_TYPE=<Debug or Release>`.
|
|
||||||
- Debug build is slower, but gives much more useful output in a debugger.
|
|
||||||
- If you build a bare server you don't need to compile IrrlichtMt, just the headers suffice.
|
|
||||||
- In that case use `-DIRRLICHT_INCLUDE_DIR=/some/where/irrlichtmt/include`.
|
|
||||||
|
|
||||||
- Minetest will use the IrrlichtMt package that is found first, given by the following order:
|
|
||||||
1. Specified `IRRLICHTMT_BUILD_DIR` CMake variable
|
|
||||||
2. `${PROJECT_SOURCE_DIR}/lib/irrlichtmt` (if existent)
|
|
||||||
3. Installation of IrrlichtMt in the system-specific library paths
|
|
||||||
4. For server builds with disabled `BUILD_CLIENT` variable, the headers from `IRRLICHT_INCLUDE_DIR` will be used.
|
|
||||||
- NOTE: Changing the IrrlichtMt build directory (includes system installs) requires regenerating the CMake cache (`rm CMakeCache.txt`)
|
|
||||||
|
|
||||||
### CMake options
|
|
||||||
|
|
||||||
General options and their default values:
|
|
||||||
|
|
||||||
BUILD_CLIENT=TRUE - Build Minetest client
|
|
||||||
BUILD_SERVER=FALSE - Build Minetest server
|
|
||||||
BUILD_UNITTESTS=TRUE - Build unittest sources
|
|
||||||
BUILD_BENCHMARKS=FALSE - Build benchmark sources
|
|
||||||
CMAKE_BUILD_TYPE=Release - Type of build (Release vs. Debug)
|
|
||||||
Release - Release build
|
|
||||||
Debug - Debug build
|
|
||||||
SemiDebug - Partially optimized debug build
|
|
||||||
RelWithDebInfo - Release build with debug information
|
|
||||||
MinSizeRel - Release build with -Os passed to compiler to make executable as small as possible
|
|
||||||
ENABLE_CURL=ON - Build with cURL; Enables use of online mod repo, public serverlist and remote media fetching via http
|
|
||||||
ENABLE_CURSES=ON - Build with (n)curses; Enables a server side terminal (command line option: --terminal)
|
|
||||||
ENABLE_GETTEXT=ON - Build with Gettext; Allows using translations
|
|
||||||
ENABLE_LEVELDB=ON - Build with LevelDB; Enables use of LevelDB map backend
|
|
||||||
ENABLE_POSTGRESQL=ON - Build with libpq; Enables use of PostgreSQL map backend (PostgreSQL 9.5 or greater recommended)
|
|
||||||
ENABLE_REDIS=ON - Build with libhiredis; Enables use of Redis map backend
|
|
||||||
ENABLE_SPATIAL=ON - Build with LibSpatial; Speeds up AreaStores
|
|
||||||
ENABLE_SOUND=ON - Build with OpenAL, libogg & libvorbis; in-game sounds
|
|
||||||
ENABLE_LUAJIT=ON - Build with LuaJIT (much faster than non-JIT Lua)
|
|
||||||
ENABLE_PROMETHEUS=OFF - Build with Prometheus metrics exporter (listens on tcp/30000 by default)
|
|
||||||
ENABLE_SYSTEM_GMP=ON - Use GMP from system (much faster than bundled mini-gmp)
|
|
||||||
ENABLE_SYSTEM_JSONCPP=ON - Use JsonCPP from system
|
|
||||||
RUN_IN_PLACE=FALSE - Create a portable install (worlds, settings etc. in current directory)
|
|
||||||
ENABLE_UPDATE_CHECKER=TRUE - Whether to enable update checks by default
|
|
||||||
INSTALL_DEVTEST=FALSE - Whether the Development Test game should be installed alongside Minetest
|
|
||||||
USE_GPROF=FALSE - Enable profiling using GProf
|
|
||||||
VERSION_EXTRA= - Text to append to version (e.g. VERSION_EXTRA=foobar -> Minetest 0.4.9-foobar)
|
|
||||||
ENABLE_TOUCH=FALSE - Enable Touchscreen support (requires support by IrrlichtMt)
|
|
||||||
|
|
||||||
Library specific options:
|
|
||||||
|
|
||||||
CURL_DLL - Only if building with cURL on Windows; path to libcurl.dll
|
|
||||||
CURL_INCLUDE_DIR - Only if building with cURL; directory where curl.h is located
|
|
||||||
CURL_LIBRARY - Only if building with cURL; path to libcurl.a/libcurl.so/libcurl.lib
|
|
||||||
EGL_INCLUDE_DIR - Only if building with GLES; directory that contains egl.h
|
|
||||||
EGL_LIBRARY - Only if building with GLES; path to libEGL.a/libEGL.so
|
|
||||||
EXTRA_DLL - Only on Windows; optional paths to additional DLLs that should be packaged
|
|
||||||
FREETYPE_INCLUDE_DIR_freetype2 - Directory that contains files such as ftimage.h
|
|
||||||
FREETYPE_INCLUDE_DIR_ft2build - Directory that contains ft2build.h
|
|
||||||
FREETYPE_LIBRARY - Path to libfreetype.a/libfreetype.so/freetype.lib
|
|
||||||
FREETYPE_DLL - Only on Windows; path to libfreetype-6.dll
|
|
||||||
GETTEXT_DLL - Only when building with gettext on Windows; paths to libintl + libiconv DLLs
|
|
||||||
GETTEXT_INCLUDE_DIR - Only when building with gettext; directory that contains libintl.h
|
|
||||||
GETTEXT_LIBRARY - Optional/platform-dependent with gettext; path to libintl.so/libintl.dll.a
|
|
||||||
GETTEXT_MSGFMT - Only when building with gettext; path to msgfmt/msgfmt.exe
|
|
||||||
ICONV_LIBRARY - Optional/platform-dependent; path to libiconv.so/libiconv.dylib
|
|
||||||
IRRLICHT_DLL - Only on Windows; path to IrrlichtMt.dll
|
|
||||||
IRRLICHT_INCLUDE_DIR - Directory that contains IrrCompileConfig.h (usable for server build only)
|
|
||||||
LEVELDB_INCLUDE_DIR - Only when building with LevelDB; directory that contains db.h
|
|
||||||
LEVELDB_LIBRARY - Only when building with LevelDB; path to libleveldb.a/libleveldb.so/libleveldb.dll.a
|
|
||||||
LEVELDB_DLL - Only when building with LevelDB on Windows; path to libleveldb.dll
|
|
||||||
PostgreSQL_INCLUDE_DIR - Only when building with PostgreSQL; directory that contains libpq-fe.h
|
|
||||||
PostgreSQL_LIBRARY - Only when building with PostgreSQL; path to libpq.a/libpq.so/libpq.lib
|
|
||||||
REDIS_INCLUDE_DIR - Only when building with Redis; directory that contains hiredis.h
|
|
||||||
REDIS_LIBRARY - Only when building with Redis; path to libhiredis.a/libhiredis.so
|
|
||||||
SPATIAL_INCLUDE_DIR - Only when building with LibSpatial; directory that contains spatialindex/SpatialIndex.h
|
|
||||||
SPATIAL_LIBRARY - Only when building with LibSpatial; path to libspatialindex.so/spatialindex-32.lib
|
|
||||||
LUA_INCLUDE_DIR - Only if you want to use LuaJIT; directory where luajit.h is located
|
|
||||||
LUA_LIBRARY - Only if you want to use LuaJIT; path to libluajit.a/libluajit.so
|
|
||||||
OGG_DLL - Only if building with sound on Windows; path to libogg.dll
|
|
||||||
OGG_INCLUDE_DIR - Only if building with sound; directory that contains an ogg directory which contains ogg.h
|
|
||||||
OGG_LIBRARY - Only if building with sound; path to libogg.a/libogg.so/libogg.dll.a
|
|
||||||
OPENAL_DLL - Only if building with sound on Windows; path to OpenAL32.dll
|
|
||||||
OPENAL_INCLUDE_DIR - Only if building with sound; directory where al.h is located
|
|
||||||
OPENAL_LIBRARY - Only if building with sound; path to libopenal.a/libopenal.so/OpenAL32.lib
|
|
||||||
SQLITE3_INCLUDE_DIR - Directory that contains sqlite3.h
|
|
||||||
SQLITE3_LIBRARY - Path to libsqlite3.a/libsqlite3.so/sqlite3.lib
|
|
||||||
VORBISFILE_LIBRARY - Only if building with sound; path to libvorbisfile.a/libvorbisfile.so/libvorbisfile.dll.a
|
|
||||||
VORBIS_DLL - Only if building with sound on Windows; paths to vorbis DLLs
|
|
||||||
VORBIS_INCLUDE_DIR - Only if building with sound; directory that contains a directory vorbis with vorbisenc.h inside
|
|
||||||
VORBIS_LIBRARY - Only if building with sound; path to libvorbis.a/libvorbis.so/libvorbis.dll.a
|
|
||||||
ZLIB_DLL - Only on Windows; path to zlib1.dll
|
|
||||||
ZLIB_INCLUDE_DIR - Directory that contains zlib.h
|
|
||||||
ZLIB_LIBRARY - Path to libz.a/libz.so/zlib.lib
|
|
||||||
ZSTD_DLL - Only on Windows; path to libzstd.dll
|
|
||||||
ZSTD_INCLUDE_DIR - Directory that contains zstd.h
|
|
||||||
ZSTD_LIBRARY - Path to libzstd.a/libzstd.so/ztd.lib
|
|
||||||
|
|
||||||
### Compiling on Windows using MSVC
|
|
||||||
|
|
||||||
### Requirements
|
|
||||||
|
|
||||||
- [Visual Studio 2015 or newer](https://visualstudio.microsoft.com)
|
|
||||||
- [CMake](https://cmake.org/download/)
|
|
||||||
- [vcpkg](https://github.com/Microsoft/vcpkg)
|
|
||||||
- [Git](https://git-scm.com/downloads)
|
|
||||||
|
|
||||||
### Compiling and installing the dependencies
|
|
||||||
|
|
||||||
It is highly recommended to use vcpkg as package manager.
|
|
||||||
|
|
||||||
After you successfully built vcpkg you can easily install the required libraries:
|
|
||||||
```powershell
|
|
||||||
vcpkg install zlib zstd curl[winssl] openal-soft libvorbis libogg libjpeg-turbo sqlite3 freetype luajit gmp jsoncpp opengl-registry --triplet x64-windows
|
|
||||||
```
|
|
||||||
|
|
||||||
- **Don't forget about IrrlichtMt.** The easiest way is to clone it to `lib/irrlichtmt` as described in the Linux section.
|
|
||||||
- `curl` is optional, but required to read the serverlist, `curl[winssl]` is required to use the content store.
|
|
||||||
- `openal-soft`, `libvorbis` and `libogg` are optional, but required to use sound.
|
|
||||||
- `luajit` is optional, it replaces the integrated Lua interpreter with a faster just-in-time interpreter.
|
|
||||||
- `gmp` and `jsoncpp` are optional, otherwise the bundled versions will be compiled
|
|
||||||
|
|
||||||
There are other optional libraries, but they are not tested if they can build and link correctly.
|
|
||||||
|
|
||||||
Use `--triplet` to specify the target triplet, e.g. `x64-windows` or `x86-windows`.
|
|
||||||
|
|
||||||
### Compile Minetest
|
|
||||||
|
|
||||||
#### a) Using the vcpkg toolchain and CMake GUI
|
|
||||||
1. Start up the CMake GUI
|
|
||||||
2. Select **Browse Source...** and select DIR/minetest
|
|
||||||
3. Select **Browse Build...** and select DIR/minetest-build
|
|
||||||
4. Select **Configure**
|
|
||||||
5. Choose the right visual Studio version and target platform. It has to match the version of the installed dependencies
|
|
||||||
6. Choose **Specify toolchain file for cross-compiling**
|
|
||||||
7. Click **Next**
|
|
||||||
8. Select the vcpkg toolchain file e.g. `D:/vcpkg/scripts/buildsystems/vcpkg.cmake`
|
|
||||||
9. Click Finish
|
|
||||||
10. Wait until cmake have generated the cash file
|
|
||||||
11. If there are any errors, solve them and hit **Configure**
|
|
||||||
12. Click **Generate**
|
|
||||||
13. Click **Open Project**
|
|
||||||
14. Compile Minetest inside Visual studio.
|
|
||||||
|
|
||||||
#### b) Using the vcpkg toolchain and the commandline
|
|
||||||
|
|
||||||
Run the following script in PowerShell:
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
cmake . -G"Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GETTEXT=OFF -DENABLE_CURSES=OFF
|
|
||||||
cmake --build . --config Release
|
|
||||||
```
|
|
||||||
Make sure that the right compiler is selected and the path to the vcpkg toolchain is correct.
|
|
||||||
|
|
||||||
### Windows Installer using WiX Toolset
|
|
||||||
|
|
||||||
Requirements:
|
|
||||||
* [Visual Studio 2017](https://visualstudio.microsoft.com/)
|
|
||||||
* [WiX Toolset](https://wixtoolset.org/)
|
|
||||||
|
|
||||||
In the Visual Studio 2017 Installer select **Optional Features -> WiX Toolset**.
|
|
||||||
|
|
||||||
Build the binaries as described above, but make sure you unselect `RUN_IN_PLACE`.
|
|
||||||
|
|
||||||
Open the generated project file with Visual Studio. Right-click **Package** and choose **Generate**.
|
|
||||||
It may take some minutes to generate the installer.
|
|
||||||
|
|
||||||
### Compiling on MacOS
|
|
||||||
|
|
||||||
#### Requirements
|
|
||||||
- [Homebrew](https://brew.sh/)
|
|
||||||
- [Git](https://git-scm.com/downloads)
|
|
||||||
|
|
||||||
Install dependencies with homebrew:
|
|
||||||
|
|
||||||
```
|
|
||||||
brew install cmake freetype gettext gmp hiredis jpeg jsoncpp leveldb libogg libpng libvorbis luajit zstd
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Download
|
|
||||||
|
|
||||||
Download source (this is the URL to the latest of source repository, which might not work at all times) using Git:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone --depth 1 https://github.com/minetest/minetest.git
|
|
||||||
cd minetest
|
|
||||||
```
|
|
||||||
|
|
||||||
Download Minetest Game (otherwise only the "Development Test" game is available) using Git:
|
|
||||||
|
|
||||||
```
|
|
||||||
git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game
|
|
||||||
```
|
|
||||||
|
|
||||||
Download Minetest's fork of Irrlicht:
|
|
||||||
|
|
||||||
```
|
|
||||||
git clone --depth 1 https://github.com/minetest/irrlicht.git lib/irrlichtmt
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Build
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
|
|
||||||
cmake .. \
|
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 \
|
|
||||||
-DCMAKE_FIND_FRAMEWORK=LAST \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=../build/macos/ \
|
|
||||||
-DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE
|
|
||||||
|
|
||||||
make -j$(sysctl -n hw.logicalcpu)
|
|
||||||
make install
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Run
|
|
||||||
|
|
||||||
```
|
|
||||||
open ./build/macos/minetest.app
|
|
||||||
```
|
|
||||||
|
|
||||||
Docker
|
Docker
|
||||||
------
|
------
|
||||||
|
88
doc/compiling/README.md
Normal file
88
doc/compiling/README.md
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
# Compiling Minetest
|
||||||
|
|
||||||
|
- [Compiling on GNU/Linux](linux.md)
|
||||||
|
- [Compiling on Windows](windows.md)
|
||||||
|
- [Compiling on MacOS](macos.md)
|
||||||
|
|
||||||
|
|
||||||
|
## CMake options
|
||||||
|
|
||||||
|
General options and their default values:
|
||||||
|
|
||||||
|
BUILD_CLIENT=TRUE - Build Minetest client
|
||||||
|
BUILD_SERVER=FALSE - Build Minetest server
|
||||||
|
BUILD_UNITTESTS=TRUE - Build unittest sources
|
||||||
|
BUILD_BENCHMARKS=FALSE - Build benchmark sources
|
||||||
|
CMAKE_BUILD_TYPE=Release - Type of build (Release vs. Debug)
|
||||||
|
Release - Release build
|
||||||
|
Debug - Debug build
|
||||||
|
SemiDebug - Partially optimized debug build
|
||||||
|
RelWithDebInfo - Release build with debug information
|
||||||
|
MinSizeRel - Release build with -Os passed to compiler to make executable as small as possible
|
||||||
|
ENABLE_CURL=ON - Build with cURL; Enables use of online mod repo, public serverlist and remote media fetching via http
|
||||||
|
ENABLE_CURSES=ON - Build with (n)curses; Enables a server side terminal (command line option: --terminal)
|
||||||
|
ENABLE_GETTEXT=ON - Build with Gettext; Allows using translations
|
||||||
|
ENABLE_LEVELDB=ON - Build with LevelDB; Enables use of LevelDB map backend
|
||||||
|
ENABLE_POSTGRESQL=ON - Build with libpq; Enables use of PostgreSQL map backend (PostgreSQL 9.5 or greater recommended)
|
||||||
|
ENABLE_REDIS=ON - Build with libhiredis; Enables use of Redis map backend
|
||||||
|
ENABLE_SPATIAL=ON - Build with LibSpatial; Speeds up AreaStores
|
||||||
|
ENABLE_SOUND=ON - Build with OpenAL, libogg & libvorbis; in-game sounds
|
||||||
|
ENABLE_LUAJIT=ON - Build with LuaJIT (much faster than non-JIT Lua)
|
||||||
|
ENABLE_PROMETHEUS=OFF - Build with Prometheus metrics exporter (listens on tcp/30000 by default)
|
||||||
|
ENABLE_SYSTEM_GMP=ON - Use GMP from system (much faster than bundled mini-gmp)
|
||||||
|
ENABLE_SYSTEM_JSONCPP=ON - Use JsonCPP from system
|
||||||
|
RUN_IN_PLACE=FALSE - Create a portable install (worlds, settings etc. in current directory)
|
||||||
|
ENABLE_UPDATE_CHECKER=TRUE - Whether to enable update checks by default
|
||||||
|
INSTALL_DEVTEST=FALSE - Whether the Development Test game should be installed alongside Minetest
|
||||||
|
USE_GPROF=FALSE - Enable profiling using GProf
|
||||||
|
VERSION_EXTRA= - Text to append to version (e.g. VERSION_EXTRA=foobar -> Minetest 0.4.9-foobar)
|
||||||
|
ENABLE_TOUCH=FALSE - Enable Touchscreen support (requires support by IrrlichtMt)
|
||||||
|
|
||||||
|
Library specific options:
|
||||||
|
|
||||||
|
CURL_DLL - Only if building with cURL on Windows; path to libcurl.dll
|
||||||
|
CURL_INCLUDE_DIR - Only if building with cURL; directory where curl.h is located
|
||||||
|
CURL_LIBRARY - Only if building with cURL; path to libcurl.a/libcurl.so/libcurl.lib
|
||||||
|
EGL_INCLUDE_DIR - Only if building with GLES; directory that contains egl.h
|
||||||
|
EGL_LIBRARY - Only if building with GLES; path to libEGL.a/libEGL.so
|
||||||
|
EXTRA_DLL - Only on Windows; optional paths to additional DLLs that should be packaged
|
||||||
|
FREETYPE_INCLUDE_DIR_freetype2 - Directory that contains files such as ftimage.h
|
||||||
|
FREETYPE_INCLUDE_DIR_ft2build - Directory that contains ft2build.h
|
||||||
|
FREETYPE_LIBRARY - Path to libfreetype.a/libfreetype.so/freetype.lib
|
||||||
|
FREETYPE_DLL - Only on Windows; path to libfreetype-6.dll
|
||||||
|
GETTEXT_DLL - Only when building with gettext on Windows; paths to libintl + libiconv DLLs
|
||||||
|
GETTEXT_INCLUDE_DIR - Only when building with gettext; directory that contains libintl.h
|
||||||
|
GETTEXT_LIBRARY - Optional/platform-dependent with gettext; path to libintl.so/libintl.dll.a
|
||||||
|
GETTEXT_MSGFMT - Only when building with gettext; path to msgfmt/msgfmt.exe
|
||||||
|
ICONV_LIBRARY - Optional/platform-dependent; path to libiconv.so/libiconv.dylib
|
||||||
|
IRRLICHT_DLL - Only on Windows; path to IrrlichtMt.dll
|
||||||
|
IRRLICHT_INCLUDE_DIR - Directory that contains IrrCompileConfig.h (usable for server build only)
|
||||||
|
LEVELDB_INCLUDE_DIR - Only when building with LevelDB; directory that contains db.h
|
||||||
|
LEVELDB_LIBRARY - Only when building with LevelDB; path to libleveldb.a/libleveldb.so/libleveldb.dll.a
|
||||||
|
LEVELDB_DLL - Only when building with LevelDB on Windows; path to libleveldb.dll
|
||||||
|
PostgreSQL_INCLUDE_DIR - Only when building with PostgreSQL; directory that contains libpq-fe.h
|
||||||
|
PostgreSQL_LIBRARY - Only when building with PostgreSQL; path to libpq.a/libpq.so/libpq.lib
|
||||||
|
REDIS_INCLUDE_DIR - Only when building with Redis; directory that contains hiredis.h
|
||||||
|
REDIS_LIBRARY - Only when building with Redis; path to libhiredis.a/libhiredis.so
|
||||||
|
SPATIAL_INCLUDE_DIR - Only when building with LibSpatial; directory that contains spatialindex/SpatialIndex.h
|
||||||
|
SPATIAL_LIBRARY - Only when building with LibSpatial; path to libspatialindex.so/spatialindex-32.lib
|
||||||
|
LUA_INCLUDE_DIR - Only if you want to use LuaJIT; directory where luajit.h is located
|
||||||
|
LUA_LIBRARY - Only if you want to use LuaJIT; path to libluajit.a/libluajit.so
|
||||||
|
OGG_DLL - Only if building with sound on Windows; path to libogg.dll
|
||||||
|
OGG_INCLUDE_DIR - Only if building with sound; directory that contains an ogg directory which contains ogg.h
|
||||||
|
OGG_LIBRARY - Only if building with sound; path to libogg.a/libogg.so/libogg.dll.a
|
||||||
|
OPENAL_DLL - Only if building with sound on Windows; path to OpenAL32.dll
|
||||||
|
OPENAL_INCLUDE_DIR - Only if building with sound; directory where al.h is located
|
||||||
|
OPENAL_LIBRARY - Only if building with sound; path to libopenal.a/libopenal.so/OpenAL32.lib
|
||||||
|
SQLITE3_INCLUDE_DIR - Directory that contains sqlite3.h
|
||||||
|
SQLITE3_LIBRARY - Path to libsqlite3.a/libsqlite3.so/sqlite3.lib
|
||||||
|
VORBISFILE_LIBRARY - Only if building with sound; path to libvorbisfile.a/libvorbisfile.so/libvorbisfile.dll.a
|
||||||
|
VORBIS_DLL - Only if building with sound on Windows; paths to vorbis DLLs
|
||||||
|
VORBIS_INCLUDE_DIR - Only if building with sound; directory that contains a directory vorbis with vorbisenc.h inside
|
||||||
|
VORBIS_LIBRARY - Only if building with sound; path to libvorbis.a/libvorbis.so/libvorbis.dll.a
|
||||||
|
ZLIB_DLL - Only on Windows; path to zlib1.dll
|
||||||
|
ZLIB_INCLUDE_DIR - Directory that contains zlib.h
|
||||||
|
ZLIB_LIBRARY - Path to libz.a/libz.so/zlib.lib
|
||||||
|
ZSTD_DLL - Only on Windows; path to libzstd.dll
|
||||||
|
ZSTD_INCLUDE_DIR - Directory that contains zstd.h
|
||||||
|
ZSTD_LIBRARY - Path to libzstd.a/libzstd.so/ztd.lib
|
114
doc/compiling/linux.md
Normal file
114
doc/compiling/linux.md
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
# Compiling on GNU/Linux
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
| Dependency | Version | Commentary |
|
||||||
|
|------------|---------|------------|
|
||||||
|
| GCC | 5.1+ | or Clang 3.5+ |
|
||||||
|
| CMake | 3.5+ | |
|
||||||
|
| IrrlichtMt | - | Custom version of Irrlicht, see https://github.com/minetest/irrlicht |
|
||||||
|
| Freetype | 2.0+ | |
|
||||||
|
| SQLite3 | 3+ | |
|
||||||
|
| Zstd | 1.0+ | |
|
||||||
|
| LuaJIT | 2.0+ | Bundled Lua 5.1 is used if not present |
|
||||||
|
| GMP | 5.0.0+ | Bundled mini-GMP is used if not present |
|
||||||
|
| JsonCPP | 1.0.0+ | Bundled JsonCPP is used if not present |
|
||||||
|
|
||||||
|
For Debian/Ubuntu users:
|
||||||
|
|
||||||
|
sudo apt install g++ make libc6-dev cmake libpng-dev libjpeg-dev libxi-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev libzstd-dev libluajit-5.1-dev
|
||||||
|
|
||||||
|
For Fedora users:
|
||||||
|
|
||||||
|
sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libcurl-devel openal-soft-devel libpng-devel libjpeg-devel libvorbis-devel libXi-devel libogg-devel freetype-devel mesa-libGL-devel zlib-devel jsoncpp-devel gmp-devel sqlite-devel luajit-devel leveldb-devel ncurses-devel spatialindex-devel libzstd-devel
|
||||||
|
|
||||||
|
For Arch users:
|
||||||
|
|
||||||
|
sudo pacman -S base-devel libcurl-gnutls cmake libxi libpng sqlite libogg libvorbis openal freetype2 jsoncpp gmp luajit leveldb ncurses zstd
|
||||||
|
|
||||||
|
For Alpine users:
|
||||||
|
|
||||||
|
sudo apk add build-base cmake libpng-dev jpeg-dev libxi-dev mesa-dev sqlite-dev libogg-dev libvorbis-dev openal-soft-dev curl-dev freetype-dev zlib-dev gmp-dev jsoncpp-dev luajit-dev zstd-dev
|
||||||
|
|
||||||
|
## Download
|
||||||
|
|
||||||
|
You can install Git for easily keeping your copy up to date.
|
||||||
|
If you don’t want Git, read below on how to get the source without Git.
|
||||||
|
This is an example for installing Git on Debian/Ubuntu:
|
||||||
|
|
||||||
|
sudo apt install git
|
||||||
|
|
||||||
|
For Fedora users:
|
||||||
|
|
||||||
|
sudo dnf install git
|
||||||
|
|
||||||
|
For Arch users:
|
||||||
|
|
||||||
|
sudo pacman -S git
|
||||||
|
|
||||||
|
For Alpine users:
|
||||||
|
|
||||||
|
sudo apk add git
|
||||||
|
|
||||||
|
Download source (this is the URL to the latest of source repository, which might not work at all times) using Git:
|
||||||
|
|
||||||
|
git clone --depth 1 https://github.com/minetest/minetest.git
|
||||||
|
cd minetest
|
||||||
|
|
||||||
|
Download Minetest Game (otherwise only the "Development Test" game is available) using Git:
|
||||||
|
|
||||||
|
git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game
|
||||||
|
|
||||||
|
Download IrrlichtMt to `lib/irrlichtmt`, it will be used to satisfy the IrrlichtMt dependency that way:
|
||||||
|
|
||||||
|
git clone --depth 1 https://github.com/minetest/irrlicht.git lib/irrlichtmt
|
||||||
|
|
||||||
|
Download source, without using Git:
|
||||||
|
|
||||||
|
wget https://github.com/minetest/minetest/archive/master.tar.gz
|
||||||
|
tar xf master.tar.gz
|
||||||
|
cd minetest-master
|
||||||
|
|
||||||
|
Download Minetest Game, without using Git:
|
||||||
|
|
||||||
|
cd games/
|
||||||
|
wget https://github.com/minetest/minetest_game/archive/master.tar.gz
|
||||||
|
tar xf master.tar.gz
|
||||||
|
mv minetest_game-master minetest_game
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
Download IrrlichtMt, without using Git:
|
||||||
|
|
||||||
|
cd lib/
|
||||||
|
wget https://github.com/minetest/irrlicht/archive/master.tar.gz
|
||||||
|
tar xf master.tar.gz
|
||||||
|
mv irrlicht-master irrlichtmt
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Build a version that runs directly from the source directory:
|
||||||
|
|
||||||
|
cmake . -DRUN_IN_PLACE=TRUE
|
||||||
|
make -j$(nproc)
|
||||||
|
|
||||||
|
Run it:
|
||||||
|
|
||||||
|
./bin/minetest
|
||||||
|
|
||||||
|
- Use `cmake . -LH` to see all CMake options and their current state.
|
||||||
|
- If you want to install it system-wide (or are making a distribution package),
|
||||||
|
you will want to use `-DRUN_IN_PLACE=FALSE`.
|
||||||
|
- You can build a bare server by specifying `-DBUILD_SERVER=TRUE`.
|
||||||
|
- You can disable the client build by specifying `-DBUILD_CLIENT=FALSE`.
|
||||||
|
- You can select between Release and Debug build by `-DCMAKE_BUILD_TYPE=<Debug or Release>`.
|
||||||
|
- Debug build is slower, but gives much more useful output in a debugger.
|
||||||
|
- If you build a bare server you don't need to compile IrrlichtMt, just the headers suffice.
|
||||||
|
- In that case use `-DIRRLICHT_INCLUDE_DIR=/some/where/irrlichtmt/include`.
|
||||||
|
|
||||||
|
- Minetest will use the IrrlichtMt package that is found first, given by the following order:
|
||||||
|
1. Specified `IRRLICHTMT_BUILD_DIR` CMake variable
|
||||||
|
2. `${PROJECT_SOURCE_DIR}/lib/irrlichtmt` (if existent)
|
||||||
|
3. Installation of IrrlichtMt in the system-specific library paths
|
||||||
|
4. For server builds with disabled `BUILD_CLIENT` variable, the headers from `IRRLICHT_INCLUDE_DIR` will be used.
|
||||||
|
- NOTE: Changing the IrrlichtMt build directory (includes system installs) requires regenerating the CMake cache (`rm CMakeCache.txt`)
|
55
doc/compiling/macos.md
Normal file
55
doc/compiling/macos.md
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# Compiling on MacOS
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- [Homebrew](https://brew.sh/)
|
||||||
|
- [Git](https://git-scm.com/downloads)
|
||||||
|
|
||||||
|
Install dependencies with homebrew:
|
||||||
|
|
||||||
|
```
|
||||||
|
brew install cmake freetype gettext gmp hiredis jpeg jsoncpp leveldb libogg libpng libvorbis luajit zstd
|
||||||
|
```
|
||||||
|
|
||||||
|
## Download
|
||||||
|
|
||||||
|
Download source (this is the URL to the latest of source repository, which might not work at all times) using Git:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone --depth 1 https://github.com/minetest/minetest.git
|
||||||
|
cd minetest
|
||||||
|
```
|
||||||
|
|
||||||
|
Download Minetest Game (otherwise only the "Development Test" game is available) using Git:
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone --depth 1 https://github.com/minetest/minetest_game.git games/minetest_game
|
||||||
|
```
|
||||||
|
|
||||||
|
Download Minetest's fork of Irrlicht:
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone --depth 1 https://github.com/minetest/irrlicht.git lib/irrlichtmt
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
|
||||||
|
cmake .. \
|
||||||
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.14 \
|
||||||
|
-DCMAKE_FIND_FRAMEWORK=LAST \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=../build/macos/ \
|
||||||
|
-DRUN_IN_PLACE=FALSE -DENABLE_GETTEXT=TRUE
|
||||||
|
|
||||||
|
make -j$(sysctl -n hw.logicalcpu)
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run
|
||||||
|
|
||||||
|
```
|
||||||
|
open ./build/macos/minetest.app
|
||||||
|
```
|
72
doc/compiling/windows.md
Normal file
72
doc/compiling/windows.md
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
# Compiling on Windows using MSVC
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- [Visual Studio 2015 or newer](https://visualstudio.microsoft.com)
|
||||||
|
- [CMake](https://cmake.org/download/)
|
||||||
|
- [vcpkg](https://github.com/Microsoft/vcpkg)
|
||||||
|
- [Git](https://git-scm.com/downloads)
|
||||||
|
|
||||||
|
|
||||||
|
## Compiling and installing the dependencies
|
||||||
|
|
||||||
|
It is highly recommended to use vcpkg as package manager.
|
||||||
|
|
||||||
|
After you successfully built vcpkg you can easily install the required libraries:
|
||||||
|
```powershell
|
||||||
|
vcpkg install zlib zstd curl[winssl] openal-soft libvorbis libogg libjpeg-turbo sqlite3 freetype luajit gmp jsoncpp opengl-registry --triplet x64-windows
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Don't forget about IrrlichtMt.** The easiest way is to clone it to `lib/irrlichtmt` as described in the Linux section.
|
||||||
|
- `curl` is optional, but required to read the serverlist, `curl[winssl]` is required to use the content store.
|
||||||
|
- `openal-soft`, `libvorbis` and `libogg` are optional, but required to use sound.
|
||||||
|
- `luajit` is optional, it replaces the integrated Lua interpreter with a faster just-in-time interpreter.
|
||||||
|
- `gmp` and `jsoncpp` are optional, otherwise the bundled versions will be compiled
|
||||||
|
|
||||||
|
There are other optional libraries, but they are not tested if they can build and link correctly.
|
||||||
|
|
||||||
|
Use `--triplet` to specify the target triplet, e.g. `x64-windows` or `x86-windows`.
|
||||||
|
|
||||||
|
|
||||||
|
## Compile Minetest
|
||||||
|
|
||||||
|
### a) Using the vcpkg toolchain and CMake GUI
|
||||||
|
|
||||||
|
1. Start up the CMake GUI
|
||||||
|
2. Select **Browse Source...** and select DIR/minetest
|
||||||
|
3. Select **Browse Build...** and select DIR/minetest-build
|
||||||
|
4. Select **Configure**
|
||||||
|
5. Choose the right visual Studio version and target platform. It has to match the version of the installed dependencies
|
||||||
|
6. Choose **Specify toolchain file for cross-compiling**
|
||||||
|
7. Click **Next**
|
||||||
|
8. Select the vcpkg toolchain file e.g. `D:/vcpkg/scripts/buildsystems/vcpkg.cmake`
|
||||||
|
9. Click Finish
|
||||||
|
10. Wait until cmake have generated the cash file
|
||||||
|
11. If there are any errors, solve them and hit **Configure**
|
||||||
|
12. Click **Generate**
|
||||||
|
13. Click **Open Project**
|
||||||
|
14. Compile Minetest inside Visual studio.
|
||||||
|
|
||||||
|
### b) Using the vcpkg toolchain and the commandline
|
||||||
|
|
||||||
|
Run the following script in PowerShell:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
cmake . -G"Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GETTEXT=OFF -DENABLE_CURSES=OFF
|
||||||
|
cmake --build . --config Release
|
||||||
|
```
|
||||||
|
Make sure that the right compiler is selected and the path to the vcpkg toolchain is correct.
|
||||||
|
|
||||||
|
|
||||||
|
## Windows Installer using WiX Toolset
|
||||||
|
|
||||||
|
Requirements:
|
||||||
|
* [Visual Studio 2017](https://visualstudio.microsoft.com/)
|
||||||
|
* [WiX Toolset](https://wixtoolset.org/)
|
||||||
|
|
||||||
|
In the Visual Studio 2017 Installer select **Optional Features -> WiX Toolset**.
|
||||||
|
|
||||||
|
Build the binaries as described above, but make sure you unselect `RUN_IN_PLACE`.
|
||||||
|
|
||||||
|
Open the generated project file with Visual Studio. Right-click **Package** and choose **Generate**.
|
||||||
|
It may take some minutes to generate the installer.
|
Loading…
Reference in New Issue
Block a user