Add macro for dynamic library plugin initializer definition.

PiperOrigin-RevId: 478544478
Change-Id: Idc899eef25261f2cb0b8317a84989cea2d8c2243
This commit is contained in:
Saran Tunyasuvunakool
2022-10-03 10:39:59 -07:00
committed by Copybara-Service
parent 7072b61cc5
commit f9b4593d11
+27
View File
@@ -58,4 +58,31 @@ struct mjpPlugin_ {
};
typedef struct mjpPlugin_ mjpPlugin;
#if defined(__has_attribute)
#if __has_attribute(constructor)
#define mjPLUGIN_DYNAMIC_LIBRARY_INIT \
__attribute__((constructor)) static void _mjplugin_init(void)
#endif
#elif defined(_MSC_VER)
#ifndef mjDLLMAIN
#define mjDLLMAIN DllMain
#endif
// NOLINTBEGIN(runtime/int)
#define mjPLUGIN_DYNAMIC_LIBRARY_INIT \
static void _mjplugin_dllmain(void); \
static int __stdcall mjDLLMAIN(void* hinst, unsigned long reason, void* reserved) { \
if (reason == 1) { \
_mjplugin_dllmain(); \
} \
return 1; \
} \
static void _mjplugin_dllmain(void)
// NOLINTEND(runtime/int)
#endif // defined(_MSC_VER)
#endif // MUJOCO_INCLUDE_MJPLUGIN_H_