X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/08b4fe22433e1835814267fcd59c52799ab5b8c1..998f0e84439ff2665a69d9c33686c86f380713c0:/include/xbt/base.h diff --git a/include/xbt/base.h b/include/xbt/base.h index d9d4ac208a..a1fa3696ba 100644 --- a/include/xbt/base.h +++ b/include/xbt/base.h @@ -56,7 +56,15 @@ # endif # undef _XBT_NEED_INIT_PRAGMA -#else /* !__GNUC__ */ +#elif defined(_MSC_VER) /* Microsoft Visual Thing */ +# define XBT_ATTRIB_PRINTF( format_idx, arg_idx ) +# define XBT_ATTRIB_SCANF( format_idx, arg_idx ) +# define XBT_ATTRIB_NORETURN __declspec(noreturn) +# define XBT_ATTRIB_UNUSED +# define _XBT_GNUC_CONSTRUCTOR(prio) +# define _XBT_GNUC_DESTRUCTOR(prio) +# define _XBT_NEED_INIT_PRAGMA 1 +#else # define XBT_ATTRIB_PRINTF( format_idx, arg_idx ) # define XBT_ATTRIB_SCANF( format_idx, arg_idx ) # define XBT_ATTRIB_NORETURN @@ -65,7 +73,7 @@ # define _XBT_GNUC_DESTRUCTOR(prio) # define _XBT_NEED_INIT_PRAGMA 1 -#endif /* !__GNUC__ */ +#endif /* gcc or MSVC else */ /* inline and __FUNCTION__ are only in GCC when -ansi is off */ @@ -149,6 +157,7 @@ /* * Function calling convention (not used for now) + * http://unixwiz.net/techtips/win32-callconv.html <-- good documentation */ #ifdef _XBT_WIN32 @@ -207,7 +216,7 @@ # define XBT_IMPORT_NO_EXPORT(type) type # define XBT_PUBLIC_DATA(type) extern __declspec(dllexport) type # define XBT_PUBLIC_CLASS class __declspec(dllexport) - +# define XBT_PRIVATE /* Pack everything up statically */ #elif defined(DLL_STATIC) @@ -216,7 +225,7 @@ # define XBT_IMPORT_NO_EXPORT(type) type # define XBT_PUBLIC_DATA(type) extern type # define XBT_PUBLIC_CLASS class - +# define XBT_PRIVATE /* Link against the DLL */ #elif (defined(_XBT_WIN32) && !defined(DLL_EXPORT) && !defined(DLL_STATIC)) @@ -225,15 +234,23 @@ # define XBT_IMPORT_NO_EXPORT(type) __declspec(dllimport) type # define XBT_PUBLIC_DATA(type) extern __declspec(dllimport) type # define XBT_PUBLIC_CLASS class __declspec(dllimport) +# define XBT_PRIVATE +#elif defined(__ELF__) +# define XBT_PUBLIC(type) __attribute__((visibility("default"))) type +# define XBT_EXPORT_NO_IMPORT(type) __attribute__((visibility("default"))) type +# define XBT_IMPORT_NO_EXPORT(type) __attribute__((visibility("default"))) type +# define XBT_PUBLIC_DATA(type) extern __attribute__((visibility("default"))) type +# define XBT_PUBLIC_CLASS class __attribute__((visibility("default"))) +# define XBT_PRIVATE __attribute__((visibility("hidden"))) -/* UNIX build */ #else # define XBT_PUBLIC(type) type # define XBT_EXPORT_NO_IMPORT(type) type # define XBT_IMPORT_NO_EXPORT(type) type # define XBT_PUBLIC_DATA(type) extern type # define XBT_PUBLIC_CLASS class +# define XBT_PRIVATE #endif @@ -252,14 +269,6 @@ #define _CRT_SECURE_NO_WARNINGS #endif - - -#ifdef _XBT_WIN32 -#define XBT_INTERNAL -#else -#define XBT_INTERNAL __attribute__((visibility ("hidden"))) -#endif - #if !defined (max) && !defined(__cplusplus) # define max(a,b) (((a) > (b)) ? (a) : (b)) #endif