tools/configure/configureapp.cpp
branchRCL_3
changeset 7 3f74d0d4af4c
parent 5 d3bac044e0f0
--- a/tools/configure/configureapp.cpp	Mon Mar 15 12:43:09 2010 +0200
+++ b/tools/configure/configureapp.cpp	Thu Apr 08 14:19:33 2010 +0300
@@ -247,7 +247,7 @@
     dictionary[ "PHONON" ]          = "auto";
     dictionary[ "PHONON_BACKEND" ]  = "yes";
     dictionary[ "MULTIMEDIA" ]      = "yes";
-    dictionary[ "AUDIO_BACKEND" ]   = "yes";
+    dictionary[ "AUDIO_BACKEND" ]   = "auto";
     dictionary[ "DIRECTSHOW" ]      = "no";
     dictionary[ "WEBKIT" ]          = "auto";
     dictionary[ "DECLARATIVE" ]     = "auto";
@@ -482,7 +482,9 @@
             dictionary[ "BUILDNOKIA" ] = "yes";
             dictionary[ "BUILDDEV" ] = "yes";
             dictionary["LICENSE_CONFIRMED"] = "yes";
-            dictionary[ "SYMBIAN_DEFFILES" ] = "no";
+            if (dictionary.contains("XQMAKESPEC") && dictionary["XQMAKESPEC"].startsWith("symbian")) {
+                dictionary[ "SYMBIAN_DEFFILES" ] = "no";
+            }
         }
         else if( configCmdLine.at(i) == "-opensource" ) {
             dictionary[ "BUILDTYPE" ] = "opensource";
@@ -967,6 +969,10 @@
             if(i==argCount)
                 break;
             dictionary[ "QT_LIBINFIX" ] = configCmdLine.at(i);
+            if (dictionary.contains("XQMAKESPEC") && dictionary["XQMAKESPEC"].startsWith("symbian")) {
+                dictionary[ "QT_INSTALL_PLUGINS" ] =
+                    QString("\\resource\\qt%1\\plugins").arg(dictionary[ "QT_LIBINFIX" ]);
+            }
         } else if( configCmdLine.at(i) == "-D" ) {
             ++i;
             if (i==argCount)
@@ -1485,6 +1491,7 @@
         dictionary[ "QT_HOST_PREFIX" ]      = dictionary[ "QT_INSTALL_PREFIX" ];
         dictionary[ "QT_INSTALL_PREFIX" ]   = "";
         dictionary[ "QT_INSTALL_PLUGINS" ]  = "\\resource\\qt\\plugins";
+        dictionary[ "QT_INSTALL_TRANSLATIONS" ]  = "\\resource\\qt\\translations";
         dictionary[ "ARM_FPU_TYPE" ]        = "softvfp";
         dictionary[ "SQL_SQLITE" ]          = "yes";
         dictionary[ "SQL_SQLITE_LIB" ]      = "system";
@@ -2066,6 +2073,52 @@
         available = (dictionary.value("QMAKESPEC") == "win32-msvc2005") || (dictionary.value("QMAKESPEC") == "win32-msvc2008") || (dictionary.value("QMAKESPEC") == "win32-g++");
     } else if (part == "DECLARATIVE") {
         available = QFile::exists(sourcePath + "/src/declarative/qml/qmlcomponent.h");
+    } else if (part == "AUDIO_BACKEND") {
+        available = true;
+        if (dictionary.contains("XQMAKESPEC") && dictionary["XQMAKESPEC"].startsWith("symbian")) {
+            QString epocRoot = Environment::symbianEpocRoot();
+            const QDir epocRootDir(epocRoot);
+            if (epocRootDir.exists()) {
+                QStringList paths;
+                paths << "epoc32/release/armv5/lib/mmfdevsound.dso"
+                      << "epoc32/release/armv5/lib/mmfdevsound.lib"
+                      << "epoc32/release/winscw/udeb/mmfdevsound.dll"
+                      << "epoc32/release/winscw/udeb/mmfdevsound.lib"
+                      << "epoc32/include/mmf/server/sounddevice.h";
+
+                QStringList::iterator i = paths.begin();
+                while (i != paths.end()) {
+                    const QString &path = epocRoot + *i;
+                    if (QFile::exists(path))
+                        i = paths.erase(i);
+                    else
+                        ++i;
+                }
+
+                available = (paths.size() == 0);
+                if (!available) {
+                    if (epocRoot.isNull() || epocRoot == "")
+                        epocRoot = "<empty string>";
+                    cout << endl
+                         << "The QtMultimedia audio backend will not be built because required" << endl
+                         << "support for CMMFDevSound was not found in the SDK." << endl
+                         << "The SDK which was examined was located at the following path:" << endl
+                         << "    " << epocRoot << endl
+                         << "The following required files were missing from the SDK:" << endl;
+                    QString path;
+                    foreach (path, paths)
+                        cout << "    " << path << endl;
+                    cout << endl;
+                }
+            } else {
+                cout << endl
+                     << "The SDK root was determined to be '" << epocRoot << "'." << endl
+                     << "This directory was not found, so the SDK could not be checked for" << endl
+                     << "CMMFDevSound support.  The QtMultimedia audio backend will therefore" << endl
+                     << "not be built." << endl << endl;
+                available = false;
+            }
+        }
     }
 
     return available;
