Estimated hours taken: 2
On platforms which support it, check that there are no undefined
symbols when linking the Mercury shared libraries.
Some platforms (AIX, Windows, and BeOS) require this when building
shared libraries. This change means that we check it on our usual
platforms, including Linux.
configure.in:
Set ERROR_UNDEFINED to `-Wl,--no-undefined' on x86 Linux.
Using --no-undefined on Linux requires linking in ld-linux.so,
so add some code to figure out the right version of that to
link with.
Mmake.common.in:
Set ALLOW_UNDEFINED and ERROR_UNDEFINED to the values
determined by configure.in. Also pass down the values of
SOCKET_LIBRARY, NSL_LIBRARY, and DL_LIBRARY, since we need
to link with those libraries to resolve all the undefined
symbols.
runtime/Mmakefile:
library/Mmakefile:
browser/Mmakefile:
trace/Mmakefile:
Pass $(ERROR_UNDEFINED) to $(LINK_SHARED_OBJ).
browser/Mmakefile:
trace/Mmakefile:
Link in SOCKET_LIBRARY, NSL_LIBRARY, and DL_LIBRARY.