Make configure.exe only detect each compiler once
authorBradley T. Hughes <bradley.hughes@nokia.com>
Mon, 27 Feb 2012 10:21:10 +0000 (11:21 +0100)
committerQt by Nokia <qt-info@nokia.com>
Mon, 27 Feb 2012 19:52:45 +0000 (20:52 +0100)
After commit e0acf6504356f14a6352b16ffed7b59453914863, configure.exe
built with the x64 compiler could detect the same compiler twice,
breaking the -platform detection even when only one compiler is in the
path. Fix this by taking advantage of the CompilerInfo struct ordering
and ignore detection of the same compiler.

Change-Id: I583230520d2e0859196f9d7c8af31adbb981a6ca
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
tools/configure/environment.cpp

index ae378f6..b9af9ec 100644 (file)
@@ -162,8 +162,18 @@ Compiler Environment::detectCompiler()
             QStringList::iterator it;
             for(it = pathlist.begin(); it != pathlist.end(); ++it) {
                 if((*it).contains(productPath)) {
-                    ++installed;
-                    detectedCompiler = compiler_info[i].compiler;
+                    if (detectedCompiler != compiler_info[i].compiler) {
+                        ++installed;
+                        detectedCompiler = compiler_info[i].compiler;
+                    }
+                    /* else {
+
+                        We detected the same compiler again, which happens when
+                        configure is build with the 64-bit compiler. Skip the
+                        duplicate so that we don't think it's installed twice.
+
+                    }
+                    */
                     break;
                 }
             }
@@ -175,8 +185,18 @@ Compiler Environment::detectCompiler()
         for(int i = 0; compiler_info[i].compiler; ++i) {
             QString executable = QString(compiler_info[i].executable).toLower();
             if (executable.length() && Environment::detectExecutable(executable)) {
-                ++installed;
-                detectedCompiler = compiler_info[i].compiler;
+                if (detectedCompiler != compiler_info[i].compiler) {
+                    ++installed;
+                    detectedCompiler = compiler_info[i].compiler;
+                }
+                /* else {
+
+                    We detected the same compiler again, which happens when
+                    configure is build with the 64-bit compiler. Skip the
+                    duplicate so that we don't think it's installed twice.
+
+                }
+                */
                 break;
             }
         }