From 2526f1c7e0ab49356ec39836d248a2709fcfc059 Mon Sep 17 00:00:00 2001 From: cherierm Date: Wed, 7 Feb 2007 14:36:46 +0000 Subject: [PATCH] new dll export an dll import mechanism for Windows. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3091 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/xbt/misc.h | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/include/xbt/misc.h b/include/xbt/misc.h index 7e339d6cc4..f2db436a95 100644 --- a/include/xbt/misc.h +++ b/include/xbt/misc.h @@ -56,25 +56,33 @@ # define XBT_INLINE inline #endif +/* + * Function calling convention (not used for now) + */ +#if !defined (_XBT_CALL) +#define _XBT_CALL +#endif + /* Handle import/export stuff * Rational: - * * If you compile the DLL you must pass the right value of XBT_PUBLIC in the project: -DXBT_PUBLIC=__dllspec(ddlexport) - * * If you do a static compilation, you must define this macro to empty: -DXBT_PUBLIC= + * * If you build the DLL you must pass the right value of XBT_PUBLIC in the project : to do this you must define the DLL_EXPORT macro + * * If you do a static compilation, you must define the macro DLL_STATIC * * If you link your code against the DLL, this file defines the macro to '__declspec(dllimport)' for you * * If you compile under unix, this file defines the macro to 'extern', even if it's not mandatory with modern compilers */ -#ifndef XBT_PUBLIC -# ifdef _WIN32 -# define XBT_PUBLIC __declspec(dllimport) -# else -# define XBT_PUBLIC extern -# endif /* _WIN32 */ -#endif /* !XBT_PUBLIC */ - -/* Function calling convention (not used for now) */ -#if !defined (_XBT_CALL) -#define _XBT_CALL -#endif + +#ifdef DLL_EXPORT +# define XBT_PUBLIC(type) __declspec(dllexport) type +#else +# ifdef DLL_STATIC +# define XBT_PUBLIC(type) type +# else +# ifdef _WIN32 +# define XBT_PUBLIC(type) __declspec(dllimport) type +# else +# define XBT_PUBLIC(type) extern type +# endif +#endif @@ -110,7 +118,7 @@ SG_BEGIN_DECL() -XBT_PUBLIC const char *xbt_procname(void); +XBT_PUBLIC(const char *)xbt_procname(void); #define XBT_BACKTRACE_SIZE 10 /* FIXME: better place? Do document */ -- 2.20.1