Difference between revisions of "Compiling Minetest"

From Minetest Developer Wiki
Jump to navigation Jump to search
(Add a notice pointing to Android)
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
{{Mbox|type=warning|text=
 +
'''This page is redundant with the compilation instructions that exist in the [https://github.com/minetest/minetest Minetest README]'''<br/>
 +
''Link to the appropriate section in the README rather than here, and update any links that point to here!''
 +
}}
 +
 
''This page is about compiling Minetest for desktop platforms. For compiling Minetest for Android, see [[Android]].''
 
''This page is about compiling Minetest for desktop platforms. For compiling Minetest for Android, see [[Android]].''
  
 
== Compiling on GNU/Linux ==
 
== Compiling on GNU/Linux ==
 
+
Please see the [https://github.com/minetest/minetest#compiling-on-gnulinux README.md file] for instructions.
'''''Triple-click to select a whole line. Use <kbd>Ctrl + Shift + V</kbd> to paste in a terminal.'''''
 
 
 
Install dependencies. Here's an example for Debian-based and Ubuntu-based distributions:
 
<pre>
 
apt-get install build-essential cmake git libirrlicht-dev libbz2-dev libgettextpo-dev
 
libfreetype6-dev libpng12-dev libjpeg8-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev
 
libogg-dev libvorbis-dev libopenal-dev libhiredis-dev libcurl3-dev
 
</pre>
 
 
 
Download engine:
 
 
 
<pre>
 
git clone https://github.com/minetest/minetest.git
 
cd minetest/
 
</pre>
 
 
 
Download Minetest Game (otherwise only the "Minimal development test" game is available)
 
<pre>
 
cd games/
 
git clone https://github.com/minetest/minetest_game.git
 
cd ../
 
</pre>
 
 
 
Build the game (the <code>make</code> command is set to automatically detect the number of CPU threads to use):
 
<pre>
 
cmake . -DENABLE_GETTEXT=1 -DENABLE_FREETYPE=1 -DENABLE_LEVELDB=1 -DENABLE_REDIS=1
 
make -j$(grep -c processor /proc/cpuinfo)
 
</pre>
 
 
 
Run it:
 
<pre>
 
cd bin/
 
./minetest
 
</pre>
 
 
 
* Use <code>cmake . -LH</code> to see all CMake options and their current state.
 
* If you want to place user data in the same directory as the Minetest build (good for putting on removable media), you will want to use <code>-DRUN_IN_PLACE=1</code>.
 
* You can build a bare server or a bare client by specifying <code>-DBUILD_CLIENT=0</code> or <code>-DBUILD_SERVER=0</code>.
 
* You can select between a Release and Debug build by <code>-DCMAKE_BUILD_TYPE=<Debug or Release></code>.
 
:* Debug build is slower, but gives much more useful output in a debugger.
 
 
 
=== Building without Irrlicht / X dependency ===
 
 
 
You can build the Minetest server without library dependencies to Irrlicht or any graphical stuff. You still need the Irrlicht headers for this, so first, download the irrlicht source to somewhere.
 
 
 
When invoking CMake, use <code>-DBUILD_CLIENT=0 -DIRRLICHT_SOURCE_DIR=/wherever/you/unzipped/the/source</code>.
 
  
 
=== See also ===
 
=== See also ===
Line 54: Line 13:
  
 
== Compiling on Windows ==
 
== Compiling on Windows ==
 +
Please see the [https://github.com/minetest/minetest#compiling-on-windows-using-msvc Minetest README].
 +
 +
== Cross-compilation ==
 +
To compile a win32 version of Minetest in Linux with [https://en.wikipedia.org/wiki/MinGW MinGW] you can use the build script in <code>[https://github.com/minetest/minetest/blob/master/util/buildbot/buildwin32.sh utils/buildbot/buildwin32.sh]</code>.
  
=== Prerequisites ===
+
To compile a win64 version of Minetest in Linux with [https://en.wikipedia.org/wiki/MinGW MinGW] you can use the build script in <code>[https://github.com/minetest/minetest/blob/master/util/buildbot/buildwin32.sh utils/buildbot/buildwin64.sh]</code>.
  
* [http://www.cmake.org/download/ CMake]
+
If you have errors during cross compilation related to std::thread and std::mutex, this is due to mingw-w64 being incorrectly configured for cross compilation.  
* OpenAL [http://web.archive.org/web/20130629072358/http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx] or [http://sfan5.duckdns.org/upload/data/oalinst.exe]
 
* [http://www.mingw.org MinGW] or [https://www.visualstudio.com/ Visual Studio]
 
* [http://irrlicht.sourceforge.net/downloads.html Irrlicht SDK 1.8]
 
* zlib headers (zlib125.zip) and library (.lib & .dll from zlib125dll.zip) [http://www.winimage.com/zLibDll/index.html]
 
:or build a more recent version yourself [http://www.zlib.net/]
 
* libvorbis
 
:[http://www.dll-files.com/dllindex/dll-files.shtml?libvorbis library]
 
:[http://xiph.org/downloads/ headers]
 
* libvorbisfile
 
:[http://www.dll-files.com/dllindex/dll-files.shtml?libvorbisfile library]
 
:headers: libvorbis/include
 
* libogg
 
:[http://www.dlldump.com/download-dll-files_new.php/dllfiles/L/libogg.dll/-/download.html library]
 
:[http://xiph.org/downloads/ headers]
 
* I don't want to download these libraries
 
:[https://www.dropbox.com/s/t3fuc61116lytva/Minetest_MSVC_Win32_libraries_compiled_170104.7z MSVC pre-compiled libraries] (32-bit)
 
* And, of course, [https://github.com/minetest/minetest ''Minetest''] (Git clone recommended)
 
* Optional: [http://gnuwin32.sourceforge.net/downlinks/gettext.php gettext library and tools]:
 
:Library for UI text translations.
 
* Optional: [http://luajit.org/install.html#windows LuaJIT]
 
:For additional execution speed of mods, may have noticeable memory limits.
 
* Optional: [https://sourceforge.net/projects/gnuwin32/files/freetype/2.3.5-1/ FreeType]
 
:Support for TTF fonts (recommended)
 
  
=== Steps ===
+
To fix the errors, use the command:
    - Select a directory called DIR hereafter in which you will operate.
 
    - Make sure you have CMake and a compiler (MinGW or MSVC) installed.
 
    - Download all other libraries and extract them into your DIR.
 
      ("extract here", not "extract to packagename/")
 
      {{Template:Note|zlib125dll.zip needs to be extracted into zlib125dll}}
 
    - All those packages contain a nice base directory in them, which
 
      should end up being the direct subdirectories of DIR.
 
    - You will end up with a directory structure like this (+ dir, - file):
 
    -----------------
 
    + DIR
 
        - oalinst.exe
 
        - zlib-1.2.5.tar.gz
 
        - zlib125dll.zip
 
        ...
 
        - 110214175330.zip (or whatever, this is the minetest source)
 
        + gettext (optional, for multi language)
 
            + bin
 
            + include
 
            + lib
 
        + irrlicht-1.8.1
 
            + lib
 
            + include
 
            ...
 
        + libogg-1.3.1.zip
 
            + lib
 
            + include
 
            ...
 
        + libvorbis-1.3.3.zip
 
            + lib
 
            + include
 
            ...
 
        + minetest
 
            + src
 
            + doc
 
            - CMakeLists.txt
 
            ...
 
        + minetest-build
 
        + zlib-1.2.5
 
            - zlib.h
 
            + win32
 
            ...
 
        + zlib125dll
 
            - readme.txt
 
            + dll32
 
            ...
 
    -----------------
 
    - Start up the CMake GUI
 
    - Select "Browse Source..." and select DIR/minetest
 
    - Now, if using MSVC:
 
        - Select "Browse Build..." and select DIR/minetest-build
 
    - Else if using MinGW:
 
        - Select "Browse Build..." and select DIR/minetest
 
    - Select "Configure"
 
    - Select your compiler
 
    - It will warn about missing stuff, ignore that at this point. (later don't)
 
    - Make sure the configuration is as follows
 
      (note that the versions may differ for you):
 
  
    BUILD_CLIENT              [X]
+
For 64-bit builds: <code> sudo update-alternatives --config x86_64-w64-mingw32-g++ </code>
    BUILD_SERVER              [ ]
 
    CMAKE_BUILD_TYPE          Release
 
    CMAKE_INSTALL_PREFIX      DIR/minetest-install
 
    RUN_IN_PLACE              [X]
 
    WARN_ALL                  [ ]
 
    GETTEXT_BIN_DIR            DIR/gettext/bin
 
    GETTEXT_INCLUDE_DIR        DIR/gettext/include
 
    GETTEXT_LIBRARIES          DIR/gettext/lib/libintl.lib
 
    IRRLICHT_SOURCE_DIR        DIR/irrlicht-1.8.1
 
    IRRLICHT_LIBRARY          DIR/irrlicht-1.8.1/lib/?/Irrlicht.lib
 
    OGG_INCLUDE_DIR            DIR/libogg-1.3.1/include
 
    OGG_LIBRARIES              DIR/libogg-1.3.1/?/libogg.lib
 
    VORBIS_INCLUDE_DIR        DIR/libvorbis-1.3.3/include
 
    VORBIS_LIBRARY            DIR/libvorbis-1.3.3/?/libvorbis.lib
 
    VORBISFILE_INCLUDE_DIR    DIR/libvorbis-1.3.3/include
 
    VORBISFILE_LIBRARY        DIR/libvorbis-1.3.3/?/libvorbisfile.lib
 
    OPENAL_INCLUDE_DIR        %programfiles%\OpenAL\include
 
    OPENAL_LIBRARY            %programfiles%\OpenAL\lib\OpenAL32.lib
 
    ZLIB_DLL                  DIR/zlib125dll/dll32/zlibwapi.dll
 
    ZLIB_INCLUDE_DIR          DIR/zlib-1.2.5
 
    ZLIB_LIBRARIES            DIR/zlib125dll/dll32/zlibwapi.lib
 
  
    - See also: [http://krock-works.16mb.com/MTstuff/Compile_Minetest_MSVC.txt Differently explained CMake setup]
+
For 32-bit Ubuntu Builds: <code> sudo update-alternatives --config i686-w64-mingw32-g++ </code>
    - Hit "Configure", two times 8)
 
    - If something is still coloured red, you have a problem.
 
    - Hit "Generate"
 
    If using MSVC:
 
        - Open the generated minetest.sln
 
        - Switch the configuration from "Debug" to "Release", unless you want to
 
        debug some stuff (it's slower and might not even work at all)
 
        - Build the ALL_BUILD project
 
        - Build the INSTALL project
 
        You may want to use console commands to compile Minetest:
 
            - Find MSBuild.exe in %windir%\Microsoft.NET\Framework\v?.?.?\MSBuild.exe
 
            - Add the path to your system PATH variable
 
            - Compile Minetest by switching to your DIR\minetest-build
 
                MSBuild.exe ALL_BUILD.vcxproj /p:Configuration=Release
 
        - You should now have a working game with the executable in
 
            DIR/minetest-install/bin/minetest.exe
 
        - Additionally you may create a zip package by building the PACKAGE
 
          project.
 
    If using MinGW:
 
        - Using the command line, browse to the build directory and run 'make'
 
          (or mingw32-make or whatever it happens to be)
 
        - You may need to copy some of the downloaded DLLs into bin/, see what
 
          running the produced executable tells you it doesn't have.
 
        - You should now have a working game with the executable in
 
            DIR/minetest/bin/minetest.exe
 
  
== Cross-compilation ==
+
For 32-bit Debian Builds: <code> sudo update-alternatives --config i586-w64-mingw32-g++ </code>
To compile a win32 version of Minetest in Linux with [https://en.wikipedia.org/wiki/MinGW MinGW] you can use the build script in <code>[https://github.com/minetest/minetest/blob/master/util/buildbot/buildwin32.sh utils/buildbot/buildwin32.sh]</code>.
 
  
== Full Windows build ==
+
When provided with a prompt for which version to select, please choose "posix". Then retry the buildwin32.sh or buildwin64.sh
  
'''[[Build Win32 Minetest including all required libraries]]'''
 
 
[[Category:Core Engine]]
 
[[Category:Core Engine]]
 
[[Category:Compiling Minetest]]
 
[[Category:Compiling Minetest]]

Revision as of 18:00, 22 January 2023

Mbox warning.png This page is redundant with the compilation instructions that exist in the Minetest README
Link to the appropriate section in the README rather than here, and update any links that point to here!

This page is about compiling Minetest for desktop platforms. For compiling Minetest for Android, see Android.

Compiling on GNU/Linux

Please see the README.md file for instructions.

See also

Compiling on Windows

Please see the Minetest README.

Cross-compilation

To compile a win32 version of Minetest in Linux with MinGW you can use the build script in utils/buildbot/buildwin32.sh.

To compile a win64 version of Minetest in Linux with MinGW you can use the build script in utils/buildbot/buildwin64.sh.

If you have errors during cross compilation related to std::thread and std::mutex, this is due to mingw-w64 being incorrectly configured for cross compilation.

To fix the errors, use the command:

For 64-bit builds: sudo update-alternatives --config x86_64-w64-mingw32-g++

For 32-bit Ubuntu Builds: sudo update-alternatives --config i686-w64-mingw32-g++

For 32-bit Debian Builds: sudo update-alternatives --config i586-w64-mingw32-g++

When provided with a prompt for which version to select, please choose "posix". Then retry the buildwin32.sh or buildwin64.sh