Difference between revisions of "Compiling Luanti"

From Minetest Developer Wiki
Jump to navigation Jump to search
Line 53: Line 53:
 
When invoking cmake, use <code>-DBUILD_CLIENT=0 -DIRRLICHT_SOURCE_DIR=/wherever/you/unzipped/the/source</code>.
 
When invoking cmake, use <code>-DBUILD_CLIENT=0 -DIRRLICHT_SOURCE_DIR=/wherever/you/unzipped/the/source</code>.
  
==Compiling on Windows==
+
Compiling on Windows:
<pre>
+
---------------------
- This section is outdated. In addition to what is described here:
 
  - In addition to minetest, you need to download minetest_game.
 
  - If you wish to have sound support, you need libogg, libvorbis and libopenal
 
  
 
- You need:
 
- You need:
* CMake:
+
    * CMake:
http://www.cmake.org/cmake/resources/software.html
+
        [url]http://www.cmake.org/cmake/resources/software.html[/url]
* MinGW or Visual Studio
+
    * OpenAl:
http://www.mingw.org/
+
        [url]http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx[/url]
http://msdn.microsoft.com/en-us/vstudio/default
+
    * MinGW or Visual Studio
* Irrlicht SDK 1.7:
+
        [url]http://www.mingw.org[/url]/
http://irrlicht.sourceforge.net/downloads.html
+
        [url]http://msdn.microsoft.com/en-us/vstudio/default[/url]
* Zlib headers (zlib125.zip)
+
    * Irrlicht SDK 1.7:
http://www.winimage.com/zLibDll/index.html
+
        [url]http://irrlicht.sourceforge.net/downloads.html[/url]
* Zlib library (zlibwapi.lib and zlibwapi.dll from zlib125dll.zip):
+
    * Zlib headers (zlib125.zip)
http://www.winimage.com/zLibDll/index.html
+
        [url]http://www.winimage.com/zLibDll/index.html[/url]
* Optional: gettext bibrary and tools:
+
    * Zlib library (zlibwapi.lib and zlibwapi.dll from zlib125dll.zip):
http://gnuwin32.sourceforge.net/downlinks/gettext.php
+
        [url]http://www.winimage.com/zLibDll/index.html[/url]
- This is used for other UI languages. Feel free to leave it out.
+
    * Optional: gettext bibrary and tools:
* And, of course, Minetest:
+
        [url]http://gnuwin32.sourceforge.net/downlinks/gettext.php[/url]
http://minetest.net/download.php
+
        - This is used for other UI languages. Feel free to leave it out.
 +
    * Libvorbis 1.3.3
 +
                DLL=[url]http://www.dll-files.com/dllindex/dll-files.shtml?libvorbis[/url]
 +
                INCLUDE=[url]http://xiph.org/downloads/[/url]
 +
    *Libvorbisfile
 +
                DLL=[url]http://www.dll-files.com/dllindex/dll-files.shtml?libvorbisfile[/url]
 +
                INCLUDE=libvorbis/include
 +
    *Libogg
 +
                INCLUDE=[url]http://xiph.org/downloads/[/url]
 +
                DLL= [url]http://www.dlldump.com/download-dll-files_new.php/dllfiles/L/libogg.dll/-/download.html[/url]
 +
    * And, of course, Minetest-c55:
 +
        [url]http://c55.me/minetest/download[/url]
 
- Steps:
 
- Steps:
- Select a directory called DIR hereafter in which you will operate.
+
    - Select a directory called DIR hereafter in which you will operate.
- Make sure you have CMake and a compiler installed.
+
    - Make sure you have CMake and a compiler installed.
- Download all the other stuff to DIR and extract them into there.
+
    - Download all the other stuff to DIR and extract them into there.
  ("extract here", not "extract to packagename/")
+
      ("extract here", not "extract to packagename/")
  NOTE: zlib125dll.zip needs to be extracted into zlib125dll
