User Tools

Site Tools


user:draugthewhopper:windowsbuild

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
user:draugthewhopper:windowsbuild [2020/08/18 17:15]
draugthewhopper
user:draugthewhopper:windowsbuild [2021/08/31 14:14] (current)
draugthewhopper
Line 1: Line 1:
-Links to various Windows build instructions:​+====== Windows client builds ====== 
 + 
 +As of Aug 2021, I finally got a stable Windows GTK client build method. I submitted a Powershell script which is reasonably well documented in crossfire-client/​gtk-v2/​win32/​autobuild.ps1 
 + 
 +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 ====== 
 + 
 +to various Windows build instructions:​
  
 [[wiki:​data:​pages:​crossfire_release_guide?​s[]=windows&​s[]=build|Release Guide -> Windows]] (2014 or older) [[wiki:​data:​pages:​crossfire_release_guide?​s[]=windows&​s[]=build|Release Guide -> Windows]] (2014 or older)
Line 7: Line 15:
 [[server:​server_compiling?​s[]=visual&​s[]=studio#​requirements1|Server compiling with Visual Studio 6]] (contains passing references to gtk client builds) [[server:​server_compiling?​s[]=visual&​s[]=studio#​requirements1|Server compiling with Visual Studio 6]] (contains passing references to gtk client builds)
  
-[[http://​xob.kapsi.fi/​~makegho/​trash/​crossfire-win32.txt|MinGW and CMake instructions from ~2018]] External on xob.kapsi.fi/​~makegho+[[http://​xob.kapsi.fi/​~makegho/​trash/​crossfire-win32.txt|MinGW and CMake instructions from ~2018]] ​(External on xob.kapsi.fi/​~makegho)
  
-My notes, loosely based on the makegho 2018 instructions:​+====== ​My Notes ======
  
-These instructions assume a fresh, clean 32-bit ​windows 10 machine.+If trying to adapt between ​32-bit ​and 64-bit, the package names may changeA few examples that may help or hurt:
  
-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-gcc ​
  pacman -S mingw-w64-i686-make  pacman -S mingw-w64-i686-make
Line 23: Line 27:
  pacman -S mingw-w64-i686-SDL_image  pacman -S mingw-w64-i686-SDL_image
  pacman -S mingw-w64-i686-SDL_mixer  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: +I recommend using perl from MSYS2rather than a third party PerlIf you want to anyway, a few tips:
-- 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 directorye.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 directoriese.g. from Visual Studio, change them manually to '​C:​\msys32\mingw32\include'​ +
-- If CMake fails near 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: +<​del>​Install PERL:</​del>​
-- Open msys32 32-bit shell (“MSYS2 MinGW 32-bit” in the Start Menu) +
-- Go to c:​\cfbuild +
-- Run '​mingw32-make.exe'​+
  
-Create release package: +<​del>​http://​strawberryperl.com/​releases.html</​del>​
-- 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).+<​del>​Download portable 32 bit edition</​del>​
  
-- In release, create a folder called “lib”, and copy “gdk-pixbuf-2.0” and “gtk-2.0” from “C:\msys32\mingw32\lib”. +<​del>​Extract to C:\perl</​del>​
- 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\ +<​del>​Add C:\perl\perl\bin to path.</​del>​
- - Most of the DLLs can be found in c:\msys32\bin. Currently includes:+
  
-libatk-1.0-0.dll +<​del>​Note that this can cause some issues, especially if CMake tries to use perl-supplied components instead of those from MSYS/MinGWBut, perl is still needed "for def-keys and msgtypes generation"</​del>​
-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 machinceand run +<​del>​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 sorevert it to the msys32 one, probably C:​\msys32\mingw32\bin\pkg-config.exe</​del>​
-Weep because everything'​s on fire.+
  
-<​del>​ - Find the rest of the DLLs from the 1.72.0 release. +Other misc bits:
- - 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.)</​del>​+
  
 +<​del>​Get the glib helper program from C:​\msys32\mingw32\bin\gspawn-win32-helper-console.exe,​ and copy it to release\</​del>​ Not needed since r21700
user/draugthewhopper/windowsbuild.1597788959.txt.gz · Last modified: 2020/08/18 17:15 by draugthewhopper