From d195a44d8db4b08c6ffe5c94019c69c4af294274 Mon Sep 17 00:00:00 2001 From: Andrew Eikum Date: Wed, 26 Sep 2018 11:39:07 -0500 Subject: [PATCH] headers/openvr.h: Allow user to specify ABI type --- headers/openvr.h | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/headers/openvr.h b/headers/openvr.h index dd2addd2..f85f07e0 100644 --- a/headers/openvr.h +++ b/headers/openvr.h @@ -1523,8 +1523,21 @@ struct ImuSample_t #pragma pack( pop ) +#define VR_ABI_WIN32 1 +#define VR_ABI_UNIX 2 + +#ifndef VR_ABI +# if defined(_WIN32) +# define VR_ABI VR_ABI_WIN32 +# elif defined(__GNUC__) || defined(COMPILER_GCC) || defined(__APPLE__) +# define VR_ABI VR_ABI_UNIX +# else +# error "Unsupported Platform." +# endif +#endif + // figure out how to import from the VR API dll -#if defined(_WIN32) +#if VR_ABI == VR_ABI_WIN32 #ifdef VR_API_EXPORT #define VR_INTERFACE extern "C" __declspec( dllexport ) @@ -1532,7 +1545,7 @@ struct ImuSample_t #define VR_INTERFACE extern "C" __declspec( dllimport ) #endif -#elif defined(__GNUC__) || defined(COMPILER_GCC) || defined(__APPLE__) +#elif VR_ABI == VR_ABI_UNIX #ifdef VR_API_EXPORT #define VR_INTERFACE extern "C" __attribute__((visibility("default"))) @@ -1545,7 +1558,7 @@ struct ImuSample_t #endif -#if defined( _WIN32 ) +#if VR_ABI == VR_ABI_WIN32 #define VR_CALLTYPE __cdecl #else #define VR_CALLTYPE