summaryrefslogtreecommitdiff
path: root/qmake/project.cpp
Unidiff
Diffstat (limited to 'qmake/project.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--qmake/project.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/qmake/project.cpp b/qmake/project.cpp
index ae24193..96cdad8 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -420,69 +420,76 @@ QMakeProject::read(QString project, QString)
420 if(Option::mkfile::cachefile.isEmpty()) { //find it as it has not been specified 420 if(Option::mkfile::cachefile.isEmpty()) { //find it as it has not been specified
421 QString dir = QDir::convertSeparators(Option::output_dir); 421 QString dir = QDir::convertSeparators(Option::output_dir);
422 while(!QFile::exists((Option::mkfile::cachefile = dir + 422 while(!QFile::exists((Option::mkfile::cachefile = dir +
423 QDir::separator() + ".qmake.cache"))) { 423 QDir::separator() + ".qmake.cache"))) {
424 dir = dir.left(dir.findRev(QDir::separator())); 424 dir = dir.left(dir.findRev(QDir::separator()));
425 if(dir.isEmpty() || dir.find(QDir::separator()) == -1) { 425 if(dir.isEmpty() || dir.find(QDir::separator()) == -1) {
426 Option::mkfile::cachefile = ""; 426 Option::mkfile::cachefile = "";
427 break; 427 break;
428 } 428 }
429 if(Option::mkfile::cachefile_depth == -1) 429 if(Option::mkfile::cachefile_depth == -1)
430 Option::mkfile::cachefile_depth = 1; 430 Option::mkfile::cachefile_depth = 1;
431 else 431 else
432 Option::mkfile::cachefile_depth++; 432 Option::mkfile::cachefile_depth++;
433 } 433 }
434 } 434 }
435 if(!Option::mkfile::cachefile.isEmpty()) { 435 if(!Option::mkfile::cachefile.isEmpty()) {
436 read(Option::mkfile::cachefile, cache); 436 read(Option::mkfile::cachefile, cache);
437 if(Option::mkfile::qmakespec.isEmpty() && !cache["QMAKESPEC"].isEmpty()) 437 if(Option::mkfile::qmakespec.isEmpty() && !cache["QMAKESPEC"].isEmpty())
438 Option::mkfile::qmakespec = cache["QMAKESPEC"].first(); 438 Option::mkfile::qmakespec = cache["QMAKESPEC"].first();
439 } 439 }
440 } 440 }
441 /* parse mkspec */ 441 /* parse mkspec */
442 QStringList mkspec_roots; 442 QStringList mkspec_roots;
443 /* prefer $QTDIR if it is set */ 443 /* prefer $QTDIR if it is set */
444 /* minor hack here, prefer QMAKESPECDIR -cl */ 444 /* prefer QMAKESPECSDIR -cl */
445 445
446 if (getenv("QMAKESPECDIR")){ 446 if (getenv("QTDIR")) {
447 mkspec_roots << getenv("QMAKESPECDIR");
448 } else if (getenv("QTDIR")) {
449 mkspec_roots << getenv("QTDIR"); 447 mkspec_roots << getenv("QTDIR");
450 } 448 }
451 mkspec_roots << qInstallPathData(); 449 mkspec_roots << qInstallPathData();
450
451 if (getenv("QMAKESPECSDIR")){
452 QString mkspec = QString(getenv("QMAKESPECSDIR")) + QDir::separator() +
453 QDir::separator() + "default";
454 if(QFile::exists(mkspec))
455 Option::mkfile::qmakespec = mkspec;
456 }
457
452 if(Option::mkfile::qmakespec.isEmpty()) { 458 if(Option::mkfile::qmakespec.isEmpty()) {
453 for(QStringList::Iterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) { 459 for(QStringList::Iterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) {
454 QString mkspec = (*it) + QDir::separator() + QString("mkspecs") + 460 QString mkspec = (*it) + QDir::separator() + QString("mkspecs") +
455 QDir::separator() + "default"; 461 QDir::separator() + "default";
456 if(QFile::exists(mkspec)) { 462 if(QFile::exists(mkspec)) {
457 Option::mkfile::qmakespec = mkspec; 463 Option::mkfile::qmakespec = mkspec;
458 break; 464 break;
459 } 465 }
460 } 466 }
461 if(Option::mkfile::qmakespec.isEmpty()) { 467 }
462 fprintf(stderr, "QMAKESPEC has not been set, so configuration cannot be deduced.\n"); 468
463 return FALSE; 469 if(Option::mkfile::qmakespec.isEmpty()) {
464 } 470 fprintf(stderr, "QMAKESPEC has not been set, so configuration cannot be deduced.\n");
471 return FALSE;
465 } 472 }
466 473
467 if(QDir::isRelativePath(Option::mkfile::qmakespec)) { 474 if(QDir::isRelativePath(Option::mkfile::qmakespec)) {
468 bool found_mkspec = FALSE; 475 bool found_mkspec = FALSE;
469 for(QStringList::Iterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) { 476 for(QStringList::Iterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) {
470 QString mkspec = (*it) + QDir::separator() + QString("mkspecs") + 477 QString mkspec = (*it) + QDir::separator() + QString("mkspecs") +
471 QDir::separator() + Option::mkfile::qmakespec; 478 QDir::separator() + Option::mkfile::qmakespec;
472 if(QFile::exists(mkspec)) { 479 if(QFile::exists(mkspec)) {
473 found_mkspec = TRUE; 480 found_mkspec = TRUE;
474 Option::mkfile::qmakespec = mkspec; 481 Option::mkfile::qmakespec = mkspec;
475 break; 482 break;
476 } 483 }
477 } 484 }
478 if(!found_mkspec) { 485 if(!found_mkspec) {
479 fprintf(stderr, "Could not find mkspecs for your QMAKESPEC after trying:\n\t%s\n", 486 fprintf(stderr, "Could not find mkspecs for your QMAKESPEC after trying:\n\t%s\n",
480 mkspec_roots.join("\n\t").latin1()); 487 mkspec_roots.join("\n\t").latin1());
481 return FALSE; 488 return FALSE;
482 } 489 }
483 } 490 }
484 491
485 /* parse qmake configuration */ 492 /* parse qmake configuration */
486 QString spec = Option::mkfile::qmakespec + QDir::separator() + "qmake.conf"; 493 QString spec = Option::mkfile::qmakespec + QDir::separator() + "qmake.conf";
487 debug_msg(1, "QMAKESPEC conf: reading %s", spec.latin1()); 494 debug_msg(1, "QMAKESPEC conf: reading %s", spec.latin1());
488 if(!read(spec, base_vars)) { 495 if(!read(spec, base_vars)) {