Re: GZDoom 4.8.0 for ARM64 Windows (experimental)
Posted: Sat Jul 30, 2022 11:22 am
Randi should know, I think. I have no idea either how to set this up.
Distros can do what they want - the source is there. But when people using these distros start having problems - particularly with the libraries - then we may have to recommend they use our binaries instead.mjr4077au wrote:While the Raze package I maintain in Arch Linux's AUR maintains the repository-included libraries, some distros are going to the effort to unbundle these so system libraries are used.
Could we have it so distro-provided builds of GZDoom and Raze are supported, just so long as they're built to our specification, with our tested and mandated libraries? I don't know of any distros that will repackage someone else's binaries, especially when there is source availalble.
Yes, but I hacked in support for it to find that library with vcpkg if you're compiling for Windows._mental_ wrote:It appeared that FluidSynth uses pkg-config to find sndfile.
a) Is the CMake toolchain file set for vcpkg? If you opened it as a Folder Project in VS 2022, VS will do that for you. Otherwise, you need to specify it on the command-line -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake (I think you only need that the first time you generate.)Graf Zahl wrote:The CMake script is doing a lot of verification voodoo to see if the library is usable and this fails somehow.
Code: Select all
Directory: D:\src\fluidsynth\out\build\x64-Release\src
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 7/30/2022 5:21 PM 1652958 libfluidsynth.lib
All I meant here is that a binary built by a distro that's built the way we would build the binary should be equally supported. If they want to go off track like openSUSE has, then they're free to do so without support if they have esoteric bugs etcRachael wrote:Distros can do what they want - the source is there. But when people using these distros start having problems - particularly with the libraries - then we may have to recommend they use our binaries instead.
I don't see any reason to block distros from doing things the way they want to do them. I was just expressing my opinion that I think it would be hugely beneficial that if we're going to have mega-static executables for Windows, we should do it for all platforms, it greatly simplifies distribution.
Wow, that's really complicated. I guess it would all be a lot easier if it didn't have that stupid glib dependency by default. Have you tried to PR your changes to upstream? If it was there by default, I guess things would be easier as we could use vcpkg's compiled .lib file directly.randi wrote:Yes, but I hacked in support for it to find that library with vcpkg if you're compiling for Windows._mental_ wrote:It appeared that FluidSynth uses pkg-config to find sndfile.
a) Is the CMake toolchain file set for vcpkg? If you opened it as a Folder Project in VS 2022, VS will do that for you. Otherwise, you need to specify it on the command-line -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake (I think you only need that the first time you generate.)Graf Zahl wrote:The CMake script is doing a lot of verification voodoo to see if the library is usable and this fails somehow.
b) VCPKG_TARGET_TRIPLET needs to be set to your desired triplet so it doesn't default to <arch>-windows. Since you want everything to be static, you can use the triplet x64-windows-static and not need to mess around with a custom triplet at all.
It's not really that easy. Even if it is all built the same way, some of these libraries are so highly configurable that nothing can be taken for granted and making an error when setting it all up is very easy. We'd have to provide the files ourselves as a binary package.mjr4077au wrote:All I meant here is that a binary built by a distro that's built the way we would build the binary should be equally supported. If they want to go off track like openSUSE has, then they're free to do so without support if they have esoteric bugs etc
Code: Select all
#if LIBSNDFILE_SUPPORT
#include <sndfile.h>
#elif __has_include("sndfile.h")
#undef LIBSNDFILE_SUPPORT
#define LIBSNDFILE_SUPPORT 1
#include "sndfile.h"
#pragma message("sndfile support active.")
#endif
? (A) is needed to use vcpkg with any CMake project, and (B) is just another configure option.Graf Zahl wrote:Wow, that's really complicated.
Removing the glib dependency for Windows has been proposed several times over the years, and it always gets shot down. They're not interested unless it's something that can replace glib on all the platforms they currently support. And now they're using glib for LADSPA as well as threading, so that complicates matters further. I consider a PR a lost cause. The most recent attempt by someone was just last year.Graf Zahl wrote:I guess it would all be a lot easier if it didn't have that stupid glib dependency by default. Have you tried to PR your changes to upstream?
Just to be sure, did you delete all your generated CMake files to be sure nothing was held over from your previous attempts? I have no trouble getting it to find whatever vcpkg-built triplet version I want as long as I start fresh when changing the triplet.Graf Zahl wrote:I had to do this
It definitely works when building the DLL, so I don't know why the static library would be different.Graf Zahl wrote: But it still doesn't work right as it insists on linking against the shared CRT instead of the static one
glib is basically a system library on Linux.Graf Zahl wrote:Linux/macOS still needs work - it depends on whether we want to reference glib how much.
Are you suggesting renaming the Vulkan backend on Mac builds? (though with the other backends going away in 5.0 maybe there's no point in making the distinction anyway)Rachael wrote:While we're on that note, I think it's a bit of a misleading to label it "Vulkan" on Mac since all it does is tie to the Metal backend anyhow. Yes - the coding and functions are the same since we use a wrapper, but ultimately the API commands being emitted by the application will end up being Metal.