The first 2 hunks put the catch-all { *; } first in version scripts so it has lowest priority when a symbol matches multiple patterns. The third hunk fixes the install location of the pkconfig files: FreeBSD installs pkgconfig files to $LOCALBASE/libdata/pkgconfig qmake uses QMAKE_PKGCONFIG_DESTDIR as relative path to $$QT_LIBDIR. As this is now '${PREFIX}/lib/qt5' we need to go up two levels. The fourth hunk stops qmake from generating la files. --- mkspecs/features/qt_module.prf.orig 2024-11-18 12:01:05 UTC +++ mkspecs/features/qt_module.prf @@ -222,7 +222,10 @@ android: CONFIG += qt_android_deps no_linker_version_s internal_module { verscript_content = "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API { *; };" } else { - verscript_content = "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API {" \ + current = Qt_$$QT_MAJOR_VERSION + verscript_content = "$$current { *; };" + + verscript_content += "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API {" \ " qt_private_api_tag*;" private_api_headers = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.QPA_HEADER_FILES @@ -231,9 +234,6 @@ android: CONFIG += qt_android_deps no_linker_version_s verscript_content += " @FILE:$$header@" verscript_content += "};" - current = Qt_$$QT_MAJOR_VERSION - verscript_content += "$$current { *; };" - !isEmpty(MODULE_VERSCRIPT_CONTENT_EXT): verscript_content += $$MODULE_VERSCRIPT_CONTENT_EXT # Add a post-processing step to replace the @FILE:filename@ @@ -264,7 +264,7 @@ load(qt_targets) # this builds on top of qt_common !internal_module:if(unix|mingw):!if(darwin:debug_and_release:CONFIG(debug, debug|release)) { CONFIG += create_pc - QMAKE_PKGCONFIG_DESTDIR = pkgconfig + QMAKE_PKGCONFIG_DESTDIR = ../../libdata/pkgconfig host_build: \ QMAKE_PKGCONFIG_LIBDIR = $$[QT_HOST_LIBS] else: \ @@ -297,7 +297,6 @@ load(qt_targets) QMAKE_PKGCONFIG_INSTALL_REPLACE += pclib_replace } !lib_bundle:unix { - CONFIG += create_libtool host_build: \ QMAKE_LIBTOOL_LIBDIR = $$[QT_HOST_LIBS] else: \