@@ -2154,6 +2207,8 @@
         dictionary["WEBKIT"] = checkAvailability("WEBKIT") ? "yes" : "no";
     if (dictionary["DECLARATIVE"] == "auto")
         dictionary["DECLARATIVE"] = checkAvailability("DECLARATIVE") ? "yes" : "no";
+    if (dictionary["AUDIO_BACKEND"] == "auto")
+        dictionary["AUDIO_BACKEND"] = checkAvailability("AUDIO_BACKEND") ? "yes" : "no";
 
     // Qt/WinCE remote test application
     if (dictionary["CETEST"] == "auto")
@@ -2266,24 +2321,31 @@
 
     QString build32Key = buildKey + "Windows " + compiler + " %1 " + build_options.join(" ") + " " + build_defines.join(" ");
     QString build64Key = buildKey + "Windows x64 " + compiler + " %1 " + build_options.join(" ") + " " + build_defines.join(" ");
+    QString buildSymbianKey = buildKey + "Symbian " + build_options.join(" ") + " " + build_defines.join(" ");
     build32Key = build32Key.simplified();
     build64Key = build64Key.simplified();
-    build32Key.prepend("#  define ");
-    build64Key.prepend("#  define ");
-
-    QString buildkey = // Debug builds
-                       "#if (defined(_DEBUG) || defined(DEBUG))\n"
-                       "# if (defined(WIN64) || defined(_WIN64) || defined(__WIN64__))\n"
+    buildSymbianKey = buildSymbianKey.simplified();
+    build32Key.prepend("#   define ");
+    build64Key.prepend("#   define ");
+    buildSymbianKey.prepend("# define ");
+
+    QString buildkey = "#if defined(__SYMBIAN32__)\n"
+                       + buildSymbianKey + "\"\n"
+                       "#else\n"
+                       // Debug builds
+                       "# if (defined(_DEBUG) || defined(DEBUG))\n"
+                       "#  if (defined(WIN64) || defined(_WIN64) || defined(__WIN64__))\n"
                        + build64Key.arg("debug") + "\"\n"
+                       "#  else\n"
+                       + build32Key.arg("debug") + "\"\n"
+                       "#  endif\n"
                        "# else\n"
-                       + build32Key.arg("debug") + "\"\n"
-                       "# endif\n"
-                       "#else\n"
                        // Release builds
-                       "# if (defined(WIN64) || defined(_WIN64) || defined(__WIN64__))\n"
+                       "#  if (defined(WIN64) || defined(_WIN64) || defined(__WIN64__))\n"
                        + build64Key.arg("release") + "\"\n"
-                       "# else\n"
+                       "#  else\n"
                        + build32Key.arg("release") + "\"\n"
+                       "#  endif\n"
                        "# endif\n"
                        "#endif\n";
 
@@ -2968,6 +3030,8 @@
             qconfigList += "QT_NO_CRASHHANDLER";
             qconfigList += "QT_NO_PRINTER";
             qconfigList += "QT_NO_SYSTEMTRAYICON";
+            if (dictionary.contains("QT_LIBINFIX"))
+                tmpStream << QString("#define QT_LIBINFIX \"%1\"").arg(dictionary["QT_LIBINFIX"]) << endl;
         }
 
         qconfigList.sort();
@@ -3646,7 +3710,7 @@
                     QTextStream txt(&file);
                     txt << "all:\n";
                     txt << "\t" << args.join(" ") << "\n";
-                    txt << "\t" << dictionary[ "MAKE" ] << " -f " << it->target << "\n";
+                    txt << "\t\"$(MAKE)\" -$(MAKEFLAGS) -f " << it->target << "\n";
                     txt << "first: all\n";
                     txt << "qmake:\n";
                     txt << "\t" << args.join(" ") << "\n";