Fix inconsistent linkage when building as static on Windows #296
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
EPOXY_PUBLICis defined to__declspec(dllexport) externin meson.build only if building as a shared library on Windows. Otherwise it's defined toexternif building as a shared library, and if building as static, it is not defined at all.However, when
EPOXY_PUBLICis not defined,epoxy/common.hwill defineEPOXY_PUBLICto__declspec(dllimport) externif building on MSVC.I'm not exactly sure what's going on with the duplicated definition here, but I have worked around the problem by defining
EPOXY_SHAREDif building as a shared library. This define is set incommon_cflags, which means it will be propagated through to pkgconfig, so consuming libraries will set this variable appropriately. Then I have changed common.h to only defineEPOXY_PUBLICfor dll imports ifEPOXY_SHAREDis also set.