Clean up support library linkage on Android

* The explicitly linked support libraries like gnustl_shared, etc. can be
  linked as private libs, there's no need for them to show up in the .prl files of our libraries.
* Removed the explicit linkage against libsupc++, which is a static library whos symbols
  are also available in libgnustl_shared. It is only needed when linking against gnustl_static,
  which we fortunately don't do.

For QtQml on Android this is more than just cleanup. Without the first change, the libgnustl_shared
comes early on in the link line, because it is a dependency of for example Qt5Network. Anything that
qml.pro itself adds to LIBS comes afterwards. That is not intended, we want libgnustl_shared to come
at the end of the link line, in order to make sure that the linker finds an overriding symbol from
another library earlier in the link line first.

The explicit linkage against libsupc++ affects the same, as that's the library
that contains the symbol we want to override locally (__cxa_end_cleanup).

(needed for QTBUG-33892)

Change-Id: Id6dff733d6610ae8b15aa72f9cf60ae2c7834194
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
This commit is contained in:
Simon Hausmann 2013-10-15 12:26:24 +02:00 committed by The Qt Project
parent b5d01a9dfc
commit 557fe401ac

View File

@ -178,7 +178,7 @@ QMAKE_LFLAGS_NOUNDEF = -Wl,--no-undefined
QMAKE_LFLAGS_RPATH = -Wl,-rpath=
QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link=
QMAKE_LIBS = -lgnustl_shared -lsupc++ -llog -lz -lm -ldl -lc -lgcc
QMAKE_LIBS_PRIVATE = -lgnustl_shared -llog -lz -lm -ldl -lc -lgcc
QMAKE_LIBS_X11 =
QMAKE_LIBS_THREAD =
QMAKE_LIBS_EGL = -lEGL