user:draugthewhopper:windowsbuild
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
user:draugthewhopper:windowsbuild [2021/01/02 18:15] – draugthewhopper | user:draugthewhopper:windowsbuild [2025/04/18 13:08] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Windows client builds ====== | ====== Windows client builds ====== | ||
- | Throughout 2019 and 2020, I've been able to build the GTK2 client | + | As of Aug 2021, I finally got a stable Windows GTK client |
+ | The script and instructions are specifically for x86_64 builds. Suites like MSYS2 and MinGW are deprecating support for pure 32-bit x86, so producing 32-bit binaries maybe not be feasible moving forward. Regardless, if you can get the MinGW/MSYS2 toolchain working, the powershell script can probably be adapted to work. | ||
====== Links ====== | ====== Links ====== | ||
Line 8: | Line 9: | ||
to various Windows build instructions: | to various Windows build instructions: | ||
- | [[wiki: | + | [[: |
[[user: | [[user: | ||
Line 18: | Line 19: | ||
====== My Notes ====== | ====== My Notes ====== | ||
- | loosely based on the makegho 2018 instructions: | + | If trying to adapt between |
- | + | ||
- | These instructions assume a fresh, clean 32-bit | + | |
- | + | ||
- | Install compiler tools: | + | |
- | + | ||
- | Go to http:// | + | |
- | + | ||
- | Download | + | |
- | + | ||
- | 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-gcc | ||
Line 37: | Line 28: | ||
pacman -S mingw-w64-i686-SDL_mixer | pacman -S mingw-w64-i686-SDL_mixer | ||
- | Alternatively, | ||
- | |||
- | pacman -S mingw-w64-i686-gcc mingw-w64-i686-make mingw-w64-i686-pkg-config mingw-w64-i686-vala mingw-w64-i686-SDL_image mingw-w64-i686-SDL_mixer | ||
- | |||
- | Add c: | ||
- | Install PERL: | + | I recommend using perl from MSYS2, rather than a third party Perl. If you want to anyway, a few tips: |
- | + | ||
- | http:// | + | |
- | + | ||
- | Download portable 32 bit edition | + | |
- | + | ||
- | Extract to C:\perl | + | |
- | + | ||
- | Add C: | + | |
- | + | ||
- | Note that this can cause some issues, especially if CMake tries to use perl-supplied components instead of those from MSYS/ | + | |
- | + | ||
- | Download and extract CrossFire source to e.g. c: | + | |
- | + | ||
- | https:// | + | |
- | + | ||
- | Install latest CMake 32-bit: | + | |
- | + | ||
- | https:// | + | |
- | + | ||
- | Run CMake gui: | + | |
- | + | ||
- | Set source code directory, e.g. c:/ | + | |
- | + | ||
- | Set binary directory, e.g. c:/ | + | |
- | + | ||
- | Click ' | + | |
- | + | ||
- | 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, | + | |
- | + | ||
- | 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: | + | |
- | + | ||
- | Click “Configure” again, hope no errors occur. | + | |
- | + | ||
- | Once it finally doesn’t have warnings or errors, Click ' | + | |
- | + | ||
- | If configuring goes wrong, delete directory c: | + | |
- | + | ||
- | Compile: | + | |
- | + | ||
- | Open msys32 32-bit shell (“MSYS2 MinGW 32-bit” in the Start Menu) | + | |
- | + | ||
- | Go to c: | + | |
- | + | ||
- | run mingw32-make.exe | + | |
- | + | ||
- | Create release package: | + | |
- | + | ||
- | Run ' | + | |
- | + | ||
- | Make directory ' | + | |
- | + | ||
- | Copy \cfbuild\bin\crossfire-client-gtk2.exe to release\ | + | |
- | + | ||
- | Create dir release\bin, | + | |
- | + | ||
- | Copy directory ' | + | |
- | + | ||
- | 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). | + | |
- | + | ||
- | < | + | |
- | + | ||
- | 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 sounds from somewhere, and put them in share\ | + | |
- | + | ||
- | 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 Adding this causes a deluge of warnings about XPM not being supported. To fix, in release, create a folder called “lib”, and copy “gdk-pixbuf-2.0” and “gtk-2.0” from “C: | + | |
- | 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 Adding this breaks the GTK theme. Fetch “msys32\mingw32\share\themes” and place it in “release\share\”. This only works if you have also copied the above items into " | + | |
- | 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 | + | |
- | + | ||
- | These DLLs go in release\bin\, | + | |
- | + | ||
- | libmad-0.dll | + | |
- | libSDL_mixer-1-2-0.dll | + | |
- | libogg-0.dll | + | |
- | libvorbis-0.dll | + | |
- | libvorbisfile-3.dll | + | |
- | + | ||
- | It works to put them in release\, but the sound server checks for them in .\, so it helps if they' | + | |
- | + | ||
- | At this point, the client runs in your dev environs, no warnings, sound works, etc< | + | |
- | + | ||
- | Get the glib helper program from C: | + | |
- | + | ||
- | Pull the release\ folder to another machine, and run. | + | |
- | <del>It now complains that libglib is missing. Copy it as well. Sound is now broken. when you launch, there' | + | <del>Install PERL:</ |
- | Weep because everything' | + | < |
- | <del> | + | <del> |
- | 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 | + | < |
- | </ | + | Other misc bits: |
+ | < |
user/draugthewhopper/windowsbuild.1609632948.txt.gz · Last modified: (external edit)