Do not add debug/release to QMAKE_CONFIG. Let module system enable them
This solved QTBUG-26111 in which qtjsbackend gets built with an incomplete framework on Mac OSX. This was traced back to commit6a6fd56e66
which moved QMAKE_CONFIG values from .qmake.cache to mkspecs/qmodule.pri. Since qtjsbackend contains config tests it creates its own .qmake.cache which was previously masking this issue. QMAKE_CONFIG incorrectly contained debug for debug_and_release builds even though debug and release are already present in the CONFIG variable in mkspecs/qconfig.pri. The changes to configure prevent CONFIG in qmodule.pri from containing debug and release variables and ensure that QT_CONFIG contains build_all and debug_and_release if appropriate. Configure.app is also adjusted to match this behaviour. The other part of the change is to qt_module_config.prf and qt_plugin.prf. These changes take care of populating CONFIG with the appropriate debug_and_release and build_all variables depending upon what is present in QT_CONFIG. This ensures that the Qt modules and plugins get built with the same configuration as qtbase. The special handling for the qcocoa QPA plugin ensures that it is built in release mode only to preserve the behaviour introduced by commit5603f94eaa
. Task-number: QTBUG-26111 Change-Id: I6f65aba50709e1b2431b8b4411ff30a06f7d8aed Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
This commit is contained in:
parent
bfca0a1bb6
commit
0346d605e3
4
configure
vendored
4
configure
vendored
@ -2472,7 +2472,7 @@ if [ "$CFG_DEBUG" = "auto" ]; then
|
||||
fi
|
||||
fi
|
||||
if [ "$CFG_DEBUG_RELEASE" = "yes" ]; then
|
||||
QT_CONFIG="$QT_CONFIG build_all"
|
||||
QT_CONFIG="$QT_CONFIG build_all debug_and_release"
|
||||
fi
|
||||
|
||||
# pass on $CFG_SDK to the configure tests.
|
||||
@ -5097,10 +5097,8 @@ fi
|
||||
# build up the variables for output
|
||||
if [ "$CFG_DEBUG" = "yes" ]; then
|
||||
QMAKE_OUTDIR="${QMAKE_OUTDIR}debug"
|
||||
QMAKE_CONFIG="$QMAKE_CONFIG debug"
|
||||
elif [ "$CFG_DEBUG" = "no" ]; then
|
||||
QMAKE_OUTDIR="${QMAKE_OUTDIR}release"
|
||||
QMAKE_CONFIG="$QMAKE_CONFIG release"
|
||||
fi
|
||||
if [ "$CFG_SHARED" = "yes" ]; then
|
||||
QMAKE_OUTDIR="${QMAKE_OUTDIR}-shared"
|
||||
|
@ -39,7 +39,13 @@ win32:!wince*:DLLDESTDIR = $$[QT_INSTALL_PREFIX]/bin
|
||||
CONFIG += qt warn_on depend_includepath
|
||||
CONFIG += qmake_cache target_qt
|
||||
CONFIG -= fix_output_dirs
|
||||
win32|mac:!macx-xcode:CONFIG += debug_and_release
|
||||
|
||||
# If Qt was configured with -debug-and-release then build the module the same way
|
||||
if(win32|mac):!wince*:!macx-xcode {
|
||||
contains(QT_CONFIG, debug_and_release):CONFIG += debug_and_release
|
||||
contains(QT_CONFIG, build_all):CONFIG += build_all
|
||||
}
|
||||
|
||||
linux*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
|
||||
|
||||
!isEmpty(DESTDIR):CONFIG += create_cmake
|
||||
@ -47,7 +53,6 @@ linux*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
|
||||
contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
|
||||
unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions
|
||||
contains(QT_CONFIG, largefile):CONFIG += largefile
|
||||
contains(QT_CONFIG, build_all):CONFIG += build_all
|
||||
contains(QT_CONFIG, separate_debug_info):CONFIG += separate_debug_info
|
||||
contains(QT_CONFIG, separate_debug_info_nocopy):CONFIG += separate_debug_info_nocopy
|
||||
contains(QT_CONFIG, c++11):CONFIG += c++11
|
||||
@ -56,9 +61,7 @@ contains(QT_CONFIG, c++11):CONFIG += c++11
|
||||
mac:!static:contains(QT_CONFIG, qt_framework) {
|
||||
#QMAKE_FRAMEWORK_VERSION = 4.0
|
||||
CONFIG += lib_bundle qt_no_framework_direct_includes qt_framework
|
||||
CONFIG(debug, debug|release) {
|
||||
!build_pass:CONFIG += build_all
|
||||
} else { #release
|
||||
CONFIG(release, debug|release) {
|
||||
!debug_and_release|build_pass {
|
||||
CONFIG -= qt_install_headers #no need to install these as well
|
||||
FRAMEWORK_HEADERS.version = Versions
|
||||
|
@ -6,7 +6,10 @@ isEmpty(QT_MAJOR_VERSION) {
|
||||
}
|
||||
CONFIG += qt plugin
|
||||
|
||||
win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release
|
||||
if(win32|mac):!wince*:!macx-xcode {
|
||||
contains(QT_CONFIG, debug_and_release):CONFIG += debug_and_release
|
||||
contains(QT_CONFIG, build_all):CONFIG += build_all
|
||||
}
|
||||
TARGET = $$qtLibraryTarget($$TARGET)
|
||||
contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
|
||||
contains(QT_CONFIG, separate_debug_info):CONFIG += separate_debug_info
|
||||
|
@ -96,6 +96,8 @@ INSTALLS += target
|
||||
# The Qt plugin loader will dlopen both if found, causing duplicate
|
||||
# Objective-c class definitions for the classes defined in the plugin.
|
||||
contains(QT_CONFIG,release):CONFIG -= debug
|
||||
contains(QT_CONFIG,debug_and_release):CONFIG -= debug_and_release
|
||||
contains(QT_CONFIG,build_all):CONFIG -= build_all
|
||||
|
||||
# Acccessibility debug support
|
||||
# DEFINES += QT_COCOA_ENABLE_ACCESSIBILITY_INSPECTOR
|
||||
|
@ -2194,11 +2194,11 @@ void Configure::generateOutputVars()
|
||||
bool buildAll = (dictionary[ "BUILDALL" ] == "yes");
|
||||
if (build == "debug") {
|
||||
if (buildAll)
|
||||
qtConfig += "release";
|
||||
qtConfig += "debug_and_release build_all release";
|
||||
qtConfig += "debug";
|
||||
} else if (build == "release") {
|
||||
if (buildAll)
|
||||
qtConfig += "debug";
|
||||
qtConfig += "debug_and_release build_all debug";
|
||||
qtConfig += "release";
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user