Create separated FMT_INSTANTIATION_DEF_API

Create a separated FMT_INSTANTIATION_DEF_API

Create separated FMT_INSTANTIATION_DEF_API and FMT_INSTANTIATION_DECL_API
to fix dllexport requirement differences between clang and msvc.

- clang:  mark dllexport on extern template (template instantiation declaration) in format.h
- msvc:  mark dllexport on template instantiation definition in format.cc
This commit is contained in:
denchat 2021-04-13 11:42:15 +07:00 committed by GitHub
parent d7c1704115
commit 087bfe2b31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -223,8 +223,19 @@
#ifndef FMT_EXTERN_TEMPLATE_API
# define FMT_EXTERN_TEMPLATE_API
#endif
#ifndef FMT_INSTANTIATION_DECL_API
# define FMT_INSTANTIATION_DECL_API FMT_API
#ifndef FMT_INSTANTIATION_DECL_API // clang marks dllexport at extern template.
# ifndef _MSC_VER
# define FMT_INSTANTIATION_DECL_API FMT_API
# else
# define FMT_INSTANTIATION_DECL_API
# endif
#endif
#ifndef FMT_INSTANTIATION_DEF_API // msvc marks dllexport at the definition itself.
# ifndef _MSC_VER
# define FMT_INSTANTIATION_DEF_API
# else
# define FMT_INSTANTIATION_DEF_API FMT_API
# endif
#endif
#ifndef FMT_HEADER_ONLY