affxparser should again be updated for the new Rtools (Rtools44, to appear soon) as it includes a modified copy of the MinGW-W64 headers, and MinGW-W64 has been updated. It seems it is not needed to pass the tests, but using an outdated version of an internal header is probably too fragile. I've created a patch (affxparser_defensive.diff) that does it the same way it has been done before.
However, this approach is no longer working with the LLVM 17 toolchain (which is used for aarch64). The C++ library headers are confused by that _MSC_VER is being set even though we are not using the MSVC runtime - they try to use MSVC runtime headers for some exception handling, which are indeed not available with non-MSVC runtime.
My understanding is that the approach of always copying _mingw.h and
modifying it has only been needed to make sure that the MinGW-W64 does
not attempt to use the Microsoft "__uuidof" operator, which otherwise
would have been used with _MSC_VER. But, that is not enough anymore.
From reading the comments in NEWS, my impression is that _MSC_VER has
only been defined to tell the bundled library that it should use
Windows-specific code, rather than to attempt influencing MinGW-W64 that
way. Would it be possible to simply use a custom replacement, say
FUSION_MSC_VER, which would not collide with the MinGW-W64 headers?
I tried that in a another attached patch, affxparser_bigger.diff. All
_MSC_VER uses are changed to FUSION_MSC_VER and the "_mingw"
customization business is removed. With this patch applied, the package
can be built and passes its checks on my Windows/x86_64 with gcc 13.2
(Rtools44) as well as on Windows/aarch64 with LLVM 17.0.6 (Rtools44). I
understand it means you would have to do the rename when/if porting an
update of the embedded library, but on the other hand you would not have
to maintain the `"_mingw"` customizations. And, this works also with
LLVM, where otherwise apparently one would also have to somehow
customize C++ internal headers, which might be even harder to maintain.
So unless I have missed something, this might probably be a better fix.
Thomas Kalibra writes
affxparser_bigger.diff.txt affxparser_defensive.diff.txt