Module: vkd3d Branch: master Commit: 85fe4c421b8a72fa78d81feaafe63d9e8d49fdf7 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/85fe4c421b8a72fa78d81feaafe63d...
Author: Giovanni Mascellani gmascellani@codeweavers.com Date: Wed Jul 10 12:30:10 2024 +0200
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 <limits.h> #include <stdbool.h> #include <stdint.h>