From 85fe4c421b8a72fa78d81feaafe63d9e8d49fdf7 Mon Sep 17 00:00:00 2001 From: Giovanni Mascellani Date: Wed, 10 Jul 2024 12:30:10 +0200 Subject: [PATCH] tests: Define WIDL macros in utils.h. This way other headers including utils.h, like d3d12_test_utils.h, are self-contained. --- tests/utils.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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