-rw-r--r-- | qmake/project.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/qmake/project.cpp b/qmake/project.cpp index 96cdad8..44eb503 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp | |||
@@ -355,193 +355,193 @@ QMakeProject::parse(QString t, QMap<QString, QStringList> &place) | |||
355 | } | 355 | } |
356 | 356 | ||
357 | bool | 357 | bool |
358 | QMakeProject::read(QString file, QMap<QString, QStringList> &place) | 358 | QMakeProject::read(QString file, QMap<QString, QStringList> &place) |
359 | { | 359 | { |
360 | parser_info pi = parser; | 360 | parser_info pi = parser; |
361 | /* scope blocks start at true */ | 361 | /* scope blocks start at true */ |
362 | test_status = TestNone; | 362 | test_status = TestNone; |
363 | scope_flag = 0x01; | 363 | scope_flag = 0x01; |
364 | scope_block = 0; | 364 | scope_block = 0; |
365 | 365 | ||
366 | file = Option::fixPathToLocalOS(file); | 366 | file = Option::fixPathToLocalOS(file); |
367 | doVariableReplace(file, place); | 367 | doVariableReplace(file, place); |
368 | bool ret = FALSE, using_stdin = FALSE; | 368 | bool ret = FALSE, using_stdin = FALSE; |
369 | QFile qfile; | 369 | QFile qfile; |
370 | if(!strcmp(file, "-")) { | 370 | if(!strcmp(file, "-")) { |
371 | qfile.setName(""); | 371 | qfile.setName(""); |
372 | ret = qfile.open(IO_ReadOnly, stdin); | 372 | ret = qfile.open(IO_ReadOnly, stdin); |
373 | using_stdin = TRUE; | 373 | using_stdin = TRUE; |
374 | } else { | 374 | } else { |
375 | qfile.setName(file); | 375 | qfile.setName(file); |
376 | ret = qfile.open(IO_ReadOnly); | 376 | ret = qfile.open(IO_ReadOnly); |
377 | } | 377 | } |
378 | if ( ret ) { | 378 | if ( ret ) { |
379 | QTextStream t( &qfile ); | 379 | QTextStream t( &qfile ); |
380 | QString s, line; | 380 | QString s, line; |
381 | parser.file = file; | 381 | parser.file = file; |
382 | parser.line_no = 0; | 382 | parser.line_no = 0; |
383 | while ( !t.eof() ) { | 383 | while ( !t.eof() ) { |
384 | parser.line_no++; | 384 | parser.line_no++; |
385 | line = t.readLine().stripWhiteSpace(); | 385 | line = t.readLine().stripWhiteSpace(); |
386 | int prelen = line.length(); | 386 | int prelen = line.length(); |
387 | line.replace(QRegExp("#.*$"), ""); // bye comments | 387 | line.replace(QRegExp("#.*$"), ""); // bye comments |
388 | if(!line.isEmpty() && line.right(1) == "\\") { | 388 | if(!line.isEmpty() && line.right(1) == "\\") { |
389 | line.truncate(line.length() - 1); | 389 | line.truncate(line.length() - 1); |
390 | s += line + " "; | 390 | s += line + " "; |
391 | } else if(!line.isEmpty() || (line.isEmpty() && !prelen)) { | 391 | } else if(!line.isEmpty() || (line.isEmpty() && !prelen)) { |
392 | if(s.isEmpty() && line.isEmpty()) | 392 | if(s.isEmpty() && line.isEmpty()) |
393 | continue; | 393 | continue; |
394 | if(!line.isEmpty()) | 394 | if(!line.isEmpty()) |
395 | s += line; | 395 | s += line; |
396 | if(!s.isEmpty()) { | 396 | if(!s.isEmpty()) { |
397 | if(!(ret = parse(s, place))) | 397 | if(!(ret = parse(s, place))) |
398 | break; | 398 | break; |
399 | s = ""; | 399 | s = ""; |
400 | } | 400 | } |
401 | } | 401 | } |
402 | } | 402 | } |
403 | if(!using_stdin) | 403 | if(!using_stdin) |
404 | qfile.close(); | 404 | qfile.close(); |
405 | } | 405 | } |
406 | parser = pi; | 406 | parser = pi; |
407 | return ret; | 407 | return ret; |
408 | } | 408 | } |
409 | 409 | ||
410 | bool | 410 | bool |
411 | QMakeProject::read(QString project, QString) | 411 | QMakeProject::read(QString project, QString) |
412 | { | 412 | { |
413 | if(cfile.isEmpty()) { | 413 | if(cfile.isEmpty()) { |
414 | // hack to get the Option stuff in there | 414 | // hack to get the Option stuff in there |
415 | base_vars["QMAKE_EXT_CPP"] = Option::cpp_ext; | 415 | base_vars["QMAKE_EXT_CPP"] = Option::cpp_ext; |
416 | base_vars["QMAKE_EXT_H"] = Option::h_ext; | 416 | base_vars["QMAKE_EXT_H"] = Option::h_ext; |
417 | 417 | ||
418 | /* parse the cache */ | 418 | /* parse the cache */ |
419 | if(Option::mkfile::do_cache) { | 419 | if(Option::mkfile::do_cache) { |
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 | /* prefer QMAKESPECSDIR -cl */ | 444 | /* prefer QMAKESPECSDIR -cl */ |
445 | 445 | ||
446 | if (getenv("QTDIR")) { | 446 | if (getenv("QTDIR")) { |
447 | mkspec_roots << getenv("QTDIR"); | 447 | mkspec_roots << getenv("QTDIR"); |
448 | } | 448 | } |
449 | mkspec_roots << qInstallPathData(); | 449 | mkspec_roots << qInstallPathData(); |
450 | 450 | ||
451 | if (getenv("QMAKESPECSDIR")){ | 451 | if (Option::mkfile::qmakespec.isEmpty() && getenv("QMAKESPECSDIR")){ |
452 | QString mkspec = QString(getenv("QMAKESPECSDIR")) + QDir::separator() + | 452 | QString mkspec = QString(getenv("QMAKESPECSDIR")) + QDir::separator() + |
453 | QDir::separator() + "default"; | 453 | QDir::separator() + "default"; |
454 | if(QFile::exists(mkspec)) | 454 | if(QFile::exists(mkspec)) |
455 | Option::mkfile::qmakespec = mkspec; | 455 | Option::mkfile::qmakespec = mkspec; |
456 | } | 456 | } |
457 | 457 | ||
458 | if(Option::mkfile::qmakespec.isEmpty()) { | 458 | if(Option::mkfile::qmakespec.isEmpty()) { |
459 | 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) { |
460 | QString mkspec = (*it) + QDir::separator() + QString("mkspecs") + | 460 | QString mkspec = (*it) + QDir::separator() + QString("mkspecs") + |
461 | QDir::separator() + "default"; | 461 | QDir::separator() + "default"; |
462 | if(QFile::exists(mkspec)) { | 462 | if(QFile::exists(mkspec)) { |
463 | Option::mkfile::qmakespec = mkspec; | 463 | Option::mkfile::qmakespec = mkspec; |
464 | break; | 464 | break; |
465 | } | 465 | } |
466 | } | 466 | } |
467 | } | 467 | } |
468 | 468 | ||
469 | if(Option::mkfile::qmakespec.isEmpty()) { | 469 | if(Option::mkfile::qmakespec.isEmpty()) { |
470 | fprintf(stderr, "QMAKESPEC has not been set, so configuration cannot be deduced.\n"); | 470 | fprintf(stderr, "QMAKESPEC has not been set, so configuration cannot be deduced.\n"); |
471 | return FALSE; | 471 | return FALSE; |
472 | } | 472 | } |
473 | 473 | ||
474 | if(QDir::isRelativePath(Option::mkfile::qmakespec)) { | 474 | if(QDir::isRelativePath(Option::mkfile::qmakespec)) { |
475 | bool found_mkspec = FALSE; | 475 | bool found_mkspec = FALSE; |
476 | 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) { |
477 | QString mkspec = (*it) + QDir::separator() + QString("mkspecs") + | 477 | QString mkspec = (*it) + QDir::separator() + QString("mkspecs") + |
478 | QDir::separator() + Option::mkfile::qmakespec; | 478 | QDir::separator() + Option::mkfile::qmakespec; |
479 | if(QFile::exists(mkspec)) { | 479 | if(QFile::exists(mkspec)) { |
480 | found_mkspec = TRUE; | 480 | found_mkspec = TRUE; |
481 | Option::mkfile::qmakespec = mkspec; | 481 | Option::mkfile::qmakespec = mkspec; |
482 | break; | 482 | break; |
483 | } | 483 | } |
484 | } | 484 | } |
485 | if(!found_mkspec) { | 485 | if(!found_mkspec) { |
486 | 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", |
487 | mkspec_roots.join("\n\t").latin1()); | 487 | mkspec_roots.join("\n\t").latin1()); |
488 | return FALSE; | 488 | return FALSE; |
489 | } | 489 | } |
490 | } | 490 | } |
491 | 491 | ||
492 | /* parse qmake configuration */ | 492 | /* parse qmake configuration */ |
493 | QString spec = Option::mkfile::qmakespec + QDir::separator() + "qmake.conf"; | 493 | QString spec = Option::mkfile::qmakespec + QDir::separator() + "qmake.conf"; |
494 | debug_msg(1, "QMAKESPEC conf: reading %s", spec.latin1()); | 494 | debug_msg(1, "QMAKESPEC conf: reading %s", spec.latin1()); |
495 | if(!read(spec, base_vars)) { | 495 | if(!read(spec, base_vars)) { |
496 | fprintf(stderr, "Failure to read QMAKESPEC conf file %s.\n", spec.latin1()); | 496 | fprintf(stderr, "Failure to read QMAKESPEC conf file %s.\n", spec.latin1()); |
497 | return FALSE; | 497 | return FALSE; |
498 | } | 498 | } |
499 | if(Option::mkfile::do_cache && !Option::mkfile::cachefile.isEmpty()) { | 499 | if(Option::mkfile::do_cache && !Option::mkfile::cachefile.isEmpty()) { |
500 | debug_msg(1, "QMAKECACHE file: reading %s", Option::mkfile::cachefile.latin1()); | 500 | debug_msg(1, "QMAKECACHE file: reading %s", Option::mkfile::cachefile.latin1()); |
501 | read(Option::mkfile::cachefile, base_vars); | 501 | read(Option::mkfile::cachefile, base_vars); |
502 | } | 502 | } |
503 | 503 | ||
504 | /* commandline */ | 504 | /* commandline */ |
505 | cfile = project; | 505 | cfile = project; |
506 | parser.line_no = 1; //really arg count now.. duh | 506 | parser.line_no = 1; //really arg count now.. duh |
507 | parser.file = "(internal)"; | 507 | parser.file = "(internal)"; |
508 | for(QStringList::Iterator it = Option::before_user_vars.begin(); | 508 | for(QStringList::Iterator it = Option::before_user_vars.begin(); |
509 | it != Option::before_user_vars.end(); ++it) { | 509 | it != Option::before_user_vars.end(); ++it) { |
510 | if(!parse((*it), base_vars)) { | 510 | if(!parse((*it), base_vars)) { |
511 | fprintf(stderr, "Argument failed to parse: %s\n", (*it).latin1()); | 511 | fprintf(stderr, "Argument failed to parse: %s\n", (*it).latin1()); |
512 | return FALSE; | 512 | return FALSE; |
513 | } | 513 | } |
514 | parser.line_no++; | 514 | parser.line_no++; |
515 | } | 515 | } |
516 | } | 516 | } |
517 | 517 | ||
518 | /* parse project file */ | 518 | /* parse project file */ |
519 | debug_msg(1, "Project file: reading %s", project.latin1()); | 519 | debug_msg(1, "Project file: reading %s", project.latin1()); |
520 | vars = base_vars; /* start with the base */ | 520 | vars = base_vars; /* start with the base */ |
521 | 521 | ||
522 | pfile = project; | 522 | pfile = project; |
523 | if(pfile != "-" && !QFile::exists(pfile) && pfile.right(4) != ".pro") | 523 | if(pfile != "-" && !QFile::exists(pfile) && pfile.right(4) != ".pro") |
524 | pfile += ".pro"; | 524 | pfile += ".pro"; |
525 | 525 | ||
526 | if(!read(pfile, vars)) | 526 | if(!read(pfile, vars)) |
527 | return FALSE; | 527 | return FALSE; |
528 | 528 | ||
529 | parser.line_no = 1; //really arg count now.. duh | 529 | parser.line_no = 1; //really arg count now.. duh |
530 | parser.file = "(internal)"; | 530 | parser.file = "(internal)"; |
531 | for(QStringList::Iterator it = Option::after_user_vars.begin(); | 531 | for(QStringList::Iterator it = Option::after_user_vars.begin(); |
532 | it != Option::after_user_vars.end(); ++it) { | 532 | it != Option::after_user_vars.end(); ++it) { |
533 | if(!parse((*it), vars)) { | 533 | if(!parse((*it), vars)) { |
534 | fprintf(stderr, "Argument failed to parse: %s\n", (*it).latin1()); | 534 | fprintf(stderr, "Argument failed to parse: %s\n", (*it).latin1()); |
535 | return FALSE; | 535 | return FALSE; |
536 | } | 536 | } |
537 | parser.line_no++; | 537 | parser.line_no++; |
538 | } | 538 | } |
539 | 539 | ||
540 | /* now let the user override the template from an option.. */ | 540 | /* now let the user override the template from an option.. */ |
541 | if(!Option::user_template.isEmpty()) { | 541 | if(!Option::user_template.isEmpty()) { |
542 | debug_msg(1, "Overriding TEMPLATE (%s) with: %s", vars["TEMPLATE"].first().latin1(), Option::user_template.latin1()); | 542 | debug_msg(1, "Overriding TEMPLATE (%s) with: %s", vars["TEMPLATE"].first().latin1(), Option::user_template.latin1()); |
543 | vars["TEMPLATE"].clear(); | 543 | vars["TEMPLATE"].clear(); |
544 | vars["TEMPLATE"].append(Option::user_template); | 544 | vars["TEMPLATE"].append(Option::user_template); |
545 | } | 545 | } |
546 | 546 | ||
547 | if(vars["TEMPLATE"].isEmpty()) | 547 | if(vars["TEMPLATE"].isEmpty()) |