User Tools

Site Tools


user:draugthewhopper:windowsbuild

This is an old revision of the document!


Links

to various Windows build instructions:

Release Guide -> Windows (2014 or older)

CaveSomething's CMake instructions (2010 or older)

Server compiling with Visual Studio 6 (contains passing references to gtk client builds)

MinGW and CMake instructions from ~2018 (External on xob.kapsi.fi/~makegho)

My Notes

loosely based on the makegho 2018 instructions:

These instructions assume a fresh, clean 32-bit windows 10 machine.

Install compiler tools:

Go to http://www.msys2.org/

Download and run latest i686 installer (msys2-i686-20190524.exe)

Start an msys2 32-bit shell (“MSYS2 MinGW 32-bit” in the start menu) and type:

pacman -S mingw-w64-i686-gcc 
pacman -S mingw-w64-i686-make
pacman -S mingw-w64-i686-pkg-config
pacman -S mingw-w64-i686-vala
pacman -S mingw-w64-i686-SDL_image
pacman -S mingw-w64-i686-SDL_mixer

Alternatively, do a oneliner:

pacman -S mingw-w64-i686-gcc pacman -S mingw-w64-i686-make pacman -S mingw-w64-i686-pkg-config pacman -S mingw-w64-i686-vala pacman -S mingw-w64-i686-SDL_image pacman -S mingw-w64-i686-SDL_mixer

Add c:\msys32\mingw32\bin to path

Install PERL:

http://strawberryperl.com/releases.html

Download portable 32 bit edition

Extract to C:\perl

Add C:\perl\perl\bin to path.

Note that this can cause some issues, especially if CMake tries to use perl-supplied components instead of those from MSYS/MinGW

Download and extract CrossFire source to e.g. c:\cfsource.rxxxxx.

https://sourceforge.net/projects/crossfire/files/crossfire-client/

Install latest CMake 32-bit:

https://cmake.org/download/

Run CMake gui:

Set source code directory, e.g. c:/cfsource.rxxxxx

Set binary directory, e.g. c:/cfbuild

Click 'Configure' and choose 'MinGW Makefiles'

Change CMAKE_INSTALL_PREFIX to something reasonable

(C:\Program Files (x86)\… is probably read only).

(Nothing seems to be put in this folder anyway?)

If CMake finds wrong include directories, e.g. from Visual Studio, change them manually to 'C:\msys32\mingw32\include'

If CMake fails near a pkgconfig or gtk/gio item, check to make sure that it hasn’t defaulted the PKG_CONFIG_EXECUTABLE to a perl directory. If so, revert it to the msys32 one, probably C:\msys32\mingw32\bin\pkg-config.exe

Click “Configure” again, hope no errors occur.

Once it finally doesn’t have warnings or errors, Click 'generate'.

If configuring goes wrong, delete directory c:\cfbuild\CMakeFiles and try again.

Compile:

Open msys32 32-bit shell (“MSYS2 MinGW 32-bit” in the Start Menu)

Go to c:\cfbuild

run mingw32-make.exe

Create release package:

Run 'mingw32-make install', though it doesn't seem to do much.

Make directory 'release', somewhere in your system

Copy \cfbuild\bin\crossfire-client-gtk2.exe to release\

Create dir release\bin, and copy \cfbuild\bin\cfsndserv.exe to it

Copy directory 'share' to release\

At this point, the client should run more or less fine, at least in your dev environment. Now we need to prep it so it can be run on other systems (but this is the broken part).

In release, create a folder called “lib”, and copy “gdk-pixbuf-2.0” and “gtk-2.0” from “C:\msys32\mingw32\lib”.

This fixes some xpm warnings, and makes a few GUI icons render correctly, apparently a very few gui elements are xpm?

Fetch “msys32\mingw32\share\themes” and place it in “release\share\”. This fixes an issue that breaks the GTK theme.

Find the DLLs, and put them in release\

Most of the DLLs can be found in c:\msys32\bin. Currently includes:

libatk-1.0-0.dll
libbrotlicommon.dll
libbrotlidec.dll
libbz2-1.dll
libcairo-2.dll
libcrypto-1_1.dll
libcurl-4.dll
libdatrie-1.dll
libexpat-1.dll
libffi-6.dll
libfontconfig-1.dll
libfreetype-6.dll
libfribidi-0.dll
libgcc_s_dw2-1.dll
libgdk-win32-2.0-0.dll
libgdk_pixbuf-2.0-0.dll
libgio-2.0-0.dll
libglib-2.0-0.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libgraphite2.dll
libgtk-win32-2.0-0.dll
libharfbuzz-0.dll
libiconv-2.dll
libidn2-0.dll
libintl-8.dll
libnghttp2-14.dll
libpango-1.0-0.dll
libpangocairo-1.0-0.dll
libpangoft2-1.0-0.dll
libpangowin32-1.0-0.dll
libpcre-1.dll
libpixman-1-0.dll
libpng16-16.dll
libpsl-5.dll
libssl-1_1.dll
libstdc++-6.dll
libthai-0.dll
libunistring-2.dll
libwinpthread-1.dll
SDL.dll
zlib1.dll

Pull the release\ folder to another machine, and run

Weep because everything's on fire.

Find the rest of the DLLs from the 1.72.0 release. Find any missing DLLs from official runtime distributions. If DLLs are still missing, shed some tears. I had to rename libpng16_16.dll to libpng14_14.dll. I have no idea what could have required libpng14, and libpng14 has serious vulnerabilities too. (Renaming DLLs is not safe either.)

user/draugthewhopper/windowsbuild.1597789473.txt.gz · Last modified: 2020/08/18 17:24 by draugthewhopper