diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/configure/configureapp.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 139c76bbf1..dfd90ee97f 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -2062,6 +2062,9 @@ bool Configure::checkAvailability(const QString &part) else if (part == "ATOMIC64-LIBATOMIC") available = tryCompileProject("common/atomic64", "LIBS+=-latomic"); + else if (part == "ATOMICFPTR") + available = tryCompileProject("common/atomicfptr"); + else if (part == "SYSTEM_ZLIB") available = findFile("zlib.h"); @@ -2210,6 +2213,15 @@ void Configure::autoDetection() dictionary["ATOMIC64"] = checkAvailability("ATOMIC64") ? "yes" : checkAvailability("ATOMIC64-LIBATOMIC") ? "libatomic" : "no"; + // special case: + if (!checkAvailability("ATOMICFPTR")) { + dictionary["DONE"] = "error"; + cout << "ERROR: detected an std::atomic implementation that fails for function pointers." << endl + << "Please apply the patch corresponding to your Standard Library vendor, found in" << endl + << sourcePath << "/config.tests/common/atomicfptr" << endl; + return; + } + // Style detection if (dictionary["STYLE_WINDOWSXP"] == "auto") dictionary["STYLE_WINDOWSXP"] = checkAvailability("STYLE_WINDOWSXP") ? defaultTo("STYLE_WINDOWSXP") : "no"; @@ -2732,7 +2744,7 @@ void Configure::generateOutputVars() qtConfig += "accessibility"; if (!qmakeLibs.isEmpty()) - qmakeVars += "LIBS += " + formatPaths(qmakeLibs); + qmakeVars += "EXTRA_LIBS += " + formatPaths(qmakeLibs); if (!dictionary["QMAKE_LIBS_SQLITE"].isEmpty()) qmakeVars += "QMAKE_LIBS_SQLITE += " + dictionary["QMAKE_LIBS_SQLITE"]; @@ -2844,9 +2856,9 @@ void Configure::generateOutputVars() qtConfig += "rpath"; if (!qmakeDefines.isEmpty()) - qmakeVars += QString("DEFINES += ") + qmakeDefines.join(' '); + qmakeVars += QString("EXTRA_DEFINES += ") + qmakeDefines.join(' '); if (!qmakeIncludes.isEmpty()) - qmakeVars += QString("INCLUDEPATH += ") + formatPaths(qmakeIncludes); + qmakeVars += QString("EXTRA_INCLUDEPATH += ") + formatPaths(qmakeIncludes); if (!opensslLibs.isEmpty()) qmakeVars += opensslLibs; if (dictionary[ "OPENSSL" ] == "linked") { |