In order that we can have a library with clear ABI guarantees (currently only part of the client lib has a stable ABI).
It would be ideal if only public symbols were actually exported in this new lib,
First part is already done (i.e. creation of distinct library for that part we aim to keep ABI stable). Second part is yet to be completed.
Only messaging library is separate; symbols for those classes in the qpid::types namespace are still part of the qpidcommon library that contains other symbols for which the ABI guarantees are less certain.
Created attachment 426689 [details]
Patch to create a separte libqpidtypes
Attached patch creates a separate qpidtypes library for the types namespace.
Created attachment 426691 [details]
Work in progress: enable -fvisibility=hidden
This is an initial stab at hiding non-public symbols in our libraries. On RHEL5 gcc version 4.1.2 it turns up a number of warnings related to templates that need investigation.
There's also a risk of introducing run-time bugs if exceptions thrown across shared object boundaries are not properly declared as public. We should probably not introduce this right before a release.
The first patch (separation of qpid types) doesn't work on windows (there is some issue in linking).
Committed trunk r959419 and mrg release repo mrg_1.3.x branch: http://mrg1.lab.bos.redhat.com/git/?p=qpid.git;a=commit;h=d8dc61cf1ba154f8ff373313d4416421b6649d33