aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2023-11-04 15:51:40 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-11-04 16:26:59 +0000
commit3cb46a4465c6319ff9fcf7ac6d151ac884a515ee (patch)
tree0f18010dd7185cec06612ccc7c3f9b479f2ed0d7
parentbfcd2a9b6f168c590da52dfefa0aacf1b021d30f (diff)
downloadports-3cb46a4465c6319ff9fcf7ac6d151ac884a515ee.tar.gz
ports-3cb46a4465c6319ff9fcf7ac6d151ac884a515ee.zip
qt(-dist)?.mk: suppress linker version script errors with lld >= 17 (take 2)
This amends commit 3e5360df35848a1ad8c5edae83a0a9cdfd6bb775: Qt uses generated linker version scripts which always have a qt_version_tag symbol, but that symbol is only defined in the main Qt shared library. For other Qt components, this leads to lld >= 17 erroring out due to the symbol being undefined. Suppress these errors from qt-dist.mk, so we don't have to patch each individual port. This affects at least: * devel/qt5-dbus * net/qt5-network * databases/qt5-sql which were the first ones to fall over with a clang+lld 17 poudriere bulk run. For reference, the error you would see looks like: ... c++ -Wl,--as-needed -fstack-protector-strong -Wl,--no-undefined -Wl,--version-script,QtDBus.version -pthread -Wl,-rpath,/usr/local/lib/qt5 -shared -Wl,-Bsymbolic-functions -Wl,-soname,libQt5DBus.so.5 -o libQt5DBus.so.5.15.8 .obj/qdbusconnection.o .obj/qdbusconnectioninterface.o .obj/qdbuserror.o .obj/qdbusintegrator.o .obj/qdbusmessage.o .obj/qdbusserver.o .obj/qdbusabstractinterface.o .obj/qdbusinterface.o .obj/qdbusxmlparser.o .obj/qdbusutil.o .obj/qdbusintrospection.o .obj/qdbusabstractadaptor.o .obj/qdbusinternalfilters.o .obj/qdbusmetaobject.o .obj/qdbusxmlgenerator.o .obj/qdbusmisc.o .obj/qdbusargument.o .obj/qdbusreply.o .obj/qdbusmetatype.o .obj/qdbusextratypes.o .obj/qdbuscontext.o .obj/qdbuspendingcall.o .obj/qdbuspendingreply.o .obj/qdbus_symbols.o .obj/qdbusservicewatcher.o .obj/qdbusunixfiledescriptor.o .obj/qdbusvirtualobject.o .obj/moc_qdbusconnectioninterface.o .obj/moc_qdbuserror.o .obj/moc_qdbusconnection.o .obj/moc_qdbusabstractadaptor.o .obj/moc_qdbusvirtualobject.o .obj/moc_qdbusconnection_p.o .obj/moc_qdbusconnectionmanager_p.o .obj/moc_qdbuspendingcall_p.o -L/wrkdirs/usr/ports/devel/qt5-dbus/work/kde-qtbase-5.15.8p157/lib /usr/local/lib/qt5/libQt5Core.so -L/usr/local/lib -ldbus-1 ld: error: version script assignment of 'Qt_5.15' to symbol 'qt_version_tag' failed: symbol not defined c++: error: linker command failed with exit code 1 (use -v to see invocation) Some qt ports, such as www/qt5-webkit, do not use qt-dist.mk but qt.mk, and qt-dist.mk includes qt.mk, so move the workaround that sets LDFLAGS to qt.mk instead. This should fix the problem for all qt ports. PR: 273992, 273753 Fixes: 3e5360df3584 MFH: 2023Q4
-rw-r--r--Mk/Uses/qt-dist.mk6
-rw-r--r--Mk/Uses/qt.mk6
2 files changed, 6 insertions, 6 deletions
diff --git a/Mk/Uses/qt-dist.mk b/Mk/Uses/qt-dist.mk
index b59e07539fd8..68827ad7e620 100644
--- a/Mk/Uses/qt-dist.mk
+++ b/Mk/Uses/qt-dist.mk
@@ -181,12 +181,6 @@ EXTRACT_AFTER_ARGS?= ${DISTNAME:S,$,/examples,:S,^,--exclude ,} \
--no-same-owner --no-same-permissions
. endif # ! ${_QT_VER:M5}
-# Qt uses generated linker version scripts which always have a qt_version_tag
-# symbol, but that symbol is only defined in the main Qt shared library. For
-# other Qt components, this leads to lld >= 17 erroring out due to the symbol
-# being undefined. Supress these errors.
-LDFLAGS+= -Wl,--undefined-version
-
# Build setup for Qt6
. if ${_QT_VER:M6}
CMAKE_ARGS+= -DCMAKE_INSTALL_PREFIX=${PREFIX} \
diff --git a/Mk/Uses/qt.mk b/Mk/Uses/qt.mk
index 61cb098c6f68..ecc85e94f7c3 100644
--- a/Mk/Uses/qt.mk
+++ b/Mk/Uses/qt.mk
@@ -120,6 +120,12 @@ MAKE_ENV+= QT_SELECT=${_QT_RELNAME}
CONFIGURE_ENV+= QMAKEMODULES="${WRKSRC}/mkspecs/modules:${LOCALBASE}/${QT_MKSPECDIR_REL}/modules"
MAKE_ENV+= QMAKEMODULES="${WRKSRC}/mkspecs/modules:${LOCALBASE}/${QT_MKSPECDIR_REL}/modules"
+# Qt uses generated linker version scripts which always have a qt_version_tag
+# symbol, but that symbol is only defined in the main Qt shared library. For
+# other Qt components, this leads to lld >= 17 erroring out due to the symbol
+# being undefined. Supress these errors.
+LDFLAGS+= -Wl,--undefined-version
+
_USES_POST+= qt
.endif # _QT_MK_INCLUDED