You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
3.6 KiB

#ifndef UPNPGLOBAL_H
#define UPNPGLOBAL_H
/*!
* \file
*
* \brief Defines constants that for some reason are not defined on some
* systems.
*/
#if defined UPNP_LARGEFILE_SENSITIVE && _FILE_OFFSET_BITS + 0 != 64
#if defined __GNUC__
#warning libupnp requires largefile mode - use AC_SYS_LARGEFILE
#elif !defined _WIN32
#error libupnp requires largefile mode - use AC_SYS_LARGEFILE
#endif
#endif
#ifdef _WIN32
/*
* UPNP_EXPORT_SPEC
*/
#if defined _MSC_VER || defined __BORLANDC__
#ifdef UPNP_STATIC_LIB
#define UPNP_EXPORT_SPEC
#else /* UPNP_STATIC_LIB */
#ifdef LIBUPNP_EXPORTS
/*! set up declspec for dll export to make
* functions visible to library users */
#define UPNP_EXPORT_SPEC __declspec(dllexport)
#else /* LIBUPNP_EXPORTS */
#define UPNP_EXPORT_SPEC __declspec(dllimport)
#endif /* LIBUPNP_EXPORTS */
#endif /* UPNP_STATIC_LIB */
#else /* _MSC_VER || __BORLANDC__ */
#define UPNP_EXPORT_SPEC
#endif /* _MSC_VER || __BORLANDC__ */
/*
* UPNP_INLINE
* PRId64
* PRIzd
* PRIzu
* PRIzx
*/
#ifdef UPNP_USE_MSVCPP
/* define some things the M$ VC++ doesn't know */
#define UPNP_INLINE _inline
typedef __int64 int64_t;
#define PRIzd "ld"
#define PRIzu "lu"
#define PRIzx "lx"
#endif /* UPNP_USE_MSVCPP */
#ifdef UPNP_USE_BCBPP
/* define some things Borland Builder doesn't know */
/* inconsistency between the httpparser.h and the .c file
definition. Header is missing UPNP_INLINE prefix, so compiler
is confused ... better remove it #define UPNP_INLINE inline
*/
#define UPNP_INLINE
typedef __int64 int64_t;
#warning The Borland C compiler is probably broken on PRId64,
#warning please someone provide a proper fix here
#define PRId64 "Ld"
#define PRIzd "ld"
#define PRIzu "lu"
#define PRIzx "lx"
#define SCNd64 "Ld"
#endif /* UPNP_USE_BCBPP */
#ifdef __GNUC__
#define UPNP_INLINE inline
/* Note with PRIzu that in the case of Mingw32, it's the MS C
* runtime printf which ends up getting called, not the glibc
* printf, so it genuinely doesn't have "zu"
*/
#define PRIzd "ld"
#define PRIzu "lu"
#define PRIzx "lx"
#endif /* __GNUC__ */
#else
/*!
* \brief Export functions on WIN32 DLLs.
*
* Every funtion that belongs to the library API must use this
* definition upon declaration or it will not be exported
*/
#ifdef UPNP_STATIC_LIB
#define UPNP_EXPORT_SPEC
#else /* UPNP_STATIC_LIB */
#ifdef LIBUPNP_EXPORTS
/*! set up default visibility for shared-lib export to
* make functions visible to library users */
#define UPNP_EXPORT_SPEC \
__attribute__((visibility("default")))
#else /* LIBUPNP_EXPORTS */
#define UPNP_EXPORT_SPEC
#endif /* LIBUPNP_EXPORTS */
#endif
/*!
* \brief Declares an inline function.
*
* Surprisingly, there are some compilers that do not understand the
* inline keyword. This definition makes the use of this keyword
* portable to these systems.
*/
#ifdef __STRICT_ANSI__
#define UPNP_INLINE __inline__
#else
#define UPNP_INLINE inline
#endif
/*!
* \brief Supply the PRId64 printf() macro.
*
* MSVC still does not know about this.
*/
/* #define PRId64 PRId64 */
/*!
* \brief Supply the PRIz* printf() macros.
*
* These macros were invented so that we can live a little longer with
* MSVC lack of C99. "z" is the correct printf() size specifier for
* the size_t type.
*/
#define PRIzd "zd"
#define PRIzu "zu"
#define PRIzx "zx"
#endif
/*
* Defining this macro here gives some interesting information about unused
* functions in the code. Of course, this should never go uncommented on a
* release.
*/
/*#define inline*/
#endif /* UPNPGLOBAL_H */