Library Install Status Link Status Difficulty
Overall Complete Okay Very Hard
MinGW-w64 Installed Okay Hard
PhysicsFS No Makefile Skipped Skipped
LibIntl Installed (x86) Problem Unknown
LibJPEG Turbo Installed (x86) Okay Medium-Easy
LibOGG Compiled (x86) Okay Easy
LibPNG Compiled (x86) Okay Medium-Easy
LibVorbis Compiled (x86) Okay Medium-Easy
SDL2 Installed (x86) Okay Medium-Easy
SDL2_net Installed (x86) Problem Unknown
SDL2_ttf Installed (x86) Okay Easy
zLib Installed (both) Okay Very Easy

Archival Note

This document was initially written around 2014. Since Neverball still is being maintained, chances are something will need to be adapted in order to get a fresh native setup working correctly once more.

Additional Notes

Detailed Notes about MinGW

Being open-source under the GNU General Public License, MinGW has a wide variety of forks and builds. I first figured I'd use the original MinGW, but parasti recommends using MinGW-W64 from MinGW-builds. I am not certain if it is just the build I'm using (which came from MinGW-w64), or if it is Windows 8.1, but GCC does not seem to be reading the default include locations that it is supposed to read.

If one has this problem, it can be worked around by setting the C_INCLUDE_PATH and LIBRARY_PATH environment variables. I managed to configure and compile LibVorbis this way, but I have not yet figured out a way to save this configuration. In the meantime, I saved the commands below to a script file named sc/common.sh.

Since the MinGW build I am using defaults to building 64-bit binaries, I must supply the -m32 switch to the CC variable to build 32-bit binaries and libraries. To workaround icon-related linker errors, I must define the WINDRES variable as windres -F pe-i386.

#!/bin/bash
C_INCLUDE_PATH=/usr/local/include:/mingw/include
LIBRARY_PATH=/usr/local/lib:/mingw/lib
CC='gcc -m32'
WINDRES='windres -F pe-i386'
export C_INCLUDE_PATH; export LIBRARY_PATH; export CC; export WINDRES
echo "Common parameters set"

The last line is completely optional, but you get no feedback if you omit this line. Just simply running the script is not enough. In order to ensure its variables carry over into the main session, I must precede the execution with the word source (short "."), as shown below.

csy@pjr-octo ~
$ source sc/common.sh
Common parameters set

Detailed output from cpp

When cpp -v is run after the changes above are made, a couple of extra lines are gained in the #include <...> search. My build location is C:\CSGames\MinGW64.

csy@pjr-octo ~
$ cpp -v
Using built-in specs.
COLLECT_GCC=c:\csgames\mingw64\bin\cpp.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-4.8.2/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw482/x86_64-482-win32-sjlj-rt_v3-rev3/mingw64 --with-gxx-include-dir=/mingw64/x86_64-w64-mingw32/include/c++ --enable-shared --enable-static --enable-targets=all --enable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-sjlj-exceptions --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch-32=i686 --with-arch-64=nocona --with-tune-32=generic --with-tune-64=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw482/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw482/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw482/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw482/prerequisites/x86_64-w64-mingw32-static --with-cloog=/c/mingw482/prerequisites/x86_64-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='x86_64-win32-sjlj-rev3, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw482/x86_64-482-win32-sjlj-rt_v3-rev3/mingw64/opt/include -I/c/mingw482/prerequisites/x86_64-zlib-static/include -I/c/mingw482/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw482/x86_64-482-win32-sjlj-rt_v3-rev3/mingw64/opt/include -I/c/mingw482/prerequisites/x86_64-zlib-static/include -I/c/mingw482/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw482/x86_64-482-win32-sjlj-rt_v3-rev3/mingw64/opt/lib -L/c/mingw482/prerequisites/x86_64-zlib-static/lib -L/c/mingw482/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: win32
gcc version 4.8.2 (x86_64-win32-sjlj-rev3, Built by MinGW-W64 project)
COLLECT_GCC_OPTIONS='-E' '-v' '-mtune=core2' '-march=nocona'
 c:/csgames/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/4.8.2/cc1.exe -E -quiet -v -iprefix c:/csgames/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.2/ -U_REENTRANT - -mtune=core2 -march=nocona
ignoring duplicate directory "c:/csgames/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.8.2/include"
ignoring nonexistent directory "C:/mingw482/x86_64-482-win32-sjlj-rt_v3-rev3/mingw64D:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.2/../../../../include"
ignoring duplicate directory "c:/csgames/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.8.2/include-fixed"
ignoring duplicate directory "c:/csgames/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.8.2/../../../../x86_64-w64-mingw32/include"
ignoring nonexistent directory "C:/mingw482/x86_64-482-win32-sjlj-rt_v3-rev3/mingw64/mingw/include"
#include "..." search starts here:
#include <...> search starts here:
 C:\CSGames\mingw64\msys\1.0\local\include
 c:\csgames\mingw64\include
 c:/csgames/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.2/include
 c:/csgames/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.2/include-fixed
 c:/csgames/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.2/../../../../x86_64-w64-mingw32/include
