tools/configure/configureapp.cpp
changeset 37 758a864f9613
parent 33 3e2da88830cd
--- a/tools/configure/configureapp.cpp	Fri Sep 17 08:34:18 2010 +0300
+++ b/tools/configure/configureapp.cpp	Mon Oct 04 01:19:32 2010 +0300
@@ -341,7 +341,7 @@
     dictionary[ "ACCESSIBILITY" ]   = "yes";
     dictionary[ "OPENGL" ]          = "yes";
     dictionary[ "OPENVG" ]          = "no";
-    dictionary[ "IPV6" ]            = "yes"; // Always, dynamicly loaded
+    dictionary[ "IPV6" ]            = "yes"; // Always, dynamically loaded
     dictionary[ "OPENSSL" ]         = "auto";
     dictionary[ "DBUS" ]            = "auto";
     dictionary[ "S60" ]             = "yes";
@@ -381,6 +381,7 @@
     dictionary[ "INCREDIBUILD_XGE" ] = "auto";
     dictionary[ "LTCG" ]            = "no";
     dictionary[ "NATIVE_GESTURES" ] = "yes";
+    dictionary[ "MSVC_MP" ] = "no";
 }
 
 Configure::~Configure()
@@ -534,6 +535,13 @@
         else if (configCmdLine.at(i) == "-no-ltcg") {
             dictionary[ "LTCG" ] = "no";
         }
+        else if (configCmdLine.at(i) == "-mp") {
+            dictionary[ "MSVC_MP" ] = "yes";
+        }
+        else if (configCmdLine.at(i) == "-no-mp") {
+            dictionary[ "MSVC_MP" ] = "no";
+        }
+
 #endif
 
         else if (configCmdLine.at(i) == "-platform") {
@@ -988,7 +996,6 @@
             ++i;
             if (i == argCount)
                 break;
-            qmakeDefines += "QT_NAMESPACE="+configCmdLine.at(i);
             dictionary[ "QT_NAMESPACE" ] = configCmdLine.at(i);
         } else if (configCmdLine.at(i) == "-qtlibinfix") {
             ++i;
@@ -1029,6 +1036,10 @@
             opensslLibs = configCmdLine.at(i);
         } else if (configCmdLine.at(i).startsWith("PSQL_LIBS=")) {
             psqlLibs = configCmdLine.at(i);
+        } else if (configCmdLine.at(i).startsWith("SYBASE=")) {
+            sybase = configCmdLine.at(i);
+        } else if (configCmdLine.at(i).startsWith("SYBASE_LIBS=")) {
+            sybaseLibs = configCmdLine.at(i);
         }
 
         else if ((configCmdLine.at(i) == "-override-version") || (configCmdLine.at(i) == "-version-override")){
@@ -1159,6 +1170,13 @@
                 dictionary["GRAPHICS_SYSTEM"] = configCmdLine.at(i);
         }
 
+        else if (configCmdLine.at(i) == "-runtimegraphicssystem") {
+            ++i;
+            if (i == argCount)
+                break;
+            dictionary["RUNTIME_SYSTEM"] = configCmdLine.at(i);
+        }
+
         else if (configCmdLine.at(i).indexOf(QRegExp("^-(en|dis)able-")) != -1) {
             // Scan to see if any specific modules and drivers are enabled or disabled
             for (QStringList::Iterator module = modules.begin(); module != modules.end(); ++module) {
@@ -1502,6 +1520,10 @@
         dictionary[ "QT3SUPPORT" ]          = "no";
         dictionary[ "OPENGL" ]              = "no";
         dictionary[ "OPENSSL" ]             = "yes";
+        // We accidently enabled IPv6 for Qt Symbian in 4.6.x. However the underlying OpenC does not fully support IPV6.
+        // Therefore for 4.7.1 and following we disable it until OpenC either supports it or we have the native Qt
+        // symbian socket engine.
+        dictionary[ "IPV6" ]                = "no";
         dictionary[ "STL" ]                 = "yes";
         dictionary[ "EXCEPTIONS" ]          = "yes";
         dictionary[ "RTTI" ]                = "yes";
@@ -1627,7 +1649,7 @@
                     "[-phonon] [-no-phonon-backend] [-phonon-backend]\n"
                     "[-no-multimedia] [-multimedia] [-no-audio-backend] [-audio-backend]\n"
                     "[-no-script] [-script] [-no-scripttools] [-scripttools]\n"
-                    "[-no-webkit] [-webkit] [-graphicssystem raster|opengl|openvg|runtime]\n\n", 0, 7);
+                    "[-no-webkit] [-webkit] [-graphicssystem raster|opengl|openvg]\n\n", 0, 7);
 
         desc("Installation options:\n\n");
 
