Default weak fns impl on MSVC

This commit is contained in:
Andrea Fioraldi 2021-08-18 10:45:50 +02:00
parent cc52e20256
commit 83f413f8b1

View File

@ -62,6 +62,15 @@
Name) "=" WIN_SYM_PREFIX STRINGIFY(Default))) Name) "=" WIN_SYM_PREFIX STRINGIFY(Default)))
#define CHECK_WEAK_FN(Name) ((void*)Name != (void*)&Name##Def) #define CHECK_WEAK_FN(Name) ((void*)Name != (void*)&Name##Def)
#define EXT_FUNC_IMPL(NAME, RETURN_TYPE, FUNC_SIG, WARN) \
RETURN_TYPE NAME##Def FUNC_SIG; \
EXTERNAL_FUNC(NAME, NAME##Def) RETURN_TYPE NAME FUNC_SIG; \
RETURN_TYPE NAME##Def FUNC_SIG \
#define EXT_FUNC(NAME, RETURN_TYPE, FUNC_SIG, WARN) \
RETURN_TYPE (*NAME##Def) FUNC_SIG = NULL; \
EXTERNAL_FUNC(NAME, NAME##Def) RETURN_TYPE NAME FUNC_SIG
#else #else
// Declare external functions as weak to allow them to default to a specified // Declare external functions as weak to allow them to default to a specified
// function if not defined explicitly. We must use weak symbols because clang's // function if not defined explicitly. We must use weak symbols because clang's
@ -71,7 +80,6 @@
__attribute__((weak, alias(STRINGIFY(Default)))) __attribute__((weak, alias(STRINGIFY(Default))))
#define CHECK_WEAK_FN(Name) (Name != NULL) #define CHECK_WEAK_FN(Name) (Name != NULL)
#endif // _MSC_VER
#define EXT_FUNC_IMPL(NAME, RETURN_TYPE, FUNC_SIG, WARN) \ #define EXT_FUNC_IMPL(NAME, RETURN_TYPE, FUNC_SIG, WARN) \
EXT_FUNC(NAME, RETURN_TYPE, FUNC_SIG, WARN) EXT_FUNC(NAME, RETURN_TYPE, FUNC_SIG, WARN)
@ -79,6 +87,8 @@
#define EXT_FUNC(NAME, RETURN_TYPE, FUNC_SIG, WARN) \ #define EXT_FUNC(NAME, RETURN_TYPE, FUNC_SIG, WARN) \
RETURN_TYPE (*NAME##Def) FUNC_SIG = NULL; \ RETURN_TYPE (*NAME##Def) FUNC_SIG = NULL; \
EXTERNAL_FUNC(NAME, NAME##Def) RETURN_TYPE NAME FUNC_SIG EXTERNAL_FUNC(NAME, NAME##Def) RETURN_TYPE NAME FUNC_SIG
#endif // _MSC_VER
#else #else
#if defined(__APPLE__) #if defined(__APPLE__)
@ -103,6 +113,6 @@
#endif #endif
#define CHECK_WEAK_FN(Name) (Name != NULL) #define CHECK_WEAK_FN(Name) (Name != NULL)
#endif #endif // _WIN32
#endif #endif