configure: add linker export script support on Darwin
authorRodger Combs <rodger.combs@gmail.com>
Fri, 9 Sep 2016 23:12:34 +0000 (18:12 -0500)
committerRodger Combs <rodger.combs@gmail.com>
Tue, 4 Oct 2016 06:11:04 +0000 (01:11 -0500)
commit63fbeebf6ecb40b21db84d42f9f18867b3f89dca
tree47a12a887dd53bbdb7ff1751513234726fe062c8
parentbe1d32492e58cbba6d69d3ce67545536b15e051d
configure: add linker export script support on Darwin

This isn't a "version script" in the usual sense, since it doesn't set symbol
versions directly. Instead, the version for the whole .dylib is set in the
linker flags, and we generate a list of symbol patterns to export. This allows
us to keep our local symbols (e.g. ff_*) local on the platform.

The Darwin linker's exported_symbols_list format is a bit different than the
one used by the GNU linker. It doesn't handle local symbols at all, since when
a list is provided, all unlisted symbols are local by default; thus, we remove
local sections. It doesn't handle per-version sections, so we remove the
headers and brackets. It expects symbols to be prefixed with an underscore.
It errors if a listed symbol with no wildcards is not present in the output,
so we append an asterisk to any symbol that doesn't already end in one.
configure