End of search list.

The trial towards successfully including libintl

Despite having installed libintl, I still encounter a problem getting it to work successfully. Something in the tr.po file triggers a fatal error, stopping compilation.

csy@pjr-octo ~
$ make PLATFORM=mingw ENABLE_FS=stdio
scripts/version.sh: line 23: git: command not found
Will make a "devel" build of Neverball .
.....
make -C po
make[1]: Entering directory `/home/csy/neverSvn/clockwork/po'
mkdir -p ../locale/ar/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/ar/LC_MESSAGES/neverball.mo ar.po
8 translated messages, 351 untranslated messages.
mkdir -p ../locale/bg/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/bg/LC_MESSAGES/neverball.mo bg.po
130 translated messages, 229 untranslated messages.
mkdir -p ../locale/ca/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/ca/LC_MESSAGES/neverball.mo ca.po
140 translated messages, 219 untranslated messages.
mkdir -p ../locale/de/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/de/LC_MESSAGES/neverball.mo de.po
359 translated messages.
mkdir -p ../locale/el/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/el/LC_MESSAGES/neverball.mo el.po
58 translated messages, 301 untranslated messages.
mkdir -p ../locale/eo/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/eo/LC_MESSAGES/neverball.mo eo.po
263 translated messages, 96 untranslated messages.
mkdir -p ../locale/es/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/es/LC_MESSAGES/neverball.mo es.po
284 translated messages, 75 untranslated messages.
mkdir -p ../locale/fi/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/fi/LC_MESSAGES/neverball.mo fi.po
117 translated messages, 242 untranslated messages.
mkdir -p ../locale/fr/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/fr/LC_MESSAGES/neverball.mo fr.po
358 translated messages, 1 untranslated message.
mkdir -p ../locale/gd/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/gd/LC_MESSAGES/neverball.mo gd.po
359 translated messages.
mkdir -p ../locale/gl/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/gl/LC_MESSAGES/neverball.mo gl.po
287 translated messages, 72 untranslated messages.
mkdir -p ../locale/hu/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/hu/LC_MESSAGES/neverball.mo hu.po
288 translated messages, 71 untranslated messages.
mkdir -p ../locale/it/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/it/LC_MESSAGES/neverball.mo it.po
359 translated messages.
mkdir -p ../locale/ko/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/ko/LC_MESSAGES/neverball.mo ko.po
115 translated messages, 244 untranslated messages.
mkdir -p ../locale/kw/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/kw/LC_MESSAGES/neverball.mo kw.po
136 translated messages, 223 untranslated messages.
mkdir -p ../locale/lv/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/lv/LC_MESSAGES/neverball.mo lv.po
113 translated messages, 246 untranslated messages.
mkdir -p ../locale/nl/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/nl/LC_MESSAGES/neverball.mo nl.po
158 translated messages, 201 untranslated messages.
mkdir -p ../locale/nn/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/nn/LC_MESSAGES/neverball.mo nn.po
322 translated messages, 37 untranslated messages.
mkdir -p ../locale/pl/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/pl/LC_MESSAGES/neverball.mo pl.po
291 translated messages, 68 untranslated messages.
mkdir -p ../locale/pt_BR/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/pt_BR/LC_MESSAGES/neverball.mo pt_BR.po
287 translated messages, 72 untranslated messages.
mkdir -p ../locale/ru/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/ru/LC_MESSAGES/neverball.mo ru.po
227 translated messages, 132 untranslated messages.
mkdir -p ../locale/sk/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/sk/LC_MESSAGES/neverball.mo sk.po
281 translated messages, 78 untranslated messages.
mkdir -p ../locale/sl/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/sl/LC_MESSAGES/neverball.mo sl.po
359 translated messages.
mkdir -p ../locale/sv/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/sv/LC_MESSAGES/neverball.mo sv.po
215 translated messages, 144 untranslated messages.
mkdir -p ../locale/tr/LC_MESSAGES/
msgfmt -c --statistics -o ../locale/tr/LC_MESSAGES/neverball.mo tr.po
c:\csgames\mingw64\bin\msgfmt.exe: tr.po: field `Last-Translator' still has initial default value
c:\csgames\mingw64\bin\msgfmt.exe: found 1 fatal error
make[1]: *** [../locale/tr/LC_MESSAGES/neverball.mo] Error 1
make[1]: Leaving directory `/home/csy/neverSvn/clockwork/po'
make: *** [locales] Error 2

I have isolated this problem. This very same problem is also in the master trunk, so it is not exclusive to my build. Excluding the file, and I instead endure crashes during compilation.