configure: Unify order of options in help
[profile/ivi/qtbase.git] / tools / configure / configureapp.cpp
index 1368a99..31c82be 100644 (file)
@@ -207,7 +207,7 @@ Configure::Configure(int& argc, char** argv)
     dictionary[ "VCPROJFILES" ]     = "yes";
     dictionary[ "QMAKE_INTERNAL" ]  = "no";
     dictionary[ "FAST" ]            = "no";
-    dictionary[ "NOPROCESS" ]       = "no";
+    dictionary[ "PROCESS" ]         = "partial";
     dictionary[ "WIDGETS" ]         = "yes";
     dictionary[ "RTTI" ]            = "yes";
     dictionary[ "SSE2" ]            = "auto";
@@ -276,6 +276,7 @@ Configure::Configure(int& argc, char** argv)
 
     dictionary[ "BUILD" ]           = "debug";
     dictionary[ "BUILDALL" ]        = "auto"; // Means yes, but not explicitly
+    dictionary[ "FORCEDEBUGINFO" ]  = "no";
 
     dictionary[ "BUILDTYPE" ]      = "none";
 
@@ -459,6 +460,8 @@ void Configure::parseCmdLine()
                 dictionary[ "BUILDALL" ] = "no";
         } else if (configCmdLine.at(i) == "-debug-and-release")
             dictionary[ "BUILDALL" ] = "yes";
+        else if (configCmdLine.at(i) == "-force-debug-info")
+            dictionary[ "FORCEDEBUGINFO" ] = "yes";
 
         else if (configCmdLine.at(i) == "-shared")
             dictionary[ "SHARED" ] = "yes";
@@ -899,9 +902,11 @@ void Configure::parseCmdLine()
             dictionary[ "BUILD_QMAKE" ] = "yes";
 
         else if (configCmdLine.at(i) == "-dont-process")
-            dictionary[ "NOPROCESS" ] = "yes";
+            dictionary[ "PROCESS" ] = "no";
         else if (configCmdLine.at(i) == "-process")
-            dictionary[ "NOPROCESS" ] = "no";
+            dictionary[ "PROCESS" ] = "partial";
+        else if (configCmdLine.at(i) == "-fully-process")
+            dictionary[ "PROCESS" ] = "full";
 
         else if (configCmdLine.at(i) == "-no-qmake-deps")
             dictionary[ "DEPENDENCIES" ] = "no";
