39#include <kaydaradef.h>
41enum kFBDllOperation { kFBDllLoad, kFBDllUnLoad };
43#define FB_MANUAL_DLL_INIT(Name) \
44 extern void EntryPoint##Name(kFBDllOperation STARTUP); \
45 EntryPoint##Name(kFBDllLoad); \
49 #define FB_DLL_INIT(DLLNAME,STARTUP)\
50 int DummyEntryPoint##DLLNAME();\
51 static int StatEntryPoint##DLLNAME = DummyEntryPoint##DLLNAME();\
52 void EntryPoint##DLLNAME(kFBDllOperation STARTUP);\
53 int DummyEntryPoint##DLLNAME()\
55 EntryPoint##DLLNAME(kFBDllLoad);\
58 void EntryPoint##DLLNAME(kFBDllOperation STARTUP)
60 #define FB_DLL_INIT(DLLNAME,STARTUP)\
61 void EntryPoint##DLLNAME(kFBDllOperation STARTUP)
64 #if defined(KARCH_ENV_WIN32)
65 #define FB_DLL_INIT(DLLNAME,STARTUP)\
66 __declspec(dllexport) void EntryPoint##DLLNAME(kFBDllOperation STARTUP);\
67 int __stdcall DllMain(void* hinstDLL,unsigned long fdwReason, void* lpvReserved )\
71 case 1: EntryPoint##DLLNAME(kFBDllLoad); break; \
72 case 0: EntryPoint##DLLNAME(kFBDllUnLoad); break; \
76 void EntryPoint##DLLNAME(kFBDllOperation STARTUP)
77 #elif defined (KARCH_DEV_GNUC)
78 #define FB_DLL_INIT( DllName,Startup ) \
79 void EntryPoint##DllName(kFBDllOperation Startup); \
80 void __attribute__((constructor)) KdsoInit##DllName ( void ) \
82 EntryPoint##DllName(kFBDllLoad);\
84 void __attribute__ ((destructor)) KdsoDone##DllName ( void ) \
86 EntryPoint##DllName(kFBDllUnLoad);\
88 void EntryPoint##DllName(kFBDllOperation Startup)
90 #define FB_DLL_INIT( DllName,Startup ) \
91 void EntryPoint##DllName(kFBDllOperation Startup); \
92 extern "C" void KdsoInit##DllName( void ) \
94 EntryPoint##DllName(kFBDllLoad);\
96 extern "C" void KdsoDone##DllName( void ) \
98 EntryPoint##DllName(kFBDllUnLoad);\
100 class Init##DllName { public: Init##DllName () {KdsoInit##DllName (); } ~Init##DllName () {KdsoDone##DllName (); } }; \
101 static Init##DllName Flakel##DllName; \
102 void EntryPoint##DllName(kFBDllOperation Startup)
107#define FB_EXT_INIT(libname)