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_PUBLIC
is defined to__declspec(dllexport) extern
in meson.build only if building as a shared library on Windows. Otherwise it's defined toextern
if building as a shared library, and if building as static, it is not defined at all.However, when
EPOXY_PUBLIC
is not defined,epoxy/common.h
will defineEPOXY_PUBLIC
to__declspec(dllimport) extern
if 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_SHARED
if 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_PUBLIC
for dll imports ifEPOXY_SHARED
is also set.