@@ -1732,9 +1754,7 @@
                                 "Available values for <sys>:");
         desc("GRAPHICS_SYSTEM", "raster", "",  "  raster - Software rasterizer", ' ');
         desc("GRAPHICS_SYSTEM", "opengl", "",  "  opengl - Using OpenGL acceleration, experimental!", ' ');
-        desc("GRAPHICS_SYSTEM", "openvg", "",  "  openvg - Using OpenVG acceleration, experimental!", ' ');
-        desc("GRAPHICS_SYSTEM", "runtime", "", "  runtime - Runtime switching of graphics sytems", ' ');
-
+        desc("GRAPHICS_SYSTEM", "openvg", "",  "  openvg - Using OpenVG acceleration, experimental!\n", ' ');
 
         desc(                   "-help, -h, -?",        "Display this information.\n");
 
@@ -1843,6 +1863,8 @@
         desc("STYLE_S60" , "yes", "",                   "  s60\n", ' ');
         desc("NATIVE_GESTURES", "no", "-no-native-gestures", "Do not use native gestures on Windows 7.");
         desc("NATIVE_GESTURES", "yes", "-native-gestures", "Use native gestures on Windows 7.");
+        desc("MSVC_MP", "no", "-no-mp",                 "Do not use multiple processors for compiling with MSVC");
+        desc("MSVC_MP", "yes", "-mp",                   "Use multiple processors for compiling with MSVC (-MP)");
 
 /*      We do not support -qconfig on Windows yet
 
@@ -2144,7 +2166,7 @@
 
                 available = (paths.size() == 0);
                 if (!available) {
-                    if (epocRoot.isNull() || epocRoot == "")
+                    if (epocRoot.isEmpty())
                         epocRoot = "<empty string>";
                     cout << endl
                          << "The QtMultimedia audio backend will not be built because required" << endl
@@ -2662,8 +2684,13 @@
             qtConfig += "audio-backend";
     }
 
-    if (dictionary["WEBKIT"] == "yes")
-        qtConfig += "webkit";
+    if (dictionary["WEBKIT"] == "yes") {
+        // This include takes care of adding "webkit" to QT_CONFIG.
+        QString src = sourcePath + "/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri";
+        QString dst = buildPath + "/mkspecs/modules/qt_webkit_version.pri";
+        QFile::remove(dst);
+        QFile::copy(src, dst);
+    }
 
     if (dictionary["DECLARATIVE"] == "yes") {
         if (dictionary[ "SCRIPT" ] == "no") {
@@ -2690,7 +2717,7 @@
 
     QString set_config = dictionary["QCONFIG"];
     if (possible_configs.contains(set_config)) {
-        foreach(QString cfg, possible_configs) {
+        foreach (const QString &cfg, possible_configs) {
             qtConfig += (cfg + "-config");
             if (cfg == set_config)
                 break;
@@ -2750,6 +2777,17 @@
         }
     if (!psqlLibs.isEmpty())
         qmakeVars += QString("QT_LFLAGS_PSQL=") + psqlLibs.section("=", 1);
+
+    {
+        QStringList lflagsTDS;
+        if (!sybase.isEmpty())
+            lflagsTDS += QString("-L") + fixSeparators(sybase.section("=", 1) + "/lib");
+        if (!sybaseLibs.isEmpty())
+            lflagsTDS += sybaseLibs.section("=", 1);
+        if (!lflagsTDS.isEmpty())
+            qmakeVars += QString("QT_LFLAGS_TDS=") + lflagsTDS.join(" ");
+    }
+
     if (!qmakeSql.isEmpty())
         qmakeVars += QString("sql-drivers    += ") + qmakeSql.join(" ");
     if (!qmakeSqlPlugins.isEmpty())
@@ -2801,11 +2839,11 @@
         for (QStringList::Iterator var = qmakeVars.begin(); var != qmakeVars.end(); ++var) {
             cacheStream << (*var) << endl;
         }
-        cacheStream << "CONFIG         += " << qmakeConfig.join(" ") << " incremental create_prl link_prl depend_includepath QTDIR_build" << endl;
+        cacheStream << "CONFIG         += " << qmakeConfig.join(" ") << " incremental msvc_mp create_prl link_prl depend_includepath QTDIR_build" << endl;
 
         QStringList buildParts;
         buildParts << "libs" << "tools" << "examples" << "demos" << "docs" << "translations";
-        foreach(QString item, disabledBuildParts) {
+        foreach (const QString &item, disabledBuildParts) {
             buildParts.removeAll(item);
         }
         cacheStream << "QT_BUILD_PARTS  = " << buildParts.join(" ") << endl;
@@ -2864,6 +2902,8 @@
 
         if (dictionary[ "LTCG" ] == "yes")
             configStream << " ltcg";
+        if (dictionary[ "MSVC_MP" ] == "yes")
+            configStream << " msvc_mp";
         if (dictionary[ "STL" ] == "yes")
             configStream << " stl";
         if (dictionary[ "EXCEPTIONS" ] == "yes")
@@ -2928,8 +2968,6 @@
             configStream << "#namespaces" << endl << "QT_NAMESPACE = " << dictionary["QT_NAMESPACE"] << endl;
         }
 
-        configStream << "#modules" << endl << "for(mod,$$list($$files($$[QMAKE_MKSPECS]/modules/qt_*.pri))):include($$mod)" << endl;
-
         configStream.flush();
         configFile.close();
     }
@@ -3028,6 +3066,9 @@
 
         tmpStream << endl << "// Compile time features" << endl;
         tmpStream << "#define QT_ARCH_" << dictionary["ARCHITECTURE"].toUpper() << endl;
+        if (dictionary["GRAPHICS_SYSTEM"] == "runtime" && dictionary["RUNTIME_SYSTEM"] != "runtime")
+            tmpStream << "#define QT_DEFAULT_RUNTIME_SYSTEM \"" << dictionary["RUNTIME_SYSTEM"] << "\"" << endl;
+
         QStringList qconfigList;
         if (dictionary["STL"] == "no")                qconfigList += "QT_NO_STL";
         if (dictionary["STYLE_WINDOWS"] != "yes")     qconfigList += "QT_NO_STYLE_WINDOWS";
@@ -3117,7 +3158,7 @@
             QStringList kbdDrivers = dictionary["KBD_DRIVERS"].split(" ");;
             QStringList allKbdDrivers;
             allKbdDrivers<<"tty"<<"usb"<<"sl5000"<<"yopy"<<"vr41xx"<<"qvfb"<<"um";
-            foreach(QString kbd, allKbdDrivers) {
+            foreach (const QString &kbd, allKbdDrivers) {
                 if (!kbdDrivers.contains(kbd))
                     tmpStream<<"#define QT_NO_QWS_KBD_"<<kbd.toUpper()<<endl;
             }
@@ -3125,7 +3166,7 @@
             QStringList mouseDrivers = dictionary["MOUSE_DRIVERS"].split(" ");
             QStringList allMouseDrivers;
             allMouseDrivers << "pc"<<"bus"<<"linuxtp"<<"yopy"<<"vr41xx"<<"tslib"<<"qvfb";
-            foreach(QString mouse, allMouseDrivers) {
+            foreach (const QString &mouse, allMouseDrivers) {
                 if (!mouseDrivers.contains(mouse))
                     tmpStream<<"#define QT_NO_QWS_MOUSE_"<<mouse.toUpper()<<endl;
             }
@@ -3133,7 +3174,7 @@
             QStringList gfxDrivers = dictionary["GFX_DRIVERS"].split(" ");
             QStringList allGfxDrivers;
             allGfxDrivers<<"linuxfb"<<"transformed"<<"qvfb"<<"vnc"<<"multiscreen"<<"ahi";
-            foreach(QString gfx, allGfxDrivers) {
+            foreach (const QString &gfx, allGfxDrivers) {
                 if (!gfxDrivers.contains(gfx))
                     tmpStream<<"#define QT_NO_QWS_"<<gfx.toUpper()<<endl;
             }
@@ -3141,7 +3182,7 @@
             tmpStream<<"#define Q_WS_QWS"<<endl;
 
             QStringList depths = dictionary[ "QT_QWS_DEPTH" ].split(" ");
-            foreach(QString depth, depths)
+            foreach (const QString &depth, depths)
               tmpStream<<"#define QT_QWS_DEPTH_"+depth<<endl;
         }
 
@@ -3590,7 +3631,10 @@
         // generate Makefile
         QStringList args;
         args << QDir::toNativeSeparators(buildPath + "/bin/qmake");
-        args << "-spec" << dictionary["QMAKESPEC"] << "-r";
+        // override .qmake.cache because we are not cross-building these.
+        // we need a full path so that a build with -prefix will still find it.
+        args << "-spec" << QDir::toNativeSeparators(buildPath + "/mkspecs/" + dictionary["QMAKESPEC"]);
+        args << "-r";
         args << "-o" << QDir::toNativeSeparators(toolBuildPath + "/Makefile");
 
         QDir().mkpath(toolBuildPath);
@@ -3728,8 +3772,7 @@
                     printf("Generating Makefiles...\n");
                     generate = false; // Now Makefiles will be done
                 }
-                args << "-spec";
-                args << spec;
+                // don't pass -spec - .qmake.cache has it already
                 args << "-r";
                 args << (sourcePath + "/projects.pro");
                 args << "-o";