I'm sending this as an RFC for now as there's been some discussion already about how to handle PE dependencies. I think the approach I'm taking here, by including FAudio headers directly in the source and loading it dynamically is the easiest way, and the least disruptive for building and running Wine, if not the cleanest. All the other solutions have higher friction, either on third party packages, or on the system distribution.
Upstream FAudio now has a pure Win32 backend, which makes it much easier to build as PE. This was never a requirement, and this series should work too with the SDL2 backend, as it tries to load Wine Mono SDL2 and FAudio as a fallback after trying from the prefix system libraries.
It could help the transition though, and is going to be required anyway to support WMA decoding. Right now, with or without the Win32 backend, this would also introduce a functional regression as although supported by the new FAudio Win32 backend, it also depends on the WMA decoder MF transform to be implemented, which isn't the case yet in Wine.
Cheers,
Rémi Bernon (5): xactengine3_7: Move sources to xaudio2_7. xaudio2_7: Load FAudio dynamically. xaudio2_7: Import FAudio headers for private use. xaudio2_7: Build with msvcrt. xaudio2_7: Use msvcrt allocation functions.
configure.ac | 55 - dlls/x3daudio1_0/Makefile.in | 4 +- dlls/x3daudio1_1/Makefile.in | 4 +- dlls/x3daudio1_2/Makefile.in | 4 +- dlls/x3daudio1_3/Makefile.in | 4 +- dlls/x3daudio1_4/Makefile.in | 4 +- dlls/x3daudio1_5/Makefile.in | 4 +- dlls/x3daudio1_6/Makefile.in | 4 +- dlls/x3daudio1_7/Makefile.in | 4 +- dlls/xactengine2_0/Makefile.in | 6 +- dlls/xactengine2_4/Makefile.in | 6 +- dlls/xactengine2_7/Makefile.in | 6 +- dlls/xactengine2_9/Makefile.in | 6 +- dlls/xactengine3_0/Makefile.in | 6 +- dlls/xactengine3_1/Makefile.in | 6 +- dlls/xactengine3_2/Makefile.in | 6 +- dlls/xactengine3_3/Makefile.in | 6 +- dlls/xactengine3_4/Makefile.in | 6 +- dlls/xactengine3_5/Makefile.in | 6 +- dlls/xactengine3_6/Makefile.in | 6 +- dlls/xactengine3_7/Makefile.in | 5 +- dlls/xapofx1_1/Makefile.in | 4 +- dlls/xapofx1_2/Makefile.in | 4 +- dlls/xapofx1_3/Makefile.in | 4 +- dlls/xapofx1_4/Makefile.in | 4 +- dlls/xapofx1_5/Makefile.in | 4 +- dlls/xaudio2_0/Makefile.in | 4 +- dlls/xaudio2_1/Makefile.in | 4 +- dlls/xaudio2_2/Makefile.in | 4 +- dlls/xaudio2_3/Makefile.in | 4 +- dlls/xaudio2_4/Makefile.in | 4 +- dlls/xaudio2_5/Makefile.in | 4 +- dlls/xaudio2_6/Makefile.in | 4 +- dlls/xaudio2_7/FAudio/F3DAudio.h | 262 ++++ dlls/xaudio2_7/FAudio/FACT.h | 814 ++++++++++ dlls/xaudio2_7/FAudio/FACT3D.h | 127 ++ dlls/xaudio2_7/FAudio/FAPO.h | 207 +++ dlls/xaudio2_7/FAudio/FAPOBase.h | 264 ++++ dlls/xaudio2_7/FAudio/FAPOFX.h | 178 +++ dlls/xaudio2_7/FAudio/FAudio.h | 1322 +++++++++++++++++ dlls/xaudio2_7/FAudio/FAudioFX.h | 308 ++++ dlls/xaudio2_7/Makefile.in | 4 +- dlls/xaudio2_7/compat.c | 92 +- dlls/xaudio2_7/faudio.c | 326 ++++ dlls/xaudio2_7/x3daudio.c | 35 +- .../xact_classes.idl | 0 dlls/{xactengine3_7 => xaudio2_7}/xact_dll.c | 182 ++- dlls/xaudio2_7/xapo.c | 29 +- dlls/xaudio2_7/xapofx.c | 21 +- dlls/xaudio2_7/xaudio_allocator.c | 2 - dlls/xaudio2_7/xaudio_dll.c | 267 ++-- dlls/xaudio2_7/xaudio_private.h | 149 +- dlls/xaudio2_8/Makefile.in | 4 +- dlls/xaudio2_9/Makefile.in | 4 +- 54 files changed, 4298 insertions(+), 505 deletions(-) create mode 100644 dlls/xaudio2_7/FAudio/F3DAudio.h create mode 100644 dlls/xaudio2_7/FAudio/FACT.h create mode 100644 dlls/xaudio2_7/FAudio/FACT3D.h create mode 100644 dlls/xaudio2_7/FAudio/FAPO.h create mode 100644 dlls/xaudio2_7/FAudio/FAPOBase.h create mode 100644 dlls/xaudio2_7/FAudio/FAPOFX.h create mode 100644 dlls/xaudio2_7/FAudio/FAudio.h create mode 100644 dlls/xaudio2_7/FAudio/FAudioFX.h create mode 100644 dlls/xaudio2_7/faudio.c rename dlls/{xactengine3_7 => xaudio2_7}/xact_classes.idl (100%) rename dlls/{xactengine3_7 => xaudio2_7}/xact_dll.c (87%)