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 |
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.
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
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.
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.