st/nine: specify WINAPI only for i386 and amd64
authorChristian Schmidbauer <ch.schmidbauer@gmail.com>
Sun, 13 Mar 2016 21:50:31 +0000 (22:50 +0100)
committerAxel Davy <axel.davy@ens.fr>
Sat, 2 Apr 2016 21:30:40 +0000 (23:30 +0200)
Currently mesa fails building with the x32 abi as ms_abi is not defined
in such a case.

The patch uses ms_abi only for amd64 targets and stdcall only for i386
targets to be sure that those are defined.

This patch additionally checks for __GNUC__ to guarantee that
__attribute__ is available.

CC: "11.1 11.2" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Christian Schmidbauer <ch.schmidbauer@gmail.com>
Acked-by: Axel Davy <axel.davy@ens.fr>
include/D3D9/d3d9types.h

index d74ce80bb30709721a94805054ea41968214d578..e0b86523daa141ef74b16e57e98e56fb79f6f1fc 100644 (file)
@@ -178,11 +178,17 @@ typedef struct _RGNDATA {
 #undef WINAPI
 #endif /* WINAPI*/
 
-#if defined(__x86_64__) || defined(_M_X64)
-#define WINAPI __attribute__((ms_abi))
-#else /* x86_64 */
-#define WINAPI __attribute__((__stdcall__))
-#endif /* x86_64 */
+#ifdef __GNUC__
+  #if (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64)
+    #define WINAPI __attribute__((ms_abi))
+  #elif defined(__i386) || defined(_M_IX86)
+    #define WINAPI __attribute__((__stdcall__))
+  #else /* neither amd64 nor i386 */
+    #define WINAPI
+  #endif
+#else /* __GNUC__ */
+  #define WINAPI
+#endif
 
 /* Implementation caps */
 #define D3DPRESENT_BACK_BUFFERS_MAX    3