+
      NOTE: zlib125dll.zip needs to be extracted into zlib125dll
- All those packages contain a nice base directory in them, which
+
    - All those packages contain a nice base directory in them, which
  should end up being the direct subdirectories of DIR.
+
      should end up being the direct subdirectories of DIR.
- You will end up with a directory structure like this (+=dir, -=file):
+
    - You will end up with a directory structure like this (+=dir, -=file):
-----------------
+
    -----------------
+ DIR
+
+ DIR
- zlib-1.2.5.tar.gz
+
                              - oalinst.exe
- zlib125dll.zip
+
        - zlib-1.2.5.tar.gz
- irrlicht-1.7.1.zip
+
        - zlib125dll.zip
- 110214175330.zip (or whatever, this is the minetest source)
+
        - irrlicht-1.7.1.zip
+ zlib-1.2.5
+
                - libvorbis-1.3.3.zip
- zlib.h
+
                - libogg-1.3.0.zip
+ win32
+
        - 110214175330.zip (or whatever, this is the minetest source)
...
+
        + zlib-1.2.5
+ zlib125dll
+
            - zlib.h
- readme.txt
+
            + win32
+ dll32
+
            ...
...
+
        + zlib125dll
+ irrlicht-1.7.1
+
            - readme.txt
+ lib
+
            + dll32
+ include
+
            ...
...
+
        + irrlicht-1.7.1
+ gettext (optional)
+
            + lib
+bin
+
            + include
+include
+
            ...
+lib
+
        + libvorbis-1.3.3.zip
+ minetest
+
                      + lib
+ src
+
                      + include
+ doc
+
                        ...
- CMakeLists.txt
+
        + libogg-1.3.0.zip
...
+
                      + lib
-----------------
+
                      + include
- Start up the CMake GUI
+
                        ...
- Select "Browse Source..." and select DIR/minetest
+
        + gettext (optional)
- Now, if using MSVC:
+
            +bin
- Select "Browse Build..." and select DIR/minetest-build
+
            +include
- Else if using MinGW:
+
            +lib
- Select "Browse Build..." and select DIR/minetest
+
        + minetest
- Select "Configure"
+
            + src
- Select your compiler
+
            + doc
