diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2019-10-14 15:18:44 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2019-10-15 20:51:26 +0200 |
commit | 5f160a3699d80d1736f691ad9ef774eb6aa28079 (patch) | |
tree | 0df506211cd7ec17d8f9d89bf437ed0e594b1dcf | |
parent | 3026c0630dedb2fd8744e4cd9505f90c86b1a1cd (diff) |
Fix static linking when bearer management plugins are built
The bearer plugins include copies of moc generated code that results in
duplicate symbols when static linking pulls in multiple bearer plugins.
Instead of relying on toolchain defined behavior, this patch moves the
code that is shared into the shared library as private API. This way it
will exist only once in memory and once at link time, resulting no
linking errors about duplicate symbols.
Fixes: QTBUG-79211
Change-Id: Iafa45c234e7fdd998971fc9cb7116334d08907bc
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
25 files changed, 46 insertions, 52 deletions
diff --git a/src/network/bearer/bearer.pri b/src/network/bearer/bearer.pri index d58d5ec168..bcb7a5971e 100644 --- a/src/network/bearer/bearer.pri +++ b/src/network/bearer/bearer.pri @@ -6,11 +6,14 @@ HEADERS += bearer/qnetworkconfiguration.h \ bearer/qnetworkconfigmanager_p.h \ bearer/qnetworkconfiguration_p.h \ bearer/qnetworksession_p.h \ + bearer/qnetworksession_impl_p.h \ bearer/qbearerengine_p.h \ + bearer/qbearerengine_impl_p.h \ bearer/qbearerplugin_p.h \ bearer/qsharednetworksession_p.h SOURCES += bearer/qnetworksession.cpp \ + bearer/qnetworksession_impl.cpp \ bearer/qnetworkconfigmanager.cpp \ bearer/qnetworkconfiguration.cpp \ bearer/qnetworkconfigmanager_p.cpp \ diff --git a/src/plugins/bearer/qbearerengine_impl.h b/src/network/bearer/qbearerengine_impl_p.h index 5c003aaaf6..4221b73276 100644 --- a/src/plugins/bearer/qbearerengine_impl.h +++ b/src/network/bearer/qbearerengine_impl_p.h @@ -42,9 +42,11 @@ #include <QtNetwork/private/qbearerengine_p.h> +#ifndef QT_NO_BEARERMANAGEMENT + QT_BEGIN_NAMESPACE -class QBearerEngineImpl : public QBearerEngine +class Q_NETWORK_EXPORT QBearerEngineImpl : public QBearerEngine { Q_OBJECT @@ -78,4 +80,6 @@ QT_END_NAMESPACE Q_DECLARE_METATYPE(QBearerEngineImpl::ConnectionError) +#endif // QT_NO_BEARERMANAGEMENT + #endif // QBEARERENGINE_IMPL_H diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/network/bearer/qnetworksession_impl.cpp index c6b678ab20..4b8631d4db 100644 --- a/src/plugins/bearer/qnetworksession_impl.cpp +++ b/src/network/bearer/qnetworksession_impl.cpp @@ -40,8 +40,8 @@ // see comment in ../platformdefs_win.h. #define WIN32_LEAN_AND_MEAN 1 -#include "qnetworksession_impl.h" -#include "qbearerengine_impl.h" +#include "qnetworksession_impl_p.h" +#include "qbearerengine_impl_p.h" #include <QtNetwork/qnetworksession.h> #include <QtNetwork/private/qnetworkconfigmanager_p.h> @@ -51,6 +51,8 @@ #include <QtCore/qmutex.h> #include <QtCore/qstringlist.h> +#ifndef QT_NO_BEARERMANAGEMENT + QT_BEGIN_NAMESPACE static QBearerEngineImpl *getEngineFromId(const QString &id) @@ -433,3 +435,5 @@ void QNetworkSessionPrivateImpl::decrementTimeout() QT_END_NAMESPACE #include "qnetworksession_impl.moc" + +#endif // QT_NO_BEARERMANAGEMENT diff --git a/src/plugins/bearer/qnetworksession_impl.h b/src/network/bearer/qnetworksession_impl_p.h index 0f8e014900..b174760152 100644 --- a/src/plugins/bearer/qnetworksession_impl.h +++ b/src/network/bearer/qnetworksession_impl_p.h @@ -51,16 +51,18 @@ // We mean it. // -#include "qbearerengine_impl.h" +#include "qbearerengine_impl_p.h" #include <QtNetwork/private/qnetworkconfigmanager_p.h> #include <QtNetwork/private/qnetworksession_p.h> +#ifndef QT_NO_BEARERMANAGEMENT + QT_BEGIN_NAMESPACE class QBearerEngineImpl; -class QNetworkSessionPrivateImpl : public QNetworkSessionPrivate +class Q_NETWORK_EXPORT QNetworkSessionPrivateImpl : public QNetworkSessionPrivate { Q_OBJECT @@ -127,4 +129,6 @@ private: QT_END_NAMESPACE +#endif // QT_NO_BEARERMANAGEMENT + #endif // QNETWORKSESSION_IMPL_H diff --git a/src/plugins/bearer/android/src/qandroidbearerengine.cpp b/src/plugins/bearer/android/src/qandroidbearerengine.cpp index a43ed69570..ad9895e0cf 100644 --- a/src/plugins/bearer/android/src/qandroidbearerengine.cpp +++ b/src/plugins/bearer/android/src/qandroidbearerengine.cpp @@ -38,7 +38,7 @@ ****************************************************************************/ #include "qandroidbearerengine.h" -#include "../../qnetworksession_impl.h" +#include <private/qnetworksession_impl_p.h> #include "wrappers/androidconnectivitymanager.h" #ifndef QT_NO_BEARERMANAGEMENT diff --git a/src/plugins/bearer/android/src/qandroidbearerengine.h b/src/plugins/bearer/android/src/qandroidbearerengine.h index 837b02232d..867d04d886 100644 --- a/src/plugins/bearer/android/src/qandroidbearerengine.h +++ b/src/plugins/bearer/android/src/qandroidbearerengine.h @@ -40,7 +40,7 @@ #ifndef QANDROIDBEARERENGINE_H #define QANDROIDBEARERENGINE_H -#include "../../qbearerengine_impl.h" +#include <private/qbearerengine_impl_p.h> #include <QAbstractEventDispatcher> #include <QAbstractNativeEventFilter> diff --git a/src/plugins/bearer/android/src/src.pro b/src/plugins/bearer/android/src/src.pro index eb0738386c..fcd599dffe 100644 --- a/src/plugins/bearer/android/src/src.pro +++ b/src/plugins/bearer/android/src/src.pro @@ -2,13 +2,10 @@ TARGET = qandroidbearer QT = core-private network-private -HEADERS += qandroidbearerengine.h \ - ../../qnetworksession_impl.h \ - ../../qbearerengine_impl.h +HEADERS += qandroidbearerengine.h SOURCES += main.cpp \ - qandroidbearerengine.cpp \ - ../../qnetworksession_impl.cpp + qandroidbearerengine.cpp include(wrappers/wrappers.pri) diff --git a/src/plugins/bearer/connman/connman.pro b/src/plugins/bearer/connman/connman.pro index 065ed11dad..d6577e9d7f 100644 --- a/src/plugins/bearer/connman/connman.pro +++ b/src/plugins/bearer/connman/connman.pro @@ -4,15 +4,12 @@ QT = core network-private dbus HEADERS += qconnmanservice_linux_p.h \ ../linux_common/qofonoservice_linux_p.h \ - qconnmanengine.h \ - ../qnetworksession_impl.h \ - ../qbearerengine_impl.h + qconnmanengine.h SOURCES += main.cpp \ qconnmanservice_linux.cpp \ ../linux_common/qofonoservice_linux.cpp \ - qconnmanengine.cpp \ - ../qnetworksession_impl.cpp + qconnmanengine.cpp OTHER_FILES += connman.json diff --git a/src/plugins/bearer/connman/qconnmanengine.cpp b/src/plugins/bearer/connman/qconnmanengine.cpp index 8b2076bd18..a673834825 100644 --- a/src/plugins/bearer/connman/qconnmanengine.cpp +++ b/src/plugins/bearer/connman/qconnmanengine.cpp @@ -39,7 +39,7 @@ #include "qconnmanengine.h" #include "qconnmanservice_linux_p.h" -#include "../qnetworksession_impl.h" +#include <private/qnetworksession_impl_p.h> #include <QtNetwork/private/qnetworkconfiguration_p.h> diff --git a/src/plugins/bearer/connman/qconnmanengine.h b/src/plugins/bearer/connman/qconnmanengine.h index ef80d38fa2..eb79dbec1b 100644 --- a/src/plugins/bearer/connman/qconnmanengine.h +++ b/src/plugins/bearer/connman/qconnmanengine.h @@ -51,7 +51,7 @@ // We mean it. // -#include "../qbearerengine_impl.h" +#include <private/qbearerengine_impl_p.h> #include "qconnmanservice_linux_p.h" #include "../linux_common/qofonoservice_linux_p.h" diff --git a/src/plugins/bearer/corewlan/corewlan.pro b/src/plugins/bearer/corewlan/corewlan.pro index 1dc09ebdd6..4f08eaba71 100644 --- a/src/plugins/bearer/corewlan/corewlan.pro +++ b/src/plugins/bearer/corewlan/corewlan.pro @@ -7,12 +7,9 @@ qtConfig(corewlan) { LIBS += -framework CoreWLAN -framework Security } -HEADERS += qcorewlanengine.h \ - ../qnetworksession_impl.h \ - ../qbearerengine_impl.h +HEADERS += qcorewlanengine.h -SOURCES += main.cpp \ - ../qnetworksession_impl.cpp +SOURCES += main.cpp OBJECTIVE_SOURCES += qcorewlanengine.mm diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.h b/src/plugins/bearer/corewlan/qcorewlanengine.h index 6dddee66a4..8775474c09 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.h +++ b/src/plugins/bearer/corewlan/qcorewlanengine.h @@ -40,7 +40,7 @@ #ifndef QCOREWLANENGINE_H #define QCOREWLANENGINE_H -#include "../qbearerengine_impl.h" +#include <private/qbearerengine_impl_p.h> #include <QMap> #include <QTimer> diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm index 4644b5af9f..1179899557 100644 --- a/src/plugins/bearer/corewlan/qcorewlanengine.mm +++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm @@ -38,7 +38,7 @@ ****************************************************************************/ #include "qcorewlanengine.h" -#include "../qnetworksession_impl.h" +#include <private/qnetworksession_impl_p.h> #include <QtNetwork/private/qnetworkconfiguration_p.h> diff --git a/src/plugins/bearer/generic/generic.pro b/src/plugins/bearer/generic/generic.pro index f30bdc4951..14b858b301 100644 --- a/src/plugins/bearer/generic/generic.pro +++ b/src/plugins/bearer/generic/generic.pro @@ -3,11 +3,8 @@ TARGET = qgenericbearer QT = core-private network-private HEADERS += qgenericengine.h \ - ../qnetworksession_impl.h \ - ../qbearerengine_impl.h \ ../platformdefs_win.h SOURCES += qgenericengine.cpp \ - ../qnetworksession_impl.cpp \ main.cpp OTHER_FILES += generic.json diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp index b1f28849a7..a5fba15789 100644 --- a/src/plugins/bearer/generic/qgenericengine.cpp +++ b/src/plugins/bearer/generic/qgenericengine.cpp @@ -41,7 +41,7 @@ #define WIN32_LEAN_AND_MEAN 1 #include "qgenericengine.h" -#include "../qnetworksession_impl.h" +#include <private/qnetworksession_impl_p.h> #include <QtNetwork/private/qnetworkconfiguration_p.h> diff --git a/src/plugins/bearer/generic/qgenericengine.h b/src/plugins/bearer/generic/qgenericengine.h index 79c71ca7a3..6b8fb4cd0f 100644 --- a/src/plugins/bearer/generic/qgenericengine.h +++ b/src/plugins/bearer/generic/qgenericengine.h @@ -40,7 +40,7 @@ #ifndef QGENERICENGINE_H #define QGENERICENGINE_H -#include "../qbearerengine_impl.h" +#include <private/qbearerengine_impl_p.h> #include <QMap> #include <QTimer> diff --git a/src/plugins/bearer/nativewifi/nativewifi.pro b/src/plugins/bearer/nativewifi/nativewifi.pro index da7f2da353..41bde99341 100644 --- a/src/plugins/bearer/nativewifi/nativewifi.pro +++ b/src/plugins/bearer/nativewifi/nativewifi.pro @@ -3,13 +3,10 @@ TARGET = qnativewifibearer QT = core-private network-private HEADERS += qnativewifiengine.h \ - platformdefs.h \ - ../qnetworksession_impl.h \ - ../qbearerengine_impl.h + platformdefs.h SOURCES += main.cpp \ - qnativewifiengine.cpp \ - ../qnetworksession_impl.cpp + qnativewifiengine.cpp OTHER_FILES += nativewifi.json diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp index 777b4eea59..ca8700e63b 100644 --- a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp +++ b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp @@ -39,7 +39,7 @@ #include "qnativewifiengine.h" #include "platformdefs.h" -#include "../qnetworksession_impl.h" +#include <private/qnetworksession_impl_p.h> #include <QtNetwork/private/qnetworkconfiguration_p.h> diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.h b/src/plugins/bearer/nativewifi/qnativewifiengine.h index ab8d949c9a..24e97bf6df 100644 --- a/src/plugins/bearer/nativewifi/qnativewifiengine.h +++ b/src/plugins/bearer/nativewifi/qnativewifiengine.h @@ -51,7 +51,7 @@ // We mean it. // -#include "../qbearerengine_impl.h" +#include <private/qbearerengine_impl_p.h> #include <QtCore/qtimer.h> diff --git a/src/plugins/bearer/networkmanager/networkmanager.pro b/src/plugins/bearer/networkmanager/networkmanager.pro index e71c93f66f..3fbad07ef5 100644 --- a/src/plugins/bearer/networkmanager/networkmanager.pro +++ b/src/plugins/bearer/networkmanager/networkmanager.pro @@ -4,15 +4,12 @@ QT = core network-private dbus HEADERS += qnetworkmanagerservice.h \ qnetworkmanagerengine.h \ - ../linux_common/qofonoservice_linux_p.h \ - ../qnetworksession_impl.h \ - ../qbearerengine_impl.h + ../linux_common/qofonoservice_linux_p.h SOURCES += main.cpp \ qnetworkmanagerservice.cpp \ qnetworkmanagerengine.cpp \ - ../linux_common/qofonoservice_linux.cpp \ - ../qnetworksession_impl.cpp + ../linux_common/qofonoservice_linux.cpp OTHER_FILES += networkmanager.json diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp index e74b1cf744..d686bc4e51 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp @@ -39,7 +39,7 @@ #include "qnetworkmanagerengine.h" #include "qnetworkmanagerservice.h" -#include "../qnetworksession_impl.h" +#include <private/qnetworksession_impl_p.h> #include <QtNetwork/private/qnetworkconfiguration_p.h> diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h index a95c68abdf..c6c5280eca 100644 --- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h +++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h @@ -51,7 +51,7 @@ // We mean it. // -#include "../qbearerengine_impl.h" +#include <private/qbearerengine_impl_p.h> #include "qnetworkmanagerservice.h" diff --git a/src/plugins/bearer/nla/nla.pro b/src/plugins/bearer/nla/nla.pro index 76f3279d25..2582dc7cd4 100644 --- a/src/plugins/bearer/nla/nla.pro +++ b/src/plugins/bearer/nla/nla.pro @@ -5,13 +5,10 @@ QT = core core-private network network-private QMAKE_USE_PRIVATE += ws2_32 HEADERS += qnlaengine.h \ - ../platformdefs_win.h \ - ../qnetworksession_impl.h \ - ../qbearerengine_impl.h + ../platformdefs_win.h SOURCES += main.cpp \ - qnlaengine.cpp \ - ../qnetworksession_impl.cpp + qnlaengine.cpp OTHER_FILES += nla.json diff --git a/src/plugins/bearer/nla/qnlaengine.cpp b/src/plugins/bearer/nla/qnlaengine.cpp index e1e60389f1..ab3c0d0e3a 100644 --- a/src/plugins/bearer/nla/qnlaengine.cpp +++ b/src/plugins/bearer/nla/qnlaengine.cpp @@ -38,7 +38,7 @@ ****************************************************************************/ #include "qnlaengine.h" -#include "../qnetworksession_impl.h" +#include <private/qnetworksession_impl_p.h> #include <QtNetwork/private/qnetworkconfiguration_p.h> diff --git a/src/plugins/bearer/nla/qnlaengine.h b/src/plugins/bearer/nla/qnlaengine.h index ab014ff776..90efa50201 100644 --- a/src/plugins/bearer/nla/qnlaengine.h +++ b/src/plugins/bearer/nla/qnlaengine.h @@ -51,7 +51,7 @@ // We mean it. // -#include "../qbearerengine_impl.h" +#include <private/qbearerengine_impl_p.h> #include <QtNetwork/private/qnativesocketengine_p.h> |