/* file : libcmark-gfm/cmark-gfm_export.h -*- C -*- * license : FreeBSD License; see accompanying COPYING file */ #ifndef CMARK_GFM_EXPORT_H #define CMARK_GFM_EXPORT_H /* * The upstream's version of this file is auto-generated by cmake. It looks * quite convoluted and contains unused macro definitions. Moreover it seems * to be broken, mismatching build/use pre-processor options (see the issue * #156). Note that currently the upstream disables building shared libraries * with VC. * * We implement this file from scratch using the standard build2 export header * as a template. */ #if defined(CMARK_GFM_STATIC) // Using static. # define CMARK_GFM_EXPORT #elif defined(CMARK_GFM_STATIC_BUILD) // Building static. # define CMARK_GFM_EXPORT #elif defined(CMARK_GFM_SHARED) // Using shared. # ifdef _WIN32 # define CMARK_GFM_EXPORT __declspec(dllimport) # else # define CMARK_GFM_EXPORT # endif #elif defined(CMARK_GFM_SHARED_BUILD) // Building shared. # ifdef _WIN32 # define CMARK_GFM_EXPORT __declspec(dllexport) # else # define CMARK_GFM_EXPORT __attribute__((visibility("default"))) # endif #else // If none of the above macros are defined, then we assume we are being used // by some third-party build system that cannot/doesn't signal the library // type. Note that this fallback works for both static and shared but in case // of shared will be sub-optimal compared to having dllimport. // # define CMARK_GFM_EXPORT // Using static or shared. #endif /* * Undefining these cmake-generated macros is not technically required, but * let's keep them for the record. */ #undef CMARK_GFM_NO_EXPORT #undef CMARK_GFM_DEPRECATED #undef CMARK_GFM_NO_DEPRECATED #undef CMARK_GFM_DEPRECATED_EXPORT #undef CMARK_GFM_DEPRECATED_NO_EXPORT #endif /* CMARK_GFM_EXPORT_H */