- It will warn about missing stuff, ignore that at this point. (later don't)
+
            - CMakeLists.txt
- Make sure the configuration is as follows
+
            ...
  (note that the versions may differ for you):
+
    -----------------
-----------------
+
    - Start up the CMake GUI
BUILD_CLIENT             [X]
+
    - Select "Browse Source..." and select DIR/minetest
BUILD_SERVER             [ ]
+
    - Now, if using MSVC:
CMAKE_BUILD_TYPE         Release
+
        - Select "Browse Build..." and select DIR/minetest-build
CMAKE_INSTALL_PREFIX    DIR/minetest-install
+
    - Else if using MinGW:
IRRLICHT_SOURCE_DIR     DIR/irrlicht-1.7.1
+
        - Select "Browse Build..." and select DIR/minetest
RUN_IN_PLACE             [X]
+
    - Select "Configure"
WARN_ALL                 [ ]
+
    - Select your compiler
ZLIB_DLL                 DIR/zlib125dll/dll32/zlibwapi.dll
+
    - It will warn about missing stuff, ignore that at this point. (later don't)
ZLIB_INCLUDE_DIR         DIR/zlib-1.2.5
+
    - Make sure the configuration is as follows
ZLIB_LIBRARIES           DIR/zlib125dll/dll32/zlibwapi.lib
+
      (note that the versions may differ for you):
GETTEXT_BIN_DIR         DIR/gettext/bin
+
-------------------------------------------------------------
GETTEXT_INCLUDE_DIR     DIR/gettext/include
+
        BUILD_CLIENT                         [X]
GETTEXT_LIBRARIES       DIR/gettext/lib/intl.lib
+
    BUILD_SERVER                       [ ]
GETTEXT_MSGFMT           DIR/gettext/bin/msgfmt
+
    CMAKE_BUILD_TYPE             Release
-----------------
+
    CMAKE_INSTALL_PREFIX    DIR/minetest-install
- Hit "Configure"
+
    IRRLICHT_SOURCE_DIR       DIR/irrlicht-1.7.1
- Hit "Configure" once again 8)
+
    RUN_IN_PLACE                       [X]
- If something is still coloured red, you have a problem.
+
    WARN_ALL                                 [ ]
- Hit "Generate"
+
    ZLIB_DLL                                   DIR/zlib125dll/dll32/zlibwapi.dll
If using MSVC:
+
    ZLIB_INCLUDE_DIR                 DIR/zlib-1.2.5
- Open the generated minetest.sln
+
    ZLIB_LIBRARIES                       DIR/zlib125dll/dll32/zlibwapi.lib
- The project defaults to the "Debug" configuration. Make very sure to
+
    LIBVORBIS_INCLUDE_DIR    DIR/libvorbis-1.3.3/include
  select "Release", unless you want to debug some stuff (it's slower
+
    LIBVORBIS_LIBRARIES          DIR/libvorbis.dll
  and might not even work at all)
+
    LIBVORBISFILE_INCLUDE_DIR    DIR/libvorbis-1.3.3/include
- Build the ALL_BUILD project
+
    LIBVORBISFILE_LIBRARIES          DIR/libvorbisfile.dll
- Build the INSTALL project
+
    LIBOGG_INCLUDE_DIR          DIR/libogg-1.3.0/include
- You should now have a working game with the executable in
+
    LIBOGG_LIBRARIES                DIR/libogg.dll
DIR/minetest-install/bin/minetest.exe
+
    GETTEXT_BIN_DIR                 DIR/gettext/bin
- Additionally you may create a zip package by building the PACKAGE
+
    GETTEXT_INCLUDE_DIR       DIR/gettext/include
  project.
+
    GETTEXT_LIBRARIES             DIR/gettext/lib/intl.lib
If using MinGW:
+
    GETTEXT_MSGFMT                 DIR/gettext/bin/msgfmt
- Using the command line, browse to the build directory and run 'make'
+
    OPENAL_INCLUDE_DIR=C:\Program Files (x86)\OpenAL\include
  (or mingw32-make or whatever it happens to be)
+
    OPENAL_LIBRARIES=C:\Program Files (x86)\OpenAL\lib\OpenAL32.lib
- You may need to copy some of the downloaded DLLs into bin/, see what
+
- Hit "Configure"
  running the produced executable tells you it doesn't have.
+
    - Hit "Configure" once again 8)
- You should now have a working game with the executable in
+
    - If something is still coloured red, you have a problem.
DIR/minetest/bin/minetest.exe
+
    - Hit "Generate"
</pre>
+
    If using MSVC:
 +
        - Open the generated minetest.sln
 +
        - The project defaults to the "Debug" configuration. Make very sure to
 +
          select "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 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
 +
 
 +
Windows releases of minetest are built using a bat script like this:
 +
--------------------------------------------------------------------
 +
 
 +
set sourcedir=%CD%
 +
set installpath="C:\tmp\minetest_install"
 +
set irrlichtpath="C:\tmp\irrlicht-1.7.2"
 +
 
 +
set builddir=%sourcedir%\bvc10
 +
mkdir %builddir%
 +
pushd %builddir%
 +
cmake %sourcedir% -G "Visual Studio 10" -DIRRLICHT_SOURCE_DIR=%irrlichtpath% -DRUN_IN_PLACE=1 -DCMAKE_INSTALL_PREFIX=%installpath%
 +
if %errorlevel% neq 0 goto fail
 +
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" ALL_BUILD.vcxproj /p:Configuration=Release
 +
if %errorlevel% neq 0 goto fail
 +
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" INSTALL.vcxproj /p:Configuration=Release
 +
