From 81a5885814d9db2bf7968c749aeb9c6415784086 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Fri, 16 Sep 2011 08:47:33 +1000 Subject: Mac: fix linking with Qt frameworks which don't exist at qmake time MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This restores the forced-vs-detection logic for Qt frameworks which was removed by commit ceed409b40fd5b8fe5c62ac33144e66f50b28ede. The problem of linking against Qt modules compiled as a static library is solved a different way: the module must explicitly state in the module .pri file that it is built as a static lib. Change-Id: Ie3d726f7b3933e5b5d27f15c6112ec1c7dee1ea2 Reviewed-on: http://codereview.qt-project.org/5034 Reviewed-by: Qt Sanity Bot Reviewed-by: Morten Johan Sørvig --- mkspecs/features/qt_functions.prf | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'mkspecs') diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf index cb04f94120..09b1b8a34b 100644 --- a/mkspecs/features/qt_functions.prf +++ b/mkspecs/features/qt_functions.prf @@ -96,6 +96,7 @@ defineTest(qtAddModule) { MODULE_NAME = $$eval(QT.$${1}.name) MODULE_INCLUDES = $$eval(QT.$${1}.includes) MODULE_LIBS = $$eval(QT.$${1}.libs) + MODULE_CONFIG = $$eval(QT.$${1}.module_config) CONFIG += $$eval(QT.$${1}.CONFIG) DEFINES += $$eval(QT.$${1}.DEFINES) @@ -115,8 +116,17 @@ defineTest(qtAddModule) { unset(LINKAGE) mac { - for(frmwrk_dir, $$list($$MODULE_LIBS $$QMAKE_LIBDIR $$(DYLD_FRAMEWORK_PATH) /Library/Frameworks)) { - exists($${frmwrk_dir}/$${MODULE_NAME}.framework) { + !contains(MODULE_CONFIG,staticlib):CONFIG(qt_framework, qt_framework|qt_no_framework) { #forced + QMAKE_FRAMEWORKPATH *= $${MODULE_LIBS} + FRAMEWORK_INCLUDE = $$MODULE_INCLUDES.framework/Headers + !qt_no_framework_direct_includes:exists($$FRAMEWORK_INCLUDE) { + INCLUDEPATH -= $$FRAMEWORK_INCLUDE + INCLUDEPATH = $$FRAMEWORK_INCLUDE $$INCLUDEPATH + } + LINKAGE = -framework $${MODULE_NAME}$${QT_LIBINFIX} + } else:!qt_no_framework { #detection + for(frmwrk_dir, $$list($$MODULE_LIBS $$QMAKE_LIBDIR $$(DYLD_FRAMEWORK_PATH) /Library/Frameworks)) { + exists($${frmwrk_dir}/$${MODULE_NAME}.framework) { QMAKE_FRAMEWORKPATH *= $${frmwrk_dir} FRAMEWORK_INCLUDE = $$frmwrk_dir/$${MODULE_NAME}.framework/Headers !qt_no_framework_direct_includes:exists($$FRAMEWORK_INCLUDE) { @@ -125,7 +135,8 @@ defineTest(qtAddModule) { } LINKAGE = -framework $${MODULE_NAME} break() - } + } + } } } -- cgit v1.2.3