@@ -951,12 +956,20 @@ void Configure::parseCmdLine()
             opensslLibsDebug = configCmdLine.at(i);
         } else if (configCmdLine.at(i).startsWith("OPENSSL_LIBS_RELEASE=")) {
             opensslLibsRelease = configCmdLine.at(i);
+        } else if (configCmdLine.at(i).startsWith("OPENSSL_PATH=")) {
+            opensslPath = QDir::fromNativeSeparators(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).startsWith("DBUS_PATH=")) {
+            dbusPath = QDir::fromNativeSeparators(configCmdLine.at(i));
+        } else if (configCmdLine.at(i).startsWith("MYSQL_PATH=")) {
+            mysqlPath = QDir::fromNativeSeparators(configCmdLine.at(i));
+        } else if (configCmdLine.at(i).startsWith("ZLIB_LIBS=")) {
+            zlibLibs = QDir::fromNativeSeparators(configCmdLine.at(i));
         }
 
         else if ((configCmdLine.at(i) == "-override-version") || (configCmdLine.at(i) == "-version-override")){
@@ -1222,7 +1235,7 @@ void Configure::parseCmdLine()
             dictionary[ "QMAKESPEC" ].endsWith("-msvc2005") ||
             dictionary[ "QMAKESPEC" ].endsWith("-msvc2008") ||
             dictionary[ "QMAKESPEC" ].endsWith("-msvc2010") ||
-            dictionary[ "QMAKESPEC" ].endsWith("-msvc11")) {
+            dictionary[ "QMAKESPEC" ].endsWith("-msvc2012")) {
             if (dictionary[ "MAKE" ].isEmpty()) dictionary[ "MAKE" ] = "nmake";
             dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32";
         } else if (dictionary[ "QMAKESPEC" ] == QString("win32-g++")) {
@@ -1471,7 +1484,6 @@ void Configure::applySpecSpecifics()
         dictionary[ "STYLE_WINDOWSMOBILE" ] = "yes";
         dictionary[ "STYLE_MOTIF" ]         = "no";
         dictionary[ "STYLE_CDE" ]           = "no";
-        dictionary[ "FREETYPE" ]            = "no";
         dictionary[ "OPENGL" ]              = "no";
         dictionary[ "OPENSSL" ]             = "no";
         dictionary[ "RTTI" ]                = "no";
@@ -1588,11 +1600,13 @@ bool Configure::displayHelp()
         desc("BUILD", "debug",  "-debug",               "Compile and link Qt with debugging turned on.");
         desc("BUILDALL", "yes", "-debug-and-release",   "Compile and link two Qt libraries, with and without debugging turned on.\n");
 
-        desc("OPENSOURCE", "opensource", "-opensource",   "Compile and link the Open-Source Edition of Qt.");
-        desc("COMMERCIAL", "commercial", "-commercial",   "Compile and link the Commercial Edition of Qt.\n");
+        desc("FORCEDEBUGINFO", "yes","-force-debug-info", "Create symbol files for release builds.\n");
 
         desc("BUILDDEV", "yes", "-developer-build",      "Compile and link Qt with Qt developer options (including auto-tests exporting)\n");
 
+        desc("OPENSOURCE", "opensource", "-opensource",   "Compile and link the Open-Source Edition of Qt.");
+        desc("COMMERCIAL", "commercial", "-commercial",   "Compile and link the Commercial Edition of Qt.\n");
+
         desc("SHARED", "yes",   "-shared",              "Create and use shared Qt libraries.");
         desc("SHARED", "no",    "-static",              "Create and use static Qt libraries.\n");
 
@@ -1724,8 +1738,9 @@ bool Configure::displayHelp()
         desc("BUILD_QMAKE", "no", "-no-qmake",          "Do not compile qmake.");
         desc("BUILD_QMAKE", "yes", "-qmake",            "Compile qmake.\n");
 
-        desc("NOPROCESS", "yes", "-dont-process",       "Do not generate Makefiles/Project files. This will override -no-fast if specified.");
-        desc("NOPROCESS", "no",  "-process",            "Generate Makefiles/Project files.\n");
+        desc("PROCESS", "partial", "-process",          "Generate top-level Makefiles/Project files.\n");
+        desc("PROCESS", "full", "-fully-process",       "Generate Makefiles/Project files for the entire Qt tree.\n");
+        desc("PROCESS", "no", "-dont-process",          "Do not generate Makefiles/Project files. This will override -no-fast if specified.");
 
         desc("RTTI", "no",      "-no-rtti",             "Do not compile runtime type information.");
         desc("RTTI", "yes",     "-rtti",                "Compile runtime type information.\n");
@@ -2383,6 +2398,8 @@ void Configure::generateOutputVars()
     if (dictionary[ "BUILDALL" ] == "yes") {
         qtConfig += "build_all";
     }
+    if (dictionary[ "FORCEDEBUGINFO" ] == "yes")
+        qtConfig += "force_debug_info";
     qmakeConfig += dictionary[ "BUILD" ];
     dictionary[ "QMAKE_OUTDIR" ] = dictionary[ "BUILD" ];
 
@@ -2518,7 +2535,7 @@ void Configure::generateOutputVars()
     // Directories and settings for .qmake.cache --------------------
 
     if (dictionary.contains("XQMAKESPEC") && dictionary[ "XQMAKESPEC" ].startsWith("linux"))
-        dictionary[ "QMAKE_RPATHDIR" ] = dictionary[ "QT_INSTALL_LIBS" ];
+        qtConfig += "rpath";
 
     qmakeVars += QString("OBJECTS_DIR     = ") + formatPath("tmp/obj/" + dictionary["QMAKE_OUTDIR"]);
     qmakeVars += QString("MOC_DIR         = ") + formatPath("tmp/moc/" + dictionary["QMAKE_OUTDIR"]);
@@ -2541,9 +2558,17 @@ void Configure::generateOutputVars()
         } else if (opensslLibs.isEmpty()) {
             qmakeVars += QString("OPENSSL_LIBS    = -lssleay32 -llibeay32");
         }
