HurricanGame / Hurrican

Freeware jump and shoot game created by Poke53280, based on the Turrican game series by Manfred Trenz
61 stars 22 forks source link

Add workflow to publish a Windows binary release #34

Open drfiemost opened 1 year ago

drfiemost commented 1 year ago

A tentative way to automatically create a Windows binary for a release. The way dlls are copied in the package is a bit hackish and if someone knows how to convince cmake to build a static binary it would be better.

Mia75owo commented 6 months ago

I tested this on a fork and i ran into a few issues: 1. There were problems with finding the OpenGL/GLES/EGL DLLs so i had to add these packages to the install list:

mingw-w64-x86_64-mesa
mingw-w64-x86_64-angleproject

This fixed the problem with the DLL files. 2. This mkdir failed for me because it tried to create nested folders. I fixed this by adding the -p flag

- mkdir ${PACKAGE_NAME}
+ mkdir -p ${PACKAGE_NAME}

3. There is a linker error when building with OpenMPT enabled and using -static-libgcc -static-libstdc++. See: https://github.com/Nils75owo/Hurrican/actions/runs/7160252619/job/19494423956 I had to either remove the static linking or disable OpenMPT to get it to compile.

Also static linking for SDL2_image/mixer can be very tricky so I think the hack with copying the DLLs is fine for now as it's better than having no Windows release at all.

Mia75owo commented 6 months ago

Is libEGL.dll and libGLESv2.dll even needed if Hurrican is build with the default option OpenGL2?

drfiemost commented 6 months ago

This mkdir failed for me because it tried to create nested folders. I fixed this by adding the -p flag

- mkdir ${PACKAGE_NAME}
+ mkdir -p ${PACKAGE_NAME}

Are you using a tag name with slashes? This isn't supposed to happen.

There is a linker error when building with OpenMPT enabled and using -static-libgcc -static-libstdc++. See: https://github.com/Nils75owo/Hurrican/actions/runs/7160252619/job/19494423956 I had to either remove the static linking or disable OpenMPT to get it to compile.

Yeah, current version of libopenmpt have some linking issues, hope they will be fixed in the next update.

As for GLES/EGL I'm not sure why these are required, libepoxy should try to dlopen them at runtime. It was a long time ago and I don't recall the exact problem.