diff -r 5dc02b23752f -r 3e2da88830cd tools/configure/configureapp.cpp --- a/tools/configure/configureapp.cpp Tue Jul 06 15:10:48 2010 +0300 +++ b/tools/configure/configureapp.cpp Wed Aug 18 10:37:55 2010 +0300 @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE -std::ostream &operator<<( std::ostream &s, const QString &val ) { +std::ostream &operator<<(std::ostream &s, const QString &val) { s << val.toLocal8Bit().data(); return s; } @@ -89,7 +89,7 @@ return true; } -Configure::Configure( int& argc, char** argv ) +Configure::Configure(int& argc, char** argv) { useUnixSeparators = false; // Default values for indentation @@ -111,7 +111,7 @@ */ dictionary[ "CONFIGCMD" ] = argv[ 0 ]; - for ( i = 1; i < argc; i++ ) + for (i = 1; i < argc; i++) configCmdLine += argv[ i ]; @@ -127,7 +127,7 @@ #else const QString installPath = buildPath; #endif - if(sourceDir != buildDir) { //shadow builds! + if (sourceDir != buildDir) { //shadow builds! if (!findFile("perl") && !findFile("perl.exe")) { cout << "Error: Creating a shadow build of Qt requires" << endl << "perl to be in the PATH environment"; @@ -140,37 +140,37 @@ { //duplicate qmake QStack qmake_dirs; qmake_dirs.push("qmake"); - while(!qmake_dirs.isEmpty()) { + while (!qmake_dirs.isEmpty()) { QString dir = qmake_dirs.pop(); QString od(buildPath + "/" + dir); QString id(sourcePath + "/" + dir); QFileInfoList entries = QDir(id).entryInfoList(QDir::NoDotAndDotDot|QDir::AllEntries); - for(int i = 0; i < entries.size(); ++i) { + for (int i = 0; i < entries.size(); ++i) { QFileInfo fi(entries.at(i)); - if(fi.isDir()) { + if (fi.isDir()) { qmake_dirs.push(dir + "/" + fi.fileName()); QDir().mkpath(od + "/" + fi.fileName()); } else { - QDir().mkpath(od ); + QDir().mkpath(od); bool justCopy = true; const QString fname = fi.fileName(); const QString outFile(od + "/" + fname), inFile(id + "/" + fname); - if(fi.fileName() == "Makefile") { //ignore - } else if(fi.suffix() == "h" || fi.suffix() == "cpp") { + if (fi.fileName() == "Makefile") { //ignore + } else if (fi.suffix() == "h" || fi.suffix() == "cpp") { QTemporaryFile tmpFile; - if(tmpFile.open()) { + if (tmpFile.open()) { QTextStream stream(&tmpFile); stream << "#include \"" << inFile << "\"" << endl; justCopy = false; stream.flush(); tmpFile.flush(); - if(filesDiffer(tmpFile.fileName(), outFile)) { + if (filesDiffer(tmpFile.fileName(), outFile)) { QFile::remove(outFile); tmpFile.copy(outFile); } } } - if(justCopy && filesDiffer(inFile, outFile)) + if (justCopy && filesDiffer(inFile, outFile)) QFile::copy(inFile, outFile); } } @@ -179,13 +179,13 @@ { //make a syncqt script(s) that can be used in the shadow QFile syncqt(buildPath + "/bin/syncqt"); - if(syncqt.open(QFile::WriteOnly)) { + if (syncqt.open(QFile::WriteOnly)) { QTextStream stream(&syncqt); stream << "#!/usr/bin/perl -w" << endl << "require \"" << sourcePath + "/bin/syncqt\";" << endl; } QFile syncqt_bat(buildPath + "/bin/syncqt.bat"); - if(syncqt_bat.open(QFile::WriteOnly)) { + if (syncqt_bat.open(QFile::WriteOnly)) { QTextStream stream(&syncqt_bat); stream << "@echo off" << endl << "set QTDIR=" << QDir::toNativeSeparators(sourcePath) << endl @@ -197,26 +197,26 @@ // make patch_capabilities and createpackage scripts for Symbian that can be used from the shadow build QFile patch_capabilities(buildPath + "/bin/patch_capabilities"); - if(patch_capabilities.open(QFile::WriteOnly)) { + if (patch_capabilities.open(QFile::WriteOnly)) { QTextStream stream(&patch_capabilities); stream << "#!/usr/bin/perl -w" << endl << "require \"" << sourcePath + "/bin/patch_capabilities\";" << endl; } QFile patch_capabilities_bat(buildPath + "/bin/patch_capabilities.bat"); - if(patch_capabilities_bat.open(QFile::WriteOnly)) { + if (patch_capabilities_bat.open(QFile::WriteOnly)) { QTextStream stream(&patch_capabilities_bat); stream << "@echo off" << endl << "call " << fixSeparators(sourcePath) << fixSeparators("/bin/patch_capabilities.bat %*") << endl; patch_capabilities_bat.close(); } QFile createpackage(buildPath + "/bin/createpackage"); - if(createpackage.open(QFile::WriteOnly)) { + if (createpackage.open(QFile::WriteOnly)) { QTextStream stream(&createpackage); stream << "#!/usr/bin/perl -w" << endl << "require \"" << sourcePath + "/bin/createpackage\";" << endl; } QFile createpackage_bat(buildPath + "/bin/createpackage.bat"); - if(createpackage_bat.open(QFile::WriteOnly)) { + if (createpackage_bat.open(QFile::WriteOnly)) { QTextStream stream(&createpackage_bat); stream << "@echo off" << endl << "call " << fixSeparators(sourcePath) << fixSeparators("/bin/createpackage.bat %*") << endl; @@ -228,7 +228,7 @@ QFile::copy(sourcePath + "/bin/setcepaths.bat" , buildPath + "/bin/setcepaths.bat"); //copy the mkspecs buildDir.mkpath("mkspecs"); - if(!Environment::cpdir(sourcePath + "/mkspecs", buildPath + "/mkspecs")){ + if (!Environment::cpdir(sourcePath + "/mkspecs", buildPath + "/mkspecs")){ cout << "Couldn't copy mkspecs!" << sourcePath << " " << buildPath << endl; dictionary["DONE"] = "error"; return; @@ -304,7 +304,7 @@ dictionary[ "VERSION" ] = version; { QRegExp version_re("([0-9]*)\\.([0-9]*)\\.([0-9]*)(|-.*)"); - if(version_re.exactMatch(version)) { + if (version_re.exactMatch(version)) { dictionary[ "VERSION_MAJOR" ] = version_re.cap(1); dictionary[ "VERSION_MINOR" ] = version_re.cap(2); dictionary[ "VERSION_PATCH" ] = version_re.cap(3); @@ -372,9 +372,9 @@ QString tmp = dictionary[ "QMAKESPEC" ]; if (tmp.contains("\\")) { - tmp = tmp.mid( tmp.lastIndexOf( "\\" ) + 1 ); + tmp = tmp.mid(tmp.lastIndexOf("\\") + 1); } else { - tmp = tmp.mid( tmp.lastIndexOf("/") + 1 ); + tmp = tmp.mid(tmp.lastIndexOf("/") + 1); } dictionary[ "QMAKESPEC" ] = tmp; @@ -392,11 +392,19 @@ } } -QString Configure::fixSeparators(QString somePath) +QString Configure::fixSeparators(const QString &somePath, bool escape) { - return useUnixSeparators ? - QDir::fromNativeSeparators(somePath) : - QDir::toNativeSeparators(somePath); + if (useUnixSeparators) + return QDir::fromNativeSeparators(somePath); + QString ret = QDir::toNativeSeparators(somePath); + return escape ? escapeSeparators(ret) : ret; +} + +QString Configure::escapeSeparators(const QString &somePath) +{ + QString out = somePath; + out.replace(QLatin1Char('\\'), QLatin1String("\\\\")); + return out; } // We could use QDir::homePath() + "/.qt-license", but @@ -431,12 +439,12 @@ #if !defined(EVAL) if (argCount < 1) // skip rest if no arguments ; - else if( configCmdLine.at(i) == "-redo" ) { + else if (configCmdLine.at(i) == "-redo") { dictionary[ "REDO" ] = "yes"; configCmdLine.clear(); reloadCmdLine(); } - else if( configCmdLine.at(i) == "-loadconfig" ) { + else if (configCmdLine.at(i) == "-loadconfig") { ++i; if (i != argCount) { dictionary[ "REDO" ] = "yes"; @@ -452,9 +460,9 @@ #endif // Look first for XQMAKESPEC - for(int j = 0 ; j < argCount; ++j) + for (int j = 0 ; j < argCount; ++j) { - if( configCmdLine.at(j) == "-xplatform") { + if (configCmdLine.at(j) == "-xplatform") { ++j; if (j == argCount) break; @@ -464,46 +472,46 @@ } } - for( ; iremove("qconfig-").remove(".h"); allConfigs << "full"; @@ -1327,11 +1330,11 @@ // If the internal configurations failed, try others. QStringList::Iterator config; - for( config = allConfigs.begin(); config != allConfigs.end(); ++config ) { - if( (*config) == dictionary[ "QCONFIG" ] ) + for (config = allConfigs.begin(); config != allConfigs.end(); ++config) { + if ((*config) == dictionary[ "QCONFIG" ]) break; } - if( config == allConfigs.end() ) { + if (config == allConfigs.end()) { dictionary[ "HELP" ] = "yes"; cout << "No such configuration \"" << qPrintable(dictionary[ "QCONFIG" ]) << "\"" << endl ; } @@ -1484,7 +1487,7 @@ dictionary[ "QT_HOST_PREFIX" ] = dictionary[ "QT_INSTALL_PREFIX" ]; dictionary[ "QT_INSTALL_PREFIX" ] = ""; - } else if(dictionary[ "XQMAKESPEC" ].startsWith("symbian")) { + } else if (dictionary[ "XQMAKESPEC" ].startsWith("symbian")) { dictionary[ "ACCESSIBILITY" ] = "no"; dictionary[ "STYLE_WINDOWSXP" ] = "no"; dictionary[ "STYLE_WINDOWSVISTA" ] = "no"; @@ -1533,7 +1536,7 @@ // Disable building docs and translations for now disabledBuildParts << "docs" << "translations"; - } else if(dictionary[ "XQMAKESPEC" ].startsWith("linux")) { //TODO actually wrong. + } else if (dictionary[ "XQMAKESPEC" ].startsWith("linux")) { //TODO actually wrong. //TODO dictionary[ "STYLE_WINDOWSXP" ] = "no"; dictionary[ "STYLE_WINDOWSVISTA" ] = "no"; @@ -1559,22 +1562,22 @@ QString Configure::locateFileInPaths(const QString &fileName, const QStringList &paths) { QDir d; - for( QStringList::ConstIterator it = paths.begin(); it != paths.end(); ++it ) { + for (QStringList::ConstIterator it = paths.begin(); it != paths.end(); ++it) { // Remove any leading or trailing ", this is commonly used in the environment // variables QString path = (*it); - if ( path.startsWith( "\"" ) ) - path = path.right( path.length() - 1 ); - if ( path.endsWith( "\"" ) ) - path = path.left( path.length() - 1 ); - if( d.exists(path + QDir::separator() + fileName) ) { + if (path.startsWith("\"")) + path = path.right(path.length() - 1); + if (path.endsWith("\"")) + path = path.left(path.length() - 1); + if (d.exists(path + QDir::separator() + fileName)) { return (path); } } return QString(); } -QString Configure::locateFile( const QString &fileName ) +QString Configure::locateFile(const QString &fileName) { QString file = fileName.toLower(); QStringList paths; @@ -1585,7 +1588,7 @@ #endif if (file.endsWith(".h")) paths = QString::fromLocal8Bit(getenv("INCLUDE")).split(splitReg, QString::SkipEmptyParts); - else if ( file.endsWith( ".lib" ) ) + else if (file.endsWith(".lib")) paths = QString::fromLocal8Bit(getenv("LIB")).split(splitReg, QString::SkipEmptyParts); else paths = QString::fromLocal8Bit(getenv("PATH")).split(splitReg, QString::SkipEmptyParts); @@ -1597,7 +1600,7 @@ bool Configure::displayHelp() { - if( dictionary[ "HELP" ] == "yes" ) { + if (dictionary[ "HELP" ] == "yes") { desc("Usage: configure [-buildkey ]\n" // desc("Usage: configure [-prefix dir] [-bindir ] [-libdir ]\n" // "[-docdir ] [-headerdir ] [-plugindir ]\n" @@ -1624,7 +1627,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]\n\n", 0, 7); + "[-no-webkit] [-webkit] [-graphicssystem raster|opengl|openvg|runtime]\n\n", 0, 7); desc("Installation options:\n\n"); @@ -1727,9 +1730,10 @@ #endif desc( "-graphicssystem ", "Specify which graphicssystem should be used.\n" "Available values for :"); - 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", "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( "-help, -h, -?", "Display this information.\n"); @@ -1741,22 +1745,22 @@ desc("ZLIB", "qt", "-qt-zlib", "Use the zlib bundled with Qt."); desc("ZLIB", "system", "-system-zlib", "Use zlib from the operating system.\nSee http://www.gzip.org/zlib\n"); - desc("GIF", "no", "-no-gif", "Do not compile the plugin for GIF reading support."); - desc("GIF", "auto", "-qt-gif", "Compile the plugin for GIF reading support.\nSee also src/plugins/imageformats/gif/qgifhandler.h\n"); - - desc("LIBPNG", "no", "-no-libpng", "Do not compile in PNG support."); + desc("GIF", "no", "-no-gif", "Do not compile GIF reading support."); + desc("GIF", "auto", "-qt-gif", "Compile GIF reading support.\nSee also src/gui/image/qgifhandler_p.h\n"); + + desc("LIBPNG", "no", "-no-libpng", "Do not compile PNG support."); desc("LIBPNG", "qt", "-qt-libpng", "Use the libpng bundled with Qt."); desc("LIBPNG", "system","-system-libpng", "Use libpng from the operating system.\nSee http://www.libpng.org/pub/png\n"); - desc("LIBMNG", "no", "-no-libmng", "Do not compile in MNG support."); + desc("LIBMNG", "no", "-no-libmng", "Do not compile MNG support."); desc("LIBMNG", "qt", "-qt-libmng", "Use the libmng bundled with Qt."); desc("LIBMNG", "system","-system-libmng", "Use libmng from the operating system.\nSee See http://www.libmng.com\n"); - desc("LIBTIFF", "no", "-no-libtiff", "Do not compile the plugin for TIFF support."); + desc("LIBTIFF", "no", "-no-libtiff", "Do not compile TIFF support."); desc("LIBTIFF", "qt", "-qt-libtiff", "Use the libtiff bundled with Qt."); desc("LIBTIFF", "system","-system-libtiff", "Use libtiff from the operating system.\nSee http://www.libtiff.org\n"); - desc("LIBJPEG", "no", "-no-libjpeg", "Do not compile the plugin for JPEG support."); + desc("LIBJPEG", "no", "-no-libjpeg", "Do not compile JPEG support."); desc("LIBJPEG", "qt", "-qt-libjpeg", "Use the libjpeg bundled with Qt."); desc("LIBJPEG", "system","-system-libjpeg", "Use libjpeg from the operating system.\nSee http://www.ijg.org\n"); @@ -1889,21 +1893,21 @@ #endif QStringList pathList = paths.split(splitReg, QString::SkipEmptyParts); QDir d; - for( QStringList::ConstIterator it = pathList.begin(); it != pathList.end(); ++it ) { + for (QStringList::ConstIterator it = pathList.begin(); it != pathList.end(); ++it) { // Remove any leading or trailing ", this is commonly used in the environment // variables QString path = (*it); - if ( path.startsWith( '\"' ) ) - path = path.right( path.length() - 1 ); - if ( path.endsWith( '\"' ) ) - path = path.left( path.length() - 1 ); - if( d.exists( path + QDir::separator() + fileName ) ) + if (path.startsWith('\"')) + path = path.right(path.length() - 1); + if (path.endsWith('\"')) + path = path.left(path.length() - 1); + if (d.exists(path + QDir::separator() + fileName)) return path; } return QString(); } -bool Configure::findFile( const QString &fileName ) +bool Configure::findFile(const QString &fileName) { const QString file = fileName.toLower(); const QString pathEnvVar = QString::fromLocal8Bit(getenv("PATH")); @@ -1914,7 +1918,7 @@ if (file.endsWith(".h")) { if (!mingwPath.isNull()) { if (!findFileInPaths(file, mingwPath + QLatin1String("/../include")).isNull()) - return true; + return true; //now let's try the additional compiler path QDir mingwLibDir = mingwPath + QLatin1String("/../lib/gcc/mingw32"); foreach(const QFileInfo &version, mingwLibDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) { @@ -1923,9 +1927,9 @@ } } paths = QString::fromLocal8Bit(getenv("INCLUDE")); - } else if ( file.endsWith( ".lib" ) || file.endsWith( ".a" ) ) { + } else if (file.endsWith(".lib") || file.endsWith(".a")) { if (!mingwPath.isNull() && !findFileInPaths(file, mingwPath + QLatin1String("/../lib")).isNull()) - return true; + return true; paths = QString::fromLocal8Bit(getenv("LIB")); } else { paths = pathEnvVar; @@ -1948,21 +1952,28 @@ || option == "LIBTIFF") return "system"; - // We want PNG built-in + // PNG is always built-in, never a plugin if (option == "PNG") - return "qt"; - - // The JPEG image library can only be a plugin - if (option == "JPEG" - || option == "MNG" || option == "TIFF") - return "plugin"; - - // GIF off by default - if (option == "GIF") { - if (dictionary["SHARED"] == "yes") + return "yes"; + + // These database drivers and image formats can be built-in or plugins. + // Prefer plugins when Qt is shared. + if (dictionary[ "SHARED" ] == "yes") { + if (option == "SQL_MYSQL" + || option == "SQL_MYSQL" + || option == "SQL_ODBC" + || option == "SQL_OCI" + || option == "SQL_PSQL" + || option == "SQL_TDS" + || option == "SQL_DB2" + || option == "SQL_SQLITE" + || option == "SQL_SQLITE2" + || option == "SQL_IBASE" + || option == "JPEG" + || option == "MNG" + || option == "TIFF" + || option == "GIF") return "plugin"; - else - return "yes"; } // By default we do not want to compile OCI driver when compiling with @@ -1972,18 +1983,6 @@ && option == "SQL_OCI") return "no"; - if (option == "SQL_MYSQL" - || option == "SQL_MYSQL" - || option == "SQL_ODBC" - || option == "SQL_OCI" - || option == "SQL_PSQL" - || option == "SQL_TDS" - || option == "SQL_DB2" - || option == "SQL_SQLITE" - || option == "SQL_SQLITE2" - || option == "SQL_IBASE") - return "plugin"; - if (option == "SYNCQT" && (!QFile::exists(sourcePath + "/bin/syncqt") || !QFile::exists(sourcePath + "/bin/syncqt.bat"))) @@ -2032,15 +2031,15 @@ available = true; // Built in, we have a fork else if (part == "SQL_SQLITE_LIB") { if (dictionary[ "SQL_SQLITE_LIB" ] == "system") { - // Symbian has multiple .lib/.dll files we need to find + // Symbian has multiple .lib/.dll files we need to find if (dictionary.contains("XQMAKESPEC") && dictionary["XQMAKESPEC"].startsWith("symbian")) { - available = true; // There is sqlite_symbian plugin which exports the necessary stuff - dictionary[ "QT_LFLAGS_SQLITE" ] += "-lsqlite3"; - } else { - available = findFile("sqlite3.h") && findFile("sqlite3.lib"); - if (available) - dictionary[ "QT_LFLAGS_SQLITE" ] += "sqlite3.lib"; - } + available = true; // There is sqlite_symbian plugin which exports the necessary stuff + dictionary[ "QT_LFLAGS_SQLITE" ] += "-lsqlite3"; + } else { + available = findFile("sqlite3.h") && findFile("sqlite3.lib"); + if (available) + dictionary[ "QT_LFLAGS_SQLITE" ] += "sqlite3.lib"; + } } else available = true; } else if (part == "SQL_SQLITE2") @@ -2057,7 +2056,7 @@ available = (dictionary[ "ARCHITECTURE" ] == "windowsce"); else if (part == "SSE2") available = (dictionary.value("QMAKESPEC") != "win32-msvc"); - else if (part == "3DNOW" ) + else if (part == "3DNOW") available = (dictionary.value("QMAKESPEC") != "win32-msvc") && (dictionary.value("QMAKESPEC") != "win32-icc") && findFile("mm3dnow.h"); else if (part == "MMX" || part == "SSE") available = (dictionary.value("QMAKESPEC") != "win32-msvc"); @@ -2116,6 +2115,11 @@ available = true; } else if (part == "WEBKIT") { available = (dictionary.value("QMAKESPEC") == "win32-msvc2005") || (dictionary.value("QMAKESPEC") == "win32-msvc2008") || (dictionary.value("QMAKESPEC") == "win32-msvc2010") || (dictionary.value("QMAKESPEC") == "win32-g++"); + if (dictionary[ "SHARED" ] == "no") { + cout << endl << "WARNING: Using static linking will disable the WebKit module." << endl + << endl; + available = false; + } } else if (part == "AUDIO_BACKEND") { available = true; if (dictionary.contains("XQMAKESPEC") && dictionary["XQMAKESPEC"].startsWith("symbian")) { @@ -2276,7 +2280,7 @@ cout << "WARNING: Configure could not detect the presence of a system SQLite3 lib." << endl << "Configure will therefore continue with the SQLite3 lib bundled with Qt." << endl << "(Press any key to continue..)"; - if(_getch() == 3) // _Any_ keypress w/no echo(eat for stdout) + if (_getch() == 3) // _Any_ keypress w/no echo(eat for stdout) exit(0); // Exit cleanly for Ctrl+C dictionary["SQL_SQLITE_LIB"] = "qt"; // Set to Qt's bundled lib an continue @@ -2287,14 +2291,14 @@ << "MinGW, due to lack of such support from Oracle. Consider disabling the" << endl << "Oracle driver, as the current build will most likely fail." << endl; cout << "(Press any key to continue..)"; - if(_getch() == 3) // _Any_ keypress w/no echo(eat for stdout) + if (_getch() == 3) // _Any_ keypress w/no echo(eat for stdout) exit(0); // Exit cleanly for Ctrl+C } if (dictionary["QMAKESPEC"].endsWith("win32-msvc.net")) { cout << "WARNING: The makespec win32-msvc.net is deprecated. Consider using" << endl << "win32-msvc2002 or win32-msvc2003 instead." << endl; cout << "(Press any key to continue..)"; - if(_getch() == 3) // _Any_ keypress w/no echo(eat for stdout) + if (_getch() == 3) // _Any_ keypress w/no echo(eat for stdout) exit(0); // Exit cleanly for Ctrl+C } if (0 != dictionary["ARM_FPU_TYPE"].size()) { @@ -2309,7 +2313,7 @@ cout << "WARNING: To be able to compile QtDeclarative we need to also compile the" << endl << "QtScript module. If you continue, we will turn on the QtScript module." << endl << "(Press any key to continue..)"; - if(_getch() == 3) // _Any_ keypress w/no echo(eat for stdout) + if (_getch() == 3) // _Any_ keypress w/no echo(eat for stdout) exit(0); // Exit cleanly for Ctrl+C dictionary["SCRIPT"] = "yes"; @@ -2409,13 +2413,13 @@ { // Generate variables for output // Build key ---------------------------------------------------- - if ( dictionary.contains("BUILD_KEY") ) { + if (dictionary.contains("BUILD_KEY")) { qmakeVars += dictionary.value("BUILD_KEY"); } QString build = dictionary[ "BUILD" ]; bool buildAll = (dictionary[ "BUILDALL" ] == "yes"); - if ( build == "debug") { + if (build == "debug") { if (buildAll) qtConfig += "release"; qtConfig += "debug"; @@ -2426,142 +2430,146 @@ } // Compression -------------------------------------------------- - if( dictionary[ "ZLIB" ] == "qt" ) + if (dictionary[ "ZLIB" ] == "qt") qtConfig += "zlib"; - else if( dictionary[ "ZLIB" ] == "system" ) + else if (dictionary[ "ZLIB" ] == "system") qtConfig += "system-zlib"; // Image formates ----------------------------------------------- - if( dictionary[ "GIF" ] == "no" ) + if (dictionary[ "GIF" ] == "no") qtConfig += "no-gif"; - else if( dictionary[ "GIF" ] == "yes" ) + else if (dictionary[ "GIF" ] == "yes") qtConfig += "gif"; - else if( dictionary[ "GIF" ] == "plugin" ) + else if (dictionary[ "GIF" ] == "plugin") qmakeFormatPlugins += "gif"; - if( dictionary[ "TIFF" ] == "no" ) - qtConfig += "no-tiff"; - else if( dictionary[ "TIFF" ] == "plugin" ) + if (dictionary[ "TIFF" ] == "no") + qtConfig += "no-tiff"; + else if (dictionary[ "TIFF" ] == "yes") + qtConfig += "tiff"; + else if (dictionary[ "TIFF" ] == "plugin") qmakeFormatPlugins += "tiff"; - if( dictionary[ "LIBTIFF" ] == "system" ) + if (dictionary[ "LIBTIFF" ] == "system") qtConfig += "system-tiff"; - if( dictionary[ "JPEG" ] == "no" ) + if (dictionary[ "JPEG" ] == "no") qtConfig += "no-jpeg"; - else if( dictionary[ "JPEG" ] == "plugin" ) + else if (dictionary[ "JPEG" ] == "yes") + qtConfig += "jpeg"; + else if (dictionary[ "JPEG" ] == "plugin") qmakeFormatPlugins += "jpeg"; - if( dictionary[ "LIBJPEG" ] == "system" ) + if (dictionary[ "LIBJPEG" ] == "system") qtConfig += "system-jpeg"; - if( dictionary[ "PNG" ] == "no" ) + if (dictionary[ "PNG" ] == "no") qtConfig += "no-png"; - else if( dictionary[ "PNG" ] == "qt" ) + else if (dictionary[ "PNG" ] == "yes") qtConfig += "png"; - if( dictionary[ "LIBPNG" ] == "system" ) + if (dictionary[ "LIBPNG" ] == "system") qtConfig += "system-png"; - if( dictionary[ "MNG" ] == "no" ) + if (dictionary[ "MNG" ] == "no") qtConfig += "no-mng"; - else if( dictionary[ "MNG" ] == "qt" ) + else if (dictionary[ "MNG" ] == "yes") qtConfig += "mng"; - if( dictionary[ "LIBMNG" ] == "system" ) + if (dictionary[ "LIBMNG" ] == "system") qtConfig += "system-mng"; // Text rendering -------------------------------------------------- - if( dictionary[ "FREETYPE" ] == "yes" ) + if (dictionary[ "FREETYPE" ] == "yes") qtConfig += "freetype"; // Styles ------------------------------------------------------- - if ( dictionary[ "STYLE_WINDOWS" ] == "yes" ) + if (dictionary[ "STYLE_WINDOWS" ] == "yes") qmakeStyles += "windows"; - if ( dictionary[ "STYLE_PLASTIQUE" ] == "yes" ) + if (dictionary[ "STYLE_PLASTIQUE" ] == "yes") qmakeStyles += "plastique"; - if ( dictionary[ "STYLE_CLEANLOOKS" ] == "yes" ) + if (dictionary[ "STYLE_CLEANLOOKS" ] == "yes") qmakeStyles += "cleanlooks"; - if ( dictionary[ "STYLE_WINDOWSXP" ] == "yes" ) + if (dictionary[ "STYLE_WINDOWSXP" ] == "yes") qmakeStyles += "windowsxp"; - if ( dictionary[ "STYLE_WINDOWSVISTA" ] == "yes" ) + if (dictionary[ "STYLE_WINDOWSVISTA" ] == "yes") qmakeStyles += "windowsvista"; - if ( dictionary[ "STYLE_MOTIF" ] == "yes" ) + if (dictionary[ "STYLE_MOTIF" ] == "yes") qmakeStyles += "motif"; - if ( dictionary[ "STYLE_SGI" ] == "yes" ) + if (dictionary[ "STYLE_SGI" ] == "yes") qmakeStyles += "sgi"; - if ( dictionary[ "STYLE_WINDOWSCE" ] == "yes" ) + if (dictionary[ "STYLE_WINDOWSCE" ] == "yes") qmakeStyles += "windowsce"; - if ( dictionary[ "STYLE_WINDOWSMOBILE" ] == "yes" ) + if (dictionary[ "STYLE_WINDOWSMOBILE" ] == "yes") qmakeStyles += "windowsmobile"; - if ( dictionary[ "STYLE_CDE" ] == "yes" ) + if (dictionary[ "STYLE_CDE" ] == "yes") qmakeStyles += "cde"; - if ( dictionary[ "STYLE_S60" ] == "yes" ) + if (dictionary[ "STYLE_S60" ] == "yes") qmakeStyles += "s60"; // Databases ---------------------------------------------------- - if ( dictionary[ "SQL_MYSQL" ] == "yes" ) + if (dictionary[ "SQL_MYSQL" ] == "yes") qmakeSql += "mysql"; - else if ( dictionary[ "SQL_MYSQL" ] == "plugin" ) + else if (dictionary[ "SQL_MYSQL" ] == "plugin") qmakeSqlPlugins += "mysql"; - if ( dictionary[ "SQL_ODBC" ] == "yes" ) + if (dictionary[ "SQL_ODBC" ] == "yes") qmakeSql += "odbc"; - else if ( dictionary[ "SQL_ODBC" ] == "plugin" ) + else if (dictionary[ "SQL_ODBC" ] == "plugin") qmakeSqlPlugins += "odbc"; - if ( dictionary[ "SQL_OCI" ] == "yes" ) + if (dictionary[ "SQL_OCI" ] == "yes") qmakeSql += "oci"; - else if ( dictionary[ "SQL_OCI" ] == "plugin" ) + else if (dictionary[ "SQL_OCI" ] == "plugin") qmakeSqlPlugins += "oci"; - if ( dictionary[ "SQL_PSQL" ] == "yes" ) + if (dictionary[ "SQL_PSQL" ] == "yes") qmakeSql += "psql"; - else if ( dictionary[ "SQL_PSQL" ] == "plugin" ) + else if (dictionary[ "SQL_PSQL" ] == "plugin") qmakeSqlPlugins += "psql"; - if ( dictionary[ "SQL_TDS" ] == "yes" ) + if (dictionary[ "SQL_TDS" ] == "yes") qmakeSql += "tds"; - else if ( dictionary[ "SQL_TDS" ] == "plugin" ) + else if (dictionary[ "SQL_TDS" ] == "plugin") qmakeSqlPlugins += "tds"; - if ( dictionary[ "SQL_DB2" ] == "yes" ) + if (dictionary[ "SQL_DB2" ] == "yes") qmakeSql += "db2"; - else if ( dictionary[ "SQL_DB2" ] == "plugin" ) + else if (dictionary[ "SQL_DB2" ] == "plugin") qmakeSqlPlugins += "db2"; - if ( dictionary[ "SQL_SQLITE" ] == "yes" ) + if (dictionary[ "SQL_SQLITE" ] == "yes") qmakeSql += "sqlite"; - else if ( dictionary[ "SQL_SQLITE" ] == "plugin" ) + else if (dictionary[ "SQL_SQLITE" ] == "plugin") qmakeSqlPlugins += "sqlite"; - if ( dictionary[ "SQL_SQLITE_LIB" ] == "system" ) + if (dictionary[ "SQL_SQLITE_LIB" ] == "system") qmakeConfig += "system-sqlite"; - if ( dictionary[ "SQL_SQLITE2" ] == "yes" ) + if (dictionary[ "SQL_SQLITE2" ] == "yes") qmakeSql += "sqlite2"; - else if ( dictionary[ "SQL_SQLITE2" ] == "plugin" ) + else if (dictionary[ "SQL_SQLITE2" ] == "plugin") qmakeSqlPlugins += "sqlite2"; - if ( dictionary[ "SQL_IBASE" ] == "yes" ) + if (dictionary[ "SQL_IBASE" ] == "yes") qmakeSql += "ibase"; - else if ( dictionary[ "SQL_IBASE" ] == "plugin" ) + else if (dictionary[ "SQL_IBASE" ] == "plugin") qmakeSqlPlugins += "ibase"; // Other options ------------------------------------------------ - if( dictionary[ "BUILDALL" ] == "yes" ) { + if (dictionary[ "BUILDALL" ] == "yes") { qmakeConfig += "build_all"; } qmakeConfig += dictionary[ "BUILD" ]; dictionary[ "QMAKE_OUTDIR" ] = dictionary[ "BUILD" ]; - if ( dictionary[ "SHARED" ] == "yes" ) { + if (dictionary[ "SHARED" ] == "yes") { QString version = dictionary[ "VERSION" ]; if (!version.isEmpty()) { qmakeVars += "QMAKE_QT_VERSION_OVERRIDE = " + version.left(version.indexOf(".")); @@ -2572,14 +2580,14 @@ dictionary[ "QMAKE_OUTDIR" ] += "_static"; } - if( dictionary[ "ACCESSIBILITY" ] == "yes" ) + if (dictionary[ "ACCESSIBILITY" ] == "yes") qtConfig += "accessibility"; - if( !qmakeLibs.isEmpty() ) - qmakeVars += "LIBS += " + qmakeLibs.join( " " ); - - if( !dictionary["QT_LFLAGS_SQLITE"].isEmpty() ) - qmakeVars += "QT_LFLAGS_SQLITE += " + dictionary["QT_LFLAGS_SQLITE"]; + if (!qmakeLibs.isEmpty()) + qmakeVars += "LIBS += " + escapeSeparators(qmakeLibs.join(" ")); + + if (!dictionary["QT_LFLAGS_SQLITE"].isEmpty()) + qmakeVars += "QT_LFLAGS_SQLITE += " + escapeSeparators(dictionary["QT_LFLAGS_SQLITE"]); if (dictionary[ "QT3SUPPORT" ] == "yes") qtConfig += "qt3support"; @@ -2587,26 +2595,26 @@ if (dictionary[ "OPENGL" ] == "yes") qtConfig += "opengl"; - if ( dictionary["OPENGL_ES_CM"] == "yes" ) { + if (dictionary["OPENGL_ES_CM"] == "yes") { qtConfig += "opengles1"; qtConfig += "egl"; } - if ( dictionary["OPENGL_ES_2"] == "yes" ) { + if (dictionary["OPENGL_ES_2"] == "yes") { qtConfig += "opengles2"; qtConfig += "egl"; } - if ( dictionary["OPENVG"] == "yes" ) { + if (dictionary["OPENVG"] == "yes") { qtConfig += "openvg"; qtConfig += "egl"; } - if ( dictionary["S60"] == "yes" ) { + if (dictionary["S60"] == "yes") { qtConfig += "s60"; } - if ( dictionary["DIRECTSHOW"] == "yes" ) + if (dictionary["DIRECTSHOW"] == "yes") qtConfig += "directshow"; if (dictionary[ "OPENSSL" ] == "yes") @@ -2666,7 +2674,7 @@ qtConfig += "declarative"; } - if( dictionary[ "NATIVE_GESTURES" ] == "yes" ) + if (dictionary[ "NATIVE_GESTURES" ] == "yes") qtConfig += "native-gestures"; // We currently have no switch for QtSvg, so add it unconditionally. @@ -2689,7 +2697,7 @@ } } - if (dictionary.contains("XQMAKESPEC") && ( dictionary["QMAKESPEC"] != dictionary["XQMAKESPEC"] ) ) + if (dictionary.contains("XQMAKESPEC") && (dictionary["QMAKESPEC"] != dictionary["XQMAKESPEC"])) qmakeConfig += "cross_compile"; // Directories and settings for .qmake.cache -------------------- @@ -2697,59 +2705,61 @@ // if QT_INSTALL_* have not been specified on commandline, define them now from QT_INSTALL_PREFIX // if prefix is empty (WINCE), make all of them empty, if they aren't set bool qipempty = false; - if(dictionary[ "QT_INSTALL_PREFIX" ].isEmpty()) + if (dictionary[ "QT_INSTALL_PREFIX" ].isEmpty()) qipempty = true; - if( !dictionary[ "QT_INSTALL_DOCS" ].size() ) - dictionary[ "QT_INSTALL_DOCS" ] = qipempty ? "" : fixSeparators( dictionary[ "QT_INSTALL_PREFIX" ] + "/doc" ); - if( !dictionary[ "QT_INSTALL_HEADERS" ].size() ) - dictionary[ "QT_INSTALL_HEADERS" ] = qipempty ? "" : fixSeparators( dictionary[ "QT_INSTALL_PREFIX" ] + "/include" ); - if( !dictionary[ "QT_INSTALL_LIBS" ].size() ) - dictionary[ "QT_INSTALL_LIBS" ] = qipempty ? "" : fixSeparators( dictionary[ "QT_INSTALL_PREFIX" ] + "/lib" ); - if( !dictionary[ "QT_INSTALL_BINS" ].size() ) - dictionary[ "QT_INSTALL_BINS" ] = qipempty ? "" : fixSeparators( dictionary[ "QT_INSTALL_PREFIX" ] + "/bin" ); - if( !dictionary[ "QT_INSTALL_PLUGINS" ].size() ) - dictionary[ "QT_INSTALL_PLUGINS" ] = qipempty ? "" : fixSeparators( dictionary[ "QT_INSTALL_PREFIX" ] + "/plugins" ); - if( !dictionary[ "QT_INSTALL_IMPORTS" ].size() ) - dictionary[ "QT_INSTALL_IMPORTS" ] = qipempty ? "" : fixSeparators( dictionary[ "QT_INSTALL_PREFIX" ] + "/imports" ); - if( !dictionary[ "QT_INSTALL_DATA" ].size() ) - dictionary[ "QT_INSTALL_DATA" ] = qipempty ? "" : fixSeparators( dictionary[ "QT_INSTALL_PREFIX" ] ); - if( !dictionary[ "QT_INSTALL_TRANSLATIONS" ].size() ) - dictionary[ "QT_INSTALL_TRANSLATIONS" ] = qipempty ? "" : fixSeparators( dictionary[ "QT_INSTALL_PREFIX" ] + "/translations" ); - if( !dictionary[ "QT_INSTALL_EXAMPLES" ].size() ) - dictionary[ "QT_INSTALL_EXAMPLES" ] = qipempty ? "" : fixSeparators( dictionary[ "QT_INSTALL_PREFIX" ] + "/examples"); - if( !dictionary[ "QT_INSTALL_DEMOS" ].size() ) - dictionary[ "QT_INSTALL_DEMOS" ] = qipempty ? "" : fixSeparators( dictionary[ "QT_INSTALL_PREFIX" ] + "/demos" ); - - if(dictionary.contains("XQMAKESPEC") && dictionary[ "XQMAKESPEC" ].startsWith("linux")) + if (!dictionary[ "QT_INSTALL_DOCS" ].size()) + dictionary[ "QT_INSTALL_DOCS" ] = qipempty ? "" : fixSeparators(dictionary[ "QT_INSTALL_PREFIX" ] + "/doc"); + if (!dictionary[ "QT_INSTALL_HEADERS" ].size()) + dictionary[ "QT_INSTALL_HEADERS" ] = qipempty ? "" : fixSeparators(dictionary[ "QT_INSTALL_PREFIX" ] + "/include"); + if (!dictionary[ "QT_INSTALL_LIBS" ].size()) + dictionary[ "QT_INSTALL_LIBS" ] = qipempty ? "" : fixSeparators(dictionary[ "QT_INSTALL_PREFIX" ] + "/lib"); + if (!dictionary[ "QT_INSTALL_BINS" ].size()) + dictionary[ "QT_INSTALL_BINS" ] = qipempty ? "" : fixSeparators(dictionary[ "QT_INSTALL_PREFIX" ] + "/bin"); + if (!dictionary[ "QT_INSTALL_PLUGINS" ].size()) + dictionary[ "QT_INSTALL_PLUGINS" ] = qipempty ? "" : fixSeparators(dictionary[ "QT_INSTALL_PREFIX" ] + "/plugins"); + if (!dictionary[ "QT_INSTALL_IMPORTS" ].size()) + dictionary[ "QT_INSTALL_IMPORTS" ] = qipempty ? "" : fixSeparators(dictionary[ "QT_INSTALL_PREFIX" ] + "/imports"); + if (!dictionary[ "QT_INSTALL_DATA" ].size()) + dictionary[ "QT_INSTALL_DATA" ] = qipempty ? "" : fixSeparators(dictionary[ "QT_INSTALL_PREFIX" ]); + if (!dictionary[ "QT_INSTALL_TRANSLATIONS" ].size()) + dictionary[ "QT_INSTALL_TRANSLATIONS" ] = qipempty ? "" : fixSeparators(dictionary[ "QT_INSTALL_PREFIX" ] + "/translations"); + if (!dictionary[ "QT_INSTALL_EXAMPLES" ].size()) + dictionary[ "QT_INSTALL_EXAMPLES" ] = qipempty ? "" : fixSeparators(dictionary[ "QT_INSTALL_PREFIX" ] + "/examples"); + if (!dictionary[ "QT_INSTALL_DEMOS" ].size()) + dictionary[ "QT_INSTALL_DEMOS" ] = qipempty ? "" : fixSeparators(dictionary[ "QT_INSTALL_PREFIX" ] + "/demos"); + + if (dictionary.contains("XQMAKESPEC") && dictionary[ "XQMAKESPEC" ].startsWith("linux")) dictionary[ "QMAKE_RPATHDIR" ] = dictionary[ "QT_INSTALL_LIBS" ]; - qmakeVars += QString("OBJECTS_DIR = ") + fixSeparators( "tmp/obj/" + dictionary[ "QMAKE_OUTDIR" ] ); - qmakeVars += QString("MOC_DIR = ") + fixSeparators( "tmp/moc/" + dictionary[ "QMAKE_OUTDIR" ] ); - qmakeVars += QString("RCC_DIR = ") + fixSeparators("tmp/rcc/" + dictionary["QMAKE_OUTDIR"]); + qmakeVars += QString("OBJECTS_DIR = ") + fixSeparators("tmp/obj/" + dictionary[ "QMAKE_OUTDIR" ], true); + qmakeVars += QString("MOC_DIR = ") + fixSeparators("tmp/moc/" + dictionary[ "QMAKE_OUTDIR" ], true); + qmakeVars += QString("RCC_DIR = ") + fixSeparators("tmp/rcc/" + dictionary["QMAKE_OUTDIR"], true); if (!qmakeDefines.isEmpty()) - qmakeVars += QString("DEFINES += ") + qmakeDefines.join( " " ); + qmakeVars += QString("DEFINES += ") + qmakeDefines.join(" "); if (!qmakeIncludes.isEmpty()) - qmakeVars += QString("INCLUDEPATH += ") + qmakeIncludes.join( " " ); + qmakeVars += QString("INCLUDEPATH += ") + escapeSeparators(qmakeIncludes.join(" ")); if (!opensslLibs.isEmpty()) qmakeVars += opensslLibs; else if (dictionary[ "OPENSSL" ] == "linked") { - if(dictionary.contains("XQMAKESPEC") && dictionary[ "XQMAKESPEC" ].startsWith("symbian") ) + if (dictionary.contains("XQMAKESPEC") && dictionary[ "XQMAKESPEC" ].startsWith("symbian")) qmakeVars += QString("OPENSSL_LIBS = -llibssl -llibcrypto"); else qmakeVars += QString("OPENSSL_LIBS = -lssleay32 -llibeay32"); } + if (!psqlLibs.isEmpty()) + qmakeVars += QString("QT_LFLAGS_PSQL=") + psqlLibs.section("=", 1); if (!qmakeSql.isEmpty()) - qmakeVars += QString("sql-drivers += ") + qmakeSql.join( " " ); + qmakeVars += QString("sql-drivers += ") + qmakeSql.join(" "); if (!qmakeSqlPlugins.isEmpty()) - qmakeVars += QString("sql-plugins += ") + qmakeSqlPlugins.join( " " ); + qmakeVars += QString("sql-plugins += ") + qmakeSqlPlugins.join(" "); if (!qmakeStyles.isEmpty()) - qmakeVars += QString("styles += ") + qmakeStyles.join( " " ); + qmakeVars += QString("styles += ") + qmakeStyles.join(" "); if (!qmakeStylePlugins.isEmpty()) - qmakeVars += QString("style-plugins += ") + qmakeStylePlugins.join( " " ); + qmakeVars += QString("style-plugins += ") + qmakeStylePlugins.join(" "); if (!qmakeFormatPlugins.isEmpty()) - qmakeVars += QString("imageformat-plugins += ") + qmakeFormatPlugins.join( " " ); + qmakeVars += QString("imageformat-plugins += ") + qmakeFormatPlugins.join(" "); if (dictionary["QMAKESPEC"].endsWith("-g++")) { QString includepath = qgetenv("INCLUDE"); @@ -2761,22 +2771,22 @@ qmakeVars += QString("QMAKE_LIBDIR_POST += $$split(TMPPATH,\"%1\")").arg(separator); } - if( !dictionary[ "QMAKESPEC" ].length() ) { + if (!dictionary[ "QMAKESPEC" ].length()) { cout << "Configure could not detect your compiler. QMAKESPEC must either" << endl << "be defined as an environment variable, or specified as an" << endl << "argument with -platform" << endl; dictionary[ "HELP" ] = "yes"; QStringList winPlatforms; - QDir mkspecsDir( sourcePath + "/mkspecs" ); + QDir mkspecsDir(sourcePath + "/mkspecs"); const QFileInfoList &specsList = mkspecsDir.entryInfoList(); - for(int i = 0; i < specsList.size(); ++i) { + for (int i = 0; i < specsList.size(); ++i) { const QFileInfo &fi = specsList.at(i); - if( fi.fileName().left( 5 ) == "win32" ) { + if (fi.fileName().left(5) == "win32") { winPlatforms += fi.fileName(); } } - cout << "Available platforms are: " << qPrintable(winPlatforms.join( ", " )) << endl; + cout << "Available platforms are: " << qPrintable(winPlatforms.join(", ")) << endl; dictionary[ "DONE" ] = "error"; } } @@ -2785,102 +2795,102 @@ void Configure::generateCachefile() { // Generate .qmake.cache - QFile cacheFile( buildPath + "/.qmake.cache" ); - if( cacheFile.open( QFile::WriteOnly | QFile::Text ) ) { // Truncates any existing file. - QTextStream cacheStream( &cacheFile ); - for( QStringList::Iterator var = qmakeVars.begin(); var != qmakeVars.end(); ++var ) { + QFile cacheFile(buildPath + "/.qmake.cache"); + if (cacheFile.open(QFile::WriteOnly | QFile::Text)) { // Truncates any existing file. + QTextStream cacheStream(&cacheFile); + 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 create_prl link_prl depend_includepath QTDIR_build" << endl; QStringList buildParts; buildParts << "libs" << "tools" << "examples" << "demos" << "docs" << "translations"; foreach(QString item, disabledBuildParts) { buildParts.removeAll(item); } - cacheStream << "QT_BUILD_PARTS = " << buildParts.join( " " ) << endl; + cacheStream << "QT_BUILD_PARTS = " << buildParts.join(" ") << endl; QString targetSpec = dictionary.contains("XQMAKESPEC") ? dictionary[ "XQMAKESPEC" ] : dictionary[ "QMAKESPEC" ]; QString mkspec_path = fixSeparators(sourcePath + "/mkspecs/" + targetSpec); - if(QFile::exists(mkspec_path)) - cacheStream << "QMAKESPEC = " << mkspec_path << endl; + if (QFile::exists(mkspec_path)) + cacheStream << "QMAKESPEC = " << escapeSeparators(mkspec_path) << endl; else - cacheStream << "QMAKESPEC = " << fixSeparators(targetSpec) << endl; - cacheStream << "ARCH = " << fixSeparators(dictionary[ "ARCHITECTURE" ]) << endl; - cacheStream << "QT_BUILD_TREE = " << fixSeparators(dictionary[ "QT_BUILD_TREE" ]) << endl; - cacheStream << "QT_SOURCE_TREE = " << fixSeparators(dictionary[ "QT_SOURCE_TREE" ]) << endl; + cacheStream << "QMAKESPEC = " << fixSeparators(targetSpec, true) << endl; + cacheStream << "ARCH = " << dictionary[ "ARCHITECTURE" ] << endl; + cacheStream << "QT_BUILD_TREE = " << fixSeparators(dictionary[ "QT_BUILD_TREE" ], true) << endl; + cacheStream << "QT_SOURCE_TREE = " << fixSeparators(dictionary[ "QT_SOURCE_TREE" ], true) << endl; if (dictionary["QT_EDITION"] != "QT_EDITION_OPENSOURCE") cacheStream << "DEFINES *= QT_EDITION=QT_EDITION_DESKTOP" << endl; //so that we can build without an install first (which would be impossible) - cacheStream << "QMAKE_MOC = $$QT_BUILD_TREE" << fixSeparators("/bin/moc.exe") << endl; - cacheStream << "QMAKE_UIC = $$QT_BUILD_TREE" << fixSeparators("/bin/uic.exe") << endl; - cacheStream << "QMAKE_UIC3 = $$QT_BUILD_TREE" << fixSeparators("/bin/uic3.exe") << endl; - cacheStream << "QMAKE_RCC = $$QT_BUILD_TREE" << fixSeparators("/bin/rcc.exe") << endl; - cacheStream << "QMAKE_DUMPCPP = $$QT_BUILD_TREE" << fixSeparators("/bin/dumpcpp.exe") << endl; - cacheStream << "QMAKE_INCDIR_QT = $$QT_BUILD_TREE" << fixSeparators("/include") << endl; - cacheStream << "QMAKE_LIBDIR_QT = $$QT_BUILD_TREE" << fixSeparators("/lib") << endl; + cacheStream << "QMAKE_MOC = $$QT_BUILD_TREE" << fixSeparators("/bin/moc.exe", true) << endl; + cacheStream << "QMAKE_UIC = $$QT_BUILD_TREE" << fixSeparators("/bin/uic.exe", true) << endl; + cacheStream << "QMAKE_UIC3 = $$QT_BUILD_TREE" << fixSeparators("/bin/uic3.exe", true) << endl; + cacheStream << "QMAKE_RCC = $$QT_BUILD_TREE" << fixSeparators("/bin/rcc.exe", true) << endl; + cacheStream << "QMAKE_DUMPCPP = $$QT_BUILD_TREE" << fixSeparators("/bin/dumpcpp.exe", true) << endl; + cacheStream << "QMAKE_INCDIR_QT = $$QT_BUILD_TREE" << fixSeparators("/include", true) << endl; + cacheStream << "QMAKE_LIBDIR_QT = $$QT_BUILD_TREE" << fixSeparators("/lib", true) << endl; if (dictionary["CETEST"] == "yes") { - cacheStream << "QT_CE_RAPI_INC = " << fixSeparators(dictionary[ "QT_CE_RAPI_INC" ]) << endl; - cacheStream << "QT_CE_RAPI_LIB = " << fixSeparators(dictionary[ "QT_CE_RAPI_LIB" ]) << endl; + cacheStream << "QT_CE_RAPI_INC = " << fixSeparators(dictionary[ "QT_CE_RAPI_INC" ], true) << endl; + cacheStream << "QT_CE_RAPI_LIB = " << fixSeparators(dictionary[ "QT_CE_RAPI_LIB" ], true) << endl; } // embedded - if( !dictionary["KBD_DRIVERS"].isEmpty()) + if (!dictionary["KBD_DRIVERS"].isEmpty()) cacheStream << "kbd-drivers += "<< dictionary["KBD_DRIVERS"]<directory + "/" ); + QString dirPath = fixSeparators(it->directory + "/"); QString projectName = it->proFile; QString makefileName = buildPath + "/" + dirPath + it->target; @@ -3756,7 +3759,7 @@ QStringList args; - args << fixSeparators( buildPath + "/bin/qmake" ); + args << fixSeparators(buildPath + "/bin/qmake"); args << sourcePath + "/" + dirPath + projectName; args << dictionary[ "QMAKE_ALL_ARGS" ]; @@ -3765,10 +3768,10 @@ args << it->target; args << "-spec"; args << spec; - if(!dictionary[ "QMAKEADDITIONALARGS" ].isEmpty()) + if (!dictionary[ "QMAKEADDITIONALARGS" ].isEmpty()) args << dictionary[ "QMAKEADDITIONALARGS" ]; - QDir::setCurrent( fixSeparators( dirPath ) ); + QDir::setCurrent(fixSeparators(dirPath)); QFile file(makefileName); if (!file.open(QFile::WriteOnly)) { @@ -3786,7 +3789,7 @@ } } } - QDir::setCurrent( pwd ); + QDir::setCurrent(pwd); } else { cout << "Processing of project files have been disabled." << endl; cout << "Only use this option if you really know what you're doing." << endl << endl; @@ -3800,7 +3803,7 @@ if (!dictionary.contains("XQMAKESPEC")) { cout << endl << endl << "Qt is now configured for building. Just run " << qPrintable(make) << "." << endl; cout << "To reconfigure, run " << qPrintable(make) << " confclean and configure." << endl << endl; - } else if(dictionary.value("QMAKESPEC").startsWith("wince")) { + } else if (dictionary.value("QMAKESPEC").startsWith("wince")) { // we are cross compiling for Windows CE cout << endl << endl << "Qt is now configured for building. To start the build run:" << endl << "\tsetcepaths " << dictionary.value("XQMAKESPEC") << endl @@ -3812,24 +3815,24 @@ } } -Configure::ProjectType Configure::projectType( const QString& proFileName ) +Configure::ProjectType Configure::projectType(const QString& proFileName) { - QFile proFile( proFileName ); - if( proFile.open( QFile::ReadOnly ) ) { + QFile proFile(proFileName); + if (proFile.open(QFile::ReadOnly)) { QString buffer = proFile.readLine(1024); while (!buffer.isEmpty()) { - QStringList segments = buffer.split(QRegExp( "\\s" )); + QStringList segments = buffer.split(QRegExp("\\s")); QStringList::Iterator it = segments.begin(); - if(segments.size() >= 3) { + if (segments.size() >= 3) { QString keyword = (*it++); QString operation = (*it++); QString value = (*it++); - if( keyword == "TEMPLATE" ) { - if( value == "lib" ) + if (keyword == "TEMPLATE") { + if (value == "lib") return Lib; - else if( value == "subdirs" ) + else if (value == "subdirs") return Subdirs; } } @@ -3915,11 +3918,11 @@ return false; } QStringList licenseContent = QString(file.readAll()).split('\n'); - while(i < licenseContent.size()) { + while (i < licenseContent.size()) { cout << licenseContent.at(i) << endl; if (++i % screenHeight == 0) { cout << "(Press any key for more..)"; - if(_getch() == 3) // _Any_ keypress w/no echo(eat for stdout) + if (_getch() == 3) // _Any_ keypress w/no echo(eat for stdout) exit(0); // Exit cleanly for Ctrl+C cout << "\r"; // Overwrite text above } @@ -4001,13 +4004,13 @@ void Configure::reloadCmdLine() { - if( dictionary[ "REDO" ] == "yes" ) { - QFile inFile( buildPath + "/configure" + dictionary[ "CUSTOMCONFIG" ] + ".cache" ); - if( inFile.open( QFile::ReadOnly ) ) { - QTextStream inStream( &inFile ); + if (dictionary[ "REDO" ] == "yes") { + QFile inFile(buildPath + "/configure" + dictionary[ "CUSTOMCONFIG" ] + ".cache"); + if (inFile.open(QFile::ReadOnly)) { + QTextStream inStream(&inFile); QString buffer; inStream >> buffer; - while( buffer.length() ) { + while (buffer.length()) { configCmdLine += buffer; inStream >> buffer; } @@ -4018,11 +4021,11 @@ void Configure::saveCmdLine() { - if( dictionary[ "REDO" ] != "yes" ) { - QFile outFile( buildPath + "/configure" + dictionary[ "CUSTOMCONFIG" ] + ".cache" ); - if( outFile.open( QFile::WriteOnly | QFile::Text ) ) { - QTextStream outStream( &outFile ); - for( QStringList::Iterator it = configCmdLine.begin(); it != configCmdLine.end(); ++it ) { + if (dictionary[ "REDO" ] != "yes") { + QFile outFile(buildPath + "/configure" + dictionary[ "CUSTOMCONFIG" ] + ".cache"); + if (outFile.open(QFile::WriteOnly | QFile::Text)) { + QTextStream outStream(&outFile); + for (QStringList::Iterator it = configCmdLine.begin(); it != configCmdLine.end(); ++it) { outStream << (*it) << " " << endl; } outStream.flush(); @@ -4046,23 +4049,23 @@ Configure::filesDiffer(const QString &fn1, const QString &fn2) { QFile file1(fn1), file2(fn2); - if(!file1.open(QFile::ReadOnly) || !file2.open(QFile::ReadOnly)) + if (!file1.open(QFile::ReadOnly) || !file2.open(QFile::ReadOnly)) return true; const int chunk = 2048; int used1 = 0, used2 = 0; char b1[chunk], b2[chunk]; - while(!file1.atEnd() && !file2.atEnd()) { - if(!used1) + while (!file1.atEnd() && !file2.atEnd()) { + if (!used1) used1 = file1.read(b1, chunk); - if(!used2) + if (!used2) used2 = file2.read(b2, chunk); - if(used1 > 0 && used2 > 0) { + if (used1 > 0 && used2 > 0) { const int cmp = qMin(used1, used2); - if(memcmp(b1, b2, cmp)) + if (memcmp(b1, b2, cmp)) return true; - if((used1 -= cmp)) + if ((used1 -= cmp)) memcpy(b1, b1+cmp, used1); - if((used2 -= cmp)) + if ((used2 -= cmp)) memcpy(b2, b2+cmp, used2); } }