+        if (!opensslPath.isEmpty())
+            qmakeVars += opensslPath;
     }
+    if (dictionary[ "DBUS" ] != "no" && !dbusPath.isEmpty())
+        qmakeVars += dbusPath;
+    if (dictionary[ "SQL_MYSQL" ] != "no" && !mysqlPath.isEmpty())
+        qmakeVars += mysqlPath;
     if (!psqlLibs.isEmpty())
         qmakeVars += QString("QT_LFLAGS_PSQL=") + psqlLibs.section("=", 1);
+    if (!zlibLibs.isEmpty())
+        qmakeVars += zlibLibs;
 
     {
         QStringList lflagsTDS;
@@ -2863,6 +2888,11 @@ void Configure::generateQConfigPri()
         configStream << "QT_HOST_ARCH = " << dictionary["QT_HOST_ARCH"] << endl;
         configStream << "QT_CPU_FEATURES = " << dictionary["QT_CPU_FEATURES"] << endl;
         configStream << "QT_HOST_CPU_FEATURES = " << dictionary["QT_HOST_CPU_FEATURES"] << endl;
+        if (!dictionary["XQMAKESPEC"].isEmpty() && !dictionary["XQMAKESPEC"].startsWith("wince")) {
+            // FIXME: add detection
+            configStream << "QMAKE_DEFAULT_LIBDIRS = /lib /usr/lib" << endl;
+            configStream << "QMAKE_DEFAULT_INCDIRS = /usr/include /usr/local/include" << endl;
+        }
         if (dictionary["QT_EDITION"].contains("OPENSOURCE"))
             configStream << "QT_EDITION = " << QLatin1String("OpenSource") << endl;
         else
@@ -3023,6 +3053,27 @@ void Configure::generateConfigfiles()
             tmpStream << endl;
         }
 
+        tmpStream << endl << "// Compiler sub-arch support" << endl;
+        if (dictionary[ "SSE2" ] == "yes")
+            tmpStream << "#define QT_COMPILER_SUPPORTS_SSE2" << endl;
+        if (dictionary[ "SSE3" ] == "yes")
+            tmpStream << "#define QT_COMPILER_SUPPORTS_SSE3" << endl;
+        if (dictionary[ "SSSE3" ] == "yes")
+            tmpStream << "#define QT_COMPILER_SUPPORTS_SSSE3" << endl;
+        if (dictionary[ "SSE4_1" ] == "yes")
+            tmpStream << "#define QT_COMPILER_SUPPORTS_SSE4_1" << endl;
+        if (dictionary[ "SSE4_2" ] == "yes")
+            tmpStream << "#define QT_COMPILER_SUPPORTS_SSE4_2" << endl;
+        if (dictionary[ "AVX" ] == "yes")
+            tmpStream << "#define QT_COMPILER_SUPPORTS_AVX" << endl;
+        if (dictionary[ "AVX2" ] == "yes")
+            tmpStream << "#define QT_COMPILER_SUPPORTS_AVX2" << endl;
+        if (dictionary[ "IWMMXT" ] == "yes")
+            tmpStream << "#define QT_COMPILER_SUPPORTS_IWMMXT" << endl;
+        if (dictionary[ "NEON" ] == "yes")
+            tmpStream << "#define QT_COMPILER_SUPPORTS_NEON" << endl;
+
+
         tmpStream << endl << "// Compile time features" << endl;
 
         QStringList qconfigList;
@@ -3088,26 +3139,16 @@ void Configure::generateConfigfiles()
         else
             qconfigList += "QT_NO_NIS";
 
-        if (dictionary["LARGE_FILE"] == "yes")
-            tmpStream << "#define QT_LARGEFILE_SUPPORT 64" << endl;
-
+        if (dictionary["LARGE_FILE"] == "yes")       qconfigList += "QT_LARGEFILE_SUPPORT=64";
+        if (dictionary["QT_CUPS"] == "no")           qconfigList += "QT_NO_CUPS";
+        if (dictionary["QT_ICONV"] == "no")          qconfigList += "QT_NO_ICONV";
+        if (dictionary["QT_GLIB"] == "no")           qconfigList += "QT_NO_GLIB";
+        if (dictionary["QT_INOTIFY"] == "no")        qconfigList += "QT_NO_INOTIFY";
 
         qconfigList.sort();
         for (int i = 0; i < qconfigList.count(); ++i)
             tmpStream << addDefine(qconfigList.at(i));
 
