neobytes/depends/packages
Cory Fields 0246ab6088 depends: boost: hard-code hidden symbol visibility
tl;dr: This solves boost visibility problems for default/release build configs
on non-Linux platforms.

When Bitcoin builds against boost's header-only classes, it ends up with
objects containing symbols that the upstream boost libs also have. Since
Bitcoin builds by default with hidden symbol visibility, it can end up trying
to link against a copy of the same symbols with default visibility.
This is not a problem on Linux because 3rd party static libs are un-exported
by default (--exclude-libs,ALL), but that is not available for MinGW and OSX.

Those platforms (and maybe others?) end up confused about which version to use.

The OSX linker spews hundreds of: "ld: warning: direct access in <foo> to
global weak symbol guard variable for <bar> means the weak symbol cannot be
overridden at runtime. This was likely caused by different translation units
being compiled with different visibility settings."

MinGW's linker complains similarly.

Since the default symbol visibility for Bitcoin is hidden and releases are
built that way as well, build Boost with hidden visibility. Linux builds Boost
this way also, but only for the sake of continuity.

This means that the linker confusion logic is reversed, so the problem will
will now be encountered if Bitcoin is built with --disable-reduce-exports, but
that's better than the current situation.
2014-11-05 01:16:53 -05:00
..
bdb.mk depends: disable unused bdb replication manager. Fixes new mingw builds 2014-10-02 13:41:31 -04:00
boost.mk depends: boost: hard-code hidden symbol visibility 2014-11-05 01:16:53 -05:00
dbus.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
expat.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
fontconfig.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
freetype.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
libX11.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
libXau.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
libxcb.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
libXext.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
miniupnpc.mk depends: give miniupnpc cppflags 2014-09-25 14:56:26 -04:00
native_ccache.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
native_cctools.mk depends: add a fallback path in case package sources go missing 2014-08-22 15:42:54 -04:00
native_cdrkit.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
native_comparisontool.mk Make comptool more deterministic 2014-10-02 13:52:19 -07:00
native_libdmg-hfsplus.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
native_libuuid.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
native_openssl.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
native_protobuf.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
openssl.mk openssl version bump 2014-10-21 21:49:45 +01:00
packages.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
protobuf.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
qrencode.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
qt.mk depends: teach qt to honor debug/release 2014-09-25 14:56:26 -04:00
xcb_proto.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
xextproto.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
xproto.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00
xtrans.mk depends: add shared dependency builder 2014-08-08 15:10:46 -04:00