if %errorlevel% neq 0 goto fail
 +
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" PACKAGE.vcxproj /p:Configuration=Release
 +
if %errorlevel% neq 0 goto fail
 +
popd
 +
echo Finished.
 +
exit /b 0
 +
 
 +
:fail
 +
popd
 +
echo Failed.
 +
exit /b 1
  
 
== Cross compile ==
 
== Cross compile ==
 
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>.
 
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>.

Revision as of 20:08, 6 August 2013

Compiling on GNU/Linux

Install dependencies. Here's an example for Debian/Ubuntu/Mint:

$ apt-get install build-essential libirrlicht-dev cmake libbz2-dev \
libpng12-dev libjpeg8-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev \
libogg-dev libvorbis-dev libopenal-dev

(If you want to use Minetest on languages other than English, you have to install gettext package and it's dependencies too.)

Download source, extract (this is the URL to the latest of source repository, which might not work at all times):

(Note: It is recommended to use Git to get the source)

$ wget https://github.com/minetest/minetest/tarball/master -O master.tar.gz
$ tar xf master.tar.gz
$ cd minetest-minetest-286edd4 (or similar)

Download minetest_game (otherwise only the "Minimal development test" game is available)

$ cd games/
$ wget https://github.com/minetest/minetest_game/tarball/master -O master.tar.gz
$ tar xf master.tar.gz
$ mv minetest-minetest_game-* minetest_game
$ cd ..

Build a version that runs directly from the source directory:

$ cmake . -DRUN_IN_PLACE=1
$ make -j2

Run it:

$ cd bin
$ ./minetest
  • Use cmake . -LH to see all CMake options and their current state
  • If you want to place user data in ~/.minetest, install it system-wide (or are making a distribution package), you will want to use -DRUN_IN_PLACE=0
  • You can build a bare server or a bare client by specifying -DBUILD_CLIENT=0 or -DBUILD_SERVER=0
  • If you want to use others languages than English, add -DENABLE_GETTEXT=1 as a cmake parameter.
  • 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

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 -DBUILD_CLIENT=0 -DIRRLICHT_SOURCE_DIR=/wherever/you/unzipped/the/source.

Compiling on Windows:


- You need:

   * CMake:
       [url]http://www.cmake.org/cmake/resources/software.html[/url]
   * OpenAl:
       [url]http://connect.creativelabs.com/openal/Downloads/Forms/AllItems.aspx[/url]
   * MinGW or Visual Studio
       [url]http://www.mingw.org[/url]/
       [url]http://msdn.microsoft.com/en-us/vstudio/default[/url]
   * Irrlicht SDK 1.7:
       [url]http://irrlicht.sourceforge.net/downloads.html[/url]
   * Zlib headers (zlib125.zip)
       [url]http://www.winimage.com/zLibDll/index.html[/url]
   * Zlib library (zlibwapi.lib and zlibwapi.dll from zlib125dll.zip):
       [url]http://www.winimage.com/zLibDll/index.html[/url]
   * Optional: gettext bibrary and tools:
       [url]http://gnuwin32.sourceforge.net/downlinks/gettext.php[/url]
       - This is used for other UI languages. Feel free to leave it out.
   * Libvorbis 1.3.3
               DLL=[url]http://www.dll-files.com/dllindex/dll-files.shtml?libvorbis[/url]
               INCLUDE=[url]http://xiph.org/downloads/[/url]
   *Libvorbisfile
               DLL=[url]http://www.dll-files.com/dllindex/dll-files.shtml?libvorbisfile[/url]
               INCLUDE=libvorbis/include
   *Libogg
               INCLUDE=[url]http://xiph.org/downloads/[/url]
               DLL= [url]http://www.dlldump.com/download-dll-files_new.php/dllfiles/L/libogg.dll/-/download.html[/url]
   * And, of course, Minetest-c55:
       [url]http://c55.me/minetest/download[/url]

- Steps:

   - Select a directory called DIR hereafter in which you will operate.
   - Make sure you have CMake and a compiler installed.
   - Download all the other stuff to DIR and extract them into there.
     ("extract here", not "extract to packagename/")
     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
       - irrlicht-1.7.1.zip
               - libvorbis-1.3.3.zip
               - libogg-1.3.0.zip
       - 110214175330.zip (or whatever, this is the minetest source)
       + zlib-1.2.5
           - zlib.h
           + win32
           ...
       + zlib125dll
           - readme.txt
           + dll32
           ...
       + irrlicht-1.7.1
           + lib
           + include
           ...
       + libvorbis-1.3.3.zip
                      + lib
                      + include
                        ...
       + libogg-1.3.0.zip
                      + lib
                      + include
                        ...
       + gettext (optional)
           +bin
           +include
           +lib
       + minetest
           + src
           + doc
           - CMakeLists.txt
           ...
   -----------------
   - 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]
   BUILD_SERVER                       [  ]
   CMAKE_BUILD_TYPE             Release
   CMAKE_INSTALL_PREFIX     DIR/minetest-install
   IRRLICHT_SOURCE_DIR       DIR/irrlicht-1.7.1
   RUN_IN_PLACE                        [X]
   WARN_ALL                                 [  ]
   ZLIB_DLL                                    DIR/zlib125dll/dll32/zlibwapi.dll
   ZLIB_INCLUDE_DIR                 DIR/zlib-1.2.5
   ZLIB_LIBRARIES                       DIR/zlib125dll/dll32/zlibwapi.lib
   LIBVORBIS_INCLUDE_DIR    DIR/libvorbis-1.3.3/include
   LIBVORBIS_LIBRARIES           DIR/libvorbis.dll
   LIBVORBISFILE_INCLUDE_DIR    DIR/libvorbis-1.3.3/include
   LIBVORBISFILE_LIBRARIES           DIR/libvorbisfile.dll
   LIBOGG_INCLUDE_DIR          DIR/libogg-1.3.0/include
   LIBOGG_LIBRARIES                DIR/libogg.dll
   GETTEXT_BIN_DIR                  DIR/gettext/bin
   GETTEXT_INCLUDE_DIR       DIR/gettext/include
   GETTEXT_LIBRARIES             DIR/gettext/lib/intl.lib
   GETTEXT_MSGFMT                 DIR/gettext/bin/msgfmt
   OPENAL_INCLUDE_DIR=C:\Program Files (x86)\OpenAL\include
   OPENAL_LIBRARIES=C:\Program Files (x86)\OpenAL\lib\OpenAL32.lib

- Hit "Configure"

   - Hit "Configure" once again 8)
   - If something is still coloured red, you have a problem.
   - Hit "Generate"
   If using MSVC:
       - Open the generated minetest.sln
       - The project defaults to the "Debug" configuration. Make very sure to
         select "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 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

Windows releases of minetest are built using a bat script like this:


set sourcedir=%CD% set installpath="C:\tmp\minetest_install" set irrlichtpath="C:\tmp\irrlicht-1.7.2"

set builddir=%sourcedir%\bvc10 mkdir %builddir% pushd %builddir% cmake %sourcedir% -G "Visual Studio 10" -DIRRLICHT_SOURCE_DIR=%irrlichtpath% -DRUN_IN_PLACE=1 -DCMAKE_INSTALL_PREFIX=%installpath% if %errorlevel% neq 0 goto fail "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" ALL_BUILD.vcxproj /p:Configuration=Release if %errorlevel% neq 0 goto fail "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" INSTALL.vcxproj /p:Configuration=Release if %errorlevel% neq 0 goto fail "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" PACKAGE.vcxproj /p:Configuration=Release if %errorlevel% neq 0 goto fail popd echo Finished. exit /b 0

fail

popd echo Failed. exit /b 1

Cross compile

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