Instead of replacing things with sed. This was a bit brittle with the
changes in 3.7.6/3.7.7, and this approach keeps compatibility with older
SDK versions.
With the `ghc::filesystem` dependency from the previous commit. If we
can replace the rest of the Boost.Filesystem dependency then we can get
rid the one nasty runtime dependency we have, and it will make
implementing the chainloading simpler since can reuse more code without
bringing in Boost.
This took me a few hours of non-stop headaches to figure out. Apparently
deep inside of Wine's headers having __MINGW32__ defined will cause some
GUIDs to be defined slightly differently. This normally wouldn't cause
issues, but when including `shellobj.h` or `objbase.h` this results in
multiple definition linking errors that are basically impossible to
diagnose.
This solved some compiler errors early on but it ended up not being
needed, and as it turns out this change actually breaks things because
the SDK uses a ton of reinterpret casts to convert between string types
internally.