OS_LIBS for libraries that are not part of the gecko tree, EXTRA_LIBS for
libraries, such as NSPR, that are in the tree, but are not handled by
moz.build just yet. Those EXTRA_LIBS may also come from a system library.
However, in cases where the expanded variables are always empty for the
in-tree case, OS_LIBS is used (as for, e.g. MOZ_ZLIB_LIBS). OS_LDFLAGS is
used exclusively for non-library linker flags.
Always pass EXTRA_LIBS before OS_LIBS on linker command lines.
Forbid EXTRA_DSO_LDOPTS, SHARED_LIBRARY_LIBS and LIBS in Makefiles.
The current implementation of the solution outlined in bug 6244229
uses LDFLAGS in Makefile.in to specify the SONAME. This patch uses
the new SONAME option in moz.build to do the same, and removes the
LDFLAGS manipulation from Makefile.in.
This is necessary for plugins when building libxul for GTK+ 3
because libxul will link against GTK+ 3 and some plugins link
against GTK+ 2, but both GTK+ libraries can't be loaded in the
same process. With this change, we have an indirection between
libxul and libgtk, named libmozgtk. plugin-container will
be modified to load libmozgtk2 in order to only have GTK+ 2
in its address space, thus enabling various plugins (e.g. flash)
on GTK+ 3 firefox.