Birch-san / juicysfplugin

Audio plugin (e.g. VST, AU) to play soundfonts on macOS, Windows, Linux
GNU General Public License v3.0
225 stars 29 forks source link

Upgrade to JUCE 6.1.5 + fluidsynth 2.2.5 + make Docker cross-compile parallel & ARM-native #35

Closed Birch-san closed 2 years ago

Birch-san commented 2 years ago

Making a new Dockerfile for the build:

Upgrading fluidsynth to 2.2.5, to fix https://github.com/Birch-san/juicysfplugin/issues/22#issuecomment-1018790301.
Upgrading from my fork of JUCE 6.1.2 to mainline JUCE 6.1.5; the MinGW-w64 build has had some attention, so @reuk recommends to try it out, to see whether the following issues are fixed:

Unfortunately, the changes mean that MinGW-w64 builds now depend on the Windows SDK, for example for headers like UIAutomation.h:
https://github.com/juce-framework/JUCE/blob/53b04877c6ebc7ef3cb42e84cb11a48e0cf809b5/modules/juce_gui_basics/juce_gui_basics.cpp#L70

I've acquired the Windows SDK via xwin. So I have the headers and libraries I need.

But llvm-mingw is failing to compile the code contained in the Windows SDK headers:
https://gist.github.com/Birch-san/d54e6e64be4e954b59a5156f76472a0a

Maybe it's fundamentally unsupported for clang to include the Windows SDK headers?

Maybe we can use the best-effort headers generated by WIDL compiler instead?
https://github.com/slimsag/win32metadata/tree/master/generation/WinSDK/RecompiledIdlHeaders

I'm currently working on a minimal repro here (which seems to be failing on JUCE rather than Windows SDK):
https://github.com/Birch-san/juce-repro
The current error I'm getting in the minimal repro, is a uuidof() error, so looks related to https://github.com/juce-framework/JUCE/issues/985.

Update: Okay, looks like there was an easier way to get the Windows SDK headers. MinGW comes with some already; I just needed to deal with the case-sensitive filename.