-        if (dictionary[ "QT_CUPS" ] == "no")
-          tmpStream<<"#define QT_NO_CUPS"<<endl;
-
-        if (dictionary[ "QT_ICONV" ]  == "no")
-          tmpStream<<"#define QT_NO_ICONV"<<endl;
-
-        if (dictionary[ "QT_GLIB" ] == "no")
-          tmpStream<<"#define QT_NO_GLIB"<<endl;
-
-        if (dictionary[ "QT_INOTIFY" ] == "no")
-          tmpStream<<"#define QT_NO_INOTIFY"<<endl;
-
         tmpStream<<"#define QT_QPA_DEFAULT_PLATFORM_NAME \"" << qpaPlatformName() << "\""<<endl;
 
         tmpStream.flush();
@@ -3188,7 +3229,14 @@ void Configure::displayConfig()
     sout << "Host Architecture..........." << dictionary["QT_HOST_ARCH"]
          << ", features:" << dictionary["QT_HOST_CPU_FEATURES"]  << endl;
     sout << "Maketool...................." << dictionary[ "MAKE" ] << endl;
-    sout << "Debug symbols..............." << (dictionary[ "BUILD" ] == "debug" ? "yes" : "no") << endl;
+    if (dictionary[ "BUILDALL" ] == "yes") {
+        sout << "Debug build................." << "yes (combined)" << endl;
+        sout << "Default build..............." << dictionary[ "BUILD" ] << endl;
+    } else {
+        sout << "Debug......................." << (dictionary[ "BUILD" ] == "debug" ? "yes" : "no") << endl;
+    }
+    if (dictionary[ "BUILD" ] == "release" || dictionary[ "BUILDALL" ] == "yes")
+        sout << "Force debug info............" << dictionary[ "FORCEDEBUGINFO" ] << endl;
     sout << "Link Time Code Generation..." << dictionary[ "LTCG" ] << endl;
     sout << "Accessibility support......." << dictionary[ "ACCESSIBILITY" ] << endl;
     sout << "RTTI support................" << dictionary[ "RTTI" ] << endl;
@@ -3334,7 +3382,7 @@ void Configure::displayConfig()
 
     // display config.summary
     sout.seekg(0, ios::beg);
-    while (sout) {
+    while (sout.good()) {
         string str;
         getline(sout, str);
         cout << str << endl;
@@ -3561,7 +3609,7 @@ void Configure::buildQmake()
 
 void Configure::findProjects(const QString& dirName)
 {
-    if (dictionary[ "NOPROCESS" ] == "no") {
+    if (dictionary[ "PROCESS" ] != "no") {
         QDir dir(dirName);
         QString entryName;
         int makeListNumber;
@@ -3612,7 +3660,7 @@ void Configure::appendMakeItem(int inList, const QString &item)
 
 void Configure::generateMakefiles()
 {
-    if (dictionary[ "NOPROCESS" ] == "no") {
+    if (dictionary[ "PROCESS" ] != "no") {
         QString spec = dictionary.contains("XQMAKESPEC") ? dictionary[ "XQMAKESPEC" ] : dictionary[ "QMAKESPEC" ];
         if (spec != "win32-msvc.net" && !spec.startsWith("win32-msvc2") && !spec.startsWith(QLatin1String("wince")))
             dictionary[ "VCPROJFILES" ] = "no";
@@ -3640,7 +3688,8 @@ void Configure::generateMakefiles()
                     printf("Generating Makefiles...\n");
                     generate = false; // Now Makefiles will be done
                 }
-                args << "-r";
+                if (dictionary[ "PROCESS" ] == "full")
+                    args << "-r";
                 args << (sourcePath + "/qtbase.pro");
                 args << "-o";
                 args << buildPath;