From 1fc0e27b17e6d88cd38c72ce38277d810009e0fe Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 24 Feb 2012 19:18:02 +0100 Subject: transitively resolve module dependencies otherwise we need the nasty hack for includes, and CONFIGs and DEFINES from dependencies are not included at all. Change-Id: I7eaee761161a6e8fbac8e9237d26559aa11a88a1 Reviewed-by: Joerg Bornemann Reviewed-by: Marius Storm-Olsen --- mkspecs/features/qt.prf | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) (limited to 'mkspecs') diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index 5328e6ccff..21443aa5b5 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -152,21 +152,22 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) { !isEmpty(QT_BUILD_TREE):QMAKE_LIBDIR = $$QT_BUILD_TREE/lib $$QMAKE_LIBDIR #as above, prepending prevents us from picking up "stale" libs QMAKE_LIBDIR += $$QMAKE_LIBDIR_QT -# Topological ordering of modules based on their QT..depends variable -QT = $$sort_depends(QT, "QT.") - -QT_DEPENDS= - +# Figure out from which modules we're wanting to use the private headers unset(using_privates) +NEWQT = for(QTLIB, QT) { - # Figure out if we're wanting to use the private headers of a module - contains(QTLIB, .*-private) { - QTLIB ~= s/-private// - use_private = UsePrivate - } else { - use_private = NoPrivate + QTLIBRAW = $$replace(QTLIB, -private$, ) + !isEqual(QTLIBRAW, $$QTLIB) { + want_var = QT.$${QTLIBRAW}.want_private + $$want_var = UsePrivate + using_privates = true } - + NEWQT += $$QTLIBRAW +} +# Topological resolution of modules based on their QT..depends variable +QT = $$resolve_depends(NEWQT, "QT.") +# Finally actually add the modules +for(QTLIB, QT) { isEmpty(QT.$${QTLIB}.name) { message("Warning: unknown QT module: $$QTLIB") next() @@ -176,14 +177,9 @@ for(QTLIB, QT) { warning($$TARGET cannot have a QT of $$QTLIB) next() } - qtAddModule($$QTLIB, $$use_private) - QT_DEPENDS += $$eval(QT.$${QTLIB}.depends) - isEqual(use_private, UsePrivate):using_privates = true -} -# add include paths for all .depends, since module/application might need f.ex. template specializations etc. -QT_DEPENDS -= $$QT -for(QTLIB, $$list($$lower($$unique(QT_DEPENDS)))):INCLUDEPATH *= $$INCLUDEPATH $$eval(QT.$${QTLIB}.includes) + qtAddModule($$QTLIB, $$eval(QT.$${QTLIB}.want_private)) +} !isEmpty(using_privates):!no_private_qt_headers_warning:if(!debug_and_release|!build_pass) { message("This project is using private headers and will therefore be tied to this specific Qt module build version.") -- cgit v1.2.3