diff --git a/tests/utils.h b/tests/utils.h index f9d3d9b1..081c4cd9 100644 --- a/tests/utils.h +++ b/tests/utils.h @@ -19,6 +19,25 @@ #ifndef __VKD3D_TEST_UTILS_H #define __VKD3D_TEST_UTILS_H +/* Hack for MinGW-w64 headers. + * + * We want to use WIDL C inline wrappers because some methods + * in D3D12 interfaces return aggregate objects. Unfortunately, + * WIDL C inline wrappers are broken when used with MinGW-w64 + * headers because FORCEINLINE expands to extern inline + * which leads to the "multiple storage classes in declaration + * specifiers" compiler error. + */ +#ifdef __MINGW32__ +# include <_mingw.h> +# ifdef __MINGW64_VERSION_MAJOR +# undef __forceinline +# define __forceinline __inline__ __attribute__((__always_inline__,__gnu_inline__)) +# endif +#endif + +#define COBJMACROS +#define WIDL_C_INLINE_WRAPPERS #include #include #include