HomeFreeBSD

qt(-dist)?.mk: suppress linker version script errors with lld >= 17 (take 2)

Description

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

Details

Provenance
dimAuthored on Nov 4 2023, 3:51 PM
Parents
R11:bfcd2a9b6f16: www/qt5-webengine: fix build with libc++ 17
Branches
Unknown
Tags
Unknown