Diffstat (limited to 'qmake/generators/win32/msvc_objectmodel.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 243 |
1 files changed, 140 insertions, 103 deletions
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index c2b9e30..7ffe4f7 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp | |||
@@ -245,45 +245,45 @@ const char* _VCLinkerToolName = "\n\t\t\t\tName=\"VCLinkerTool\""; | |||
245 | const char* _VCResourceCompilerToolName = "\n\t\t\t\tName=\"VCResourceCompilerTool\""; | 245 | const char* _VCResourceCompilerToolName = "\n\t\t\t\tName=\"VCResourceCompilerTool\""; |
246 | const char* _VCMIDLToolName = "\n\t\t\t\tName=\"VCMIDLTool\""; | 246 | const char* _VCMIDLToolName = "\n\t\t\t\tName=\"VCMIDLTool\""; |
247 | const char* _Version1 = "\n\tVersion=\""; | 247 | const char* _Version1 = "\n\tVersion=\""; |
248 | const char* _Version4 = "\n\t\t\t\tVersion=\""; | 248 | const char* _Version4 = "\n\t\t\t\tVersion=\""; |
249 | const char* _WarnAsError = "\n\t\t\t\tWarnAsError=\""; | 249 | const char* _WarnAsError = "\n\t\t\t\tWarnAsError=\""; |
250 | const char* _WarnLevel = "\n\t\t\t\tWarnLevel=\""; | 250 | const char* _WarnLevel = "\n\t\t\t\tWarnLevel=\""; |
251 | const char* _WarningLevel = "\n\t\t\t\tWarningLevel=\""; | 251 | const char* _WarningLevel = "\n\t\t\t\tWarningLevel=\""; |
252 | const char* _WholeProgramOptimization = "\n\t\t\t\tWholeProgramOptimization=\""; | 252 | const char* _WholeProgramOptimization = "\n\t\t\t\tWholeProgramOptimization=\""; |
253 | 253 | ||
254 | // Property name and value as Pairs --------------------------------- | 254 | // Property name and value as Pairs --------------------------------- |
255 | struct TPair { | 255 | struct TPair { |
256 | TPair( const char* n, const triState v ) : name(n), value(v) {}; | 256 | TPair( const char* n, const triState v ) : name(n), value(v) {}; |
257 | const char* name; | 257 | const char* name; |
258 | const triState value; | 258 | const triState value; |
259 | }; | 259 | }; |
260 | struct EPair { | 260 | struct EPair { |
261 | EPair( const char* n, const int v ) : name(n), value(v) {}; | 261 | EPair( const char* n, const int v ) : name(n), value(v) {}; |
262 | const char* name; | 262 | const char* name; |
263 | const int value; | 263 | const int value; |
264 | }; | 264 | }; |
265 | struct LPair { | 265 | struct LPair { |
266 | LPair( const char* n, const long v ) : name(n), value(v) {}; | 266 | LPair( const char* n, const long v ) : name(n), value(v) {}; |
267 | const char* name; | 267 | const char* name; |
268 | const long value; | 268 | const long value; |
269 | }; | 269 | }; |
270 | struct SPair { | 270 | struct SPair { |
271 | SPair( const char* n, const QString& v ) : name(n), value(v) {}; | 271 | SPair( const char* n, const QString& v ) : name(n), value(v) {}; |
272 | const char* name; | 272 | const char* name; |
273 | const QString& value; | 273 | const QString& value; |
274 | }; | 274 | }; |
275 | struct XPair { | 275 | struct XPair { |
276 | XPair( const char* n, const QStringList& v, const char* s = "," ) : name(n), value(v), sep(s) {}; | 276 | XPair( const char* n, const QStringList& v, const char* s = "," ) : name(n), value(v), sep(s) {}; |
277 | const char* name; | 277 | const char* name; |
278 | const QStringList& value; | 278 | const QStringList& value; |
279 | const char* sep; | 279 | const char* sep; |
280 | }; | 280 | }; |
281 | 281 | ||
282 | // void streamSPair( QTextStream &strm, const char *n, const QString &s ) | 282 | // void streamSPair( QTextStream &strm, const char *n, const QString &s ) |
283 | 283 | ||
284 | 284 | ||
285 | // Streaming operators for property Pairs --------------------------- | 285 | // Streaming operators for property Pairs --------------------------- |
286 | QTextStream &operator<<( QTextStream &strm, const TPair &prop ) | 286 | QTextStream &operator<<( QTextStream &strm, const TPair &prop ) |
287 | { | 287 | { |
288 | switch( prop.value ) { | 288 | switch( prop.value ) { |
289 | case _False: | 289 | case _False: |
@@ -374,25 +374,25 @@ VCCLCompilerTool::VCCLCompilerTool() | |||
374 | UsePrecompiledHeader( pchGenerateAuto ), | 374 | UsePrecompiledHeader( pchGenerateAuto ), |
375 | WarnAsError( unset ), | 375 | WarnAsError( unset ), |
376 | WarningLevel( warningLevel_0 ), | 376 | WarningLevel( warningLevel_0 ), |
377 | WholeProgramOptimization( unset ) | 377 | WholeProgramOptimization( unset ) |
378 | { | 378 | { |
379 | } | 379 | } |
380 | 380 | ||
381 | QTextStream &operator<<( QTextStream &strm, const VCCLCompilerTool &tool ) | 381 | QTextStream &operator<<( QTextStream &strm, const VCCLCompilerTool &tool ) |
382 | { | 382 | { |
383 | strm << _begTool3; | 383 | strm << _begTool3; |
384 | strm << _VCCLCompilerToolName; | 384 | strm << _VCCLCompilerToolName; |
385 | strm << XPair( _AdditionalIncludeDirectories, tool.AdditionalIncludeDirectories ); | 385 | strm << XPair( _AdditionalIncludeDirectories, tool.AdditionalIncludeDirectories ); |
386 | strm << XPair( _AdditionalOptions, tool.AdditionalOptions ); | 386 | strm << XPair( _AdditionalOptions, tool.AdditionalOptions, " " ); |
387 | strm << XPair( _AdditionalUsingDirectories, tool.AdditionalUsingDirectories ); | 387 | strm << XPair( _AdditionalUsingDirectories, tool.AdditionalUsingDirectories ); |
388 | strm << SPair( _AssemblerListingLocation, tool.AssemblerListingLocation ); | 388 | strm << SPair( _AssemblerListingLocation, tool.AssemblerListingLocation ); |
389 | if ( tool.AssemblerOutput != asmListingNone ) strm << EPair( _AssemblerOutput, tool.AssemblerOutput ); | 389 | if ( tool.AssemblerOutput != asmListingNone ) strm << EPair( _AssemblerOutput, tool.AssemblerOutput ); |
390 | if ( tool.BasicRuntimeChecks != runtimeBasicCheckNone ) strm << EPair( _BasicRuntimeChecks, tool.BasicRuntimeChecks ); | 390 | if ( tool.BasicRuntimeChecks != runtimeBasicCheckNone ) strm << EPair( _BasicRuntimeChecks, tool.BasicRuntimeChecks ); |
391 | if ( tool.BrowseInformation != brInfoNone ) strm << EPair( _BrowseInformation, tool.BrowseInformation ); | 391 | if ( tool.BrowseInformation != brInfoNone ) strm << EPair( _BrowseInformation, tool.BrowseInformation ); |
392 | strm << SPair( _BrowseInformationFile, tool.BrowseInformationFile ); | 392 | strm << SPair( _BrowseInformationFile, tool.BrowseInformationFile ); |
393 | strm << TPair( _BufferSecurityCheck, tool.BufferSecurityCheck ); | 393 | strm << TPair( _BufferSecurityCheck, tool.BufferSecurityCheck ); |
394 | if ( tool.CallingConvention != callConventionDefault ) strm << EPair( _CallingConvention, tool.CallingConvention ); | 394 | if ( tool.CallingConvention != callConventionDefault ) strm << EPair( _CallingConvention, tool.CallingConvention ); |
395 | if ( tool.CompileAs != compileAsDefault ) strm << EPair( _CompileAs, tool.CompileAs ); | 395 | if ( tool.CompileAs != compileAsDefault ) strm << EPair( _CompileAs, tool.CompileAs ); |
396 | if ( tool.CompileAsManaged != managedDefault ) strm << EPair( _CompileAsManaged, tool.CompileAsManaged ); | 396 | if ( tool.CompileAsManaged != managedDefault ) strm << EPair( _CompileAsManaged, tool.CompileAsManaged ); |
397 | strm << TPair( _CompileOnly, tool.CompileOnly ); | 397 | strm << TPair( _CompileOnly, tool.CompileOnly ); |
398 | strm << EPair( _DebugInformationFormat, tool.DebugInformationFormat ); | 398 | strm << EPair( _DebugInformationFormat, tool.DebugInformationFormat ); |
@@ -433,70 +433,74 @@ QTextStream &operator<<( QTextStream &strm, const VCCLCompilerTool &tool ) | |||
433 | strm << TPair( _StringPooling, tool.StringPooling ); | 433 | strm << TPair( _StringPooling, tool.StringPooling ); |
434 | if ( tool.StructMemberAlignment != alignNotSet ) strm << EPair( _StructMemberAlignment, tool.StructMemberAlignment ); | 434 | if ( tool.StructMemberAlignment != alignNotSet ) strm << EPair( _StructMemberAlignment, tool.StructMemberAlignment ); |
435 | strm << TPair( _SuppressStartupBanner, tool.SuppressStartupBanner ); | 435 | strm << TPair( _SuppressStartupBanner, tool.SuppressStartupBanner ); |
436 | strm << TPair( _TreatWChar_tAsBuiltInType, tool.TreatWChar_tAsBuiltInType ); | 436 | strm << TPair( _TreatWChar_tAsBuiltInType, tool.TreatWChar_tAsBuiltInType ); |
437 | strm << TPair( _TurnOffAssemblyGeneration, tool.TurnOffAssemblyGeneration ); | 437 | strm << TPair( _TurnOffAssemblyGeneration, tool.TurnOffAssemblyGeneration ); |
438 | strm << TPair( _UndefineAllPreprocessorDefinitions, tool.UndefineAllPreprocessorDefinitions ); | 438 | strm << TPair( _UndefineAllPreprocessorDefinitions, tool.UndefineAllPreprocessorDefinitions ); |
439 | strm << XPair( _UndefinePreprocessorDefinitions, tool.UndefinePreprocessorDefinitions ); | 439 | strm << XPair( _UndefinePreprocessorDefinitions, tool.UndefinePreprocessorDefinitions ); |
440 | if ( !tool.PrecompiledHeaderFile.isEmpty() || | 440 | if ( !tool.PrecompiledHeaderFile.isEmpty() || |
441 | !tool.PrecompiledHeaderThrough.isEmpty() ) | 441 | !tool.PrecompiledHeaderThrough.isEmpty() ) |
442 | strm << EPair( _UsePrecompiledHeader, tool.UsePrecompiledHeader ); | 442 | strm << EPair( _UsePrecompiledHeader, tool.UsePrecompiledHeader ); |
443 | strm << TPair( _WarnAsError, tool.WarnAsError ); | 443 | strm << TPair( _WarnAsError, tool.WarnAsError ); |
444 | strm << EPair( _WarningLevel, tool.WarningLevel ); | 444 | strm << EPair( _WarningLevel, tool.WarningLevel ); |
445 | strm << TPair( _WholeProgramOptimization, tool.WholeProgramOptimization ); | 445 | strm << TPair( _WholeProgramOptimization, tool.WholeProgramOptimization ); |
446 | strm << "/>"; | 446 | strm << "/>"; |
447 | return strm; | 447 | return strm; |
448 | } | 448 | } |
449 | 449 | ||
450 | bool VCCLCompilerTool::parseOption( const char* option ) | 450 | bool VCCLCompilerTool::parseOption( const char* option ) |
451 | { | 451 | { |
452 | // skip index 0 ('/' or '-') | 452 | // skip index 0 ('/' or '-') |
453 | char first = option[1]; | 453 | char first = option[1]; |
454 | char second = option[2]; | 454 | char second = option[2]; |
455 | char third = option[3]; | 455 | char third = option[3]; |
456 | char fourth = option[4]; | 456 | char fourth = option[4]; |
457 | bool found = TRUE; | ||
457 | 458 | ||
458 | switch ( first ) { | 459 | switch ( first ) { |
459 | case '?': | 460 | case '?': |
460 | case 'h': | 461 | case 'h': |
461 | qWarning( "Generator: Option '/?', '/help': MSVC.NET projects do not support outputting help info" ); | 462 | qWarning( "Generator: Option '/?', '/help': MSVC.NET projects do not support outputting help info" ); |
462 | return FALSE; | 463 | found = FALSE; |
464 | break; | ||
463 | case '@': | 465 | case '@': |
464 | qWarning( "Generator: Option '/@': MSVC.NET projects do not support the use of a response file" ); | 466 | qWarning( "Generator: Option '/@': MSVC.NET projects do not support the use of a response file" ); |
465 | return FALSE; | 467 | found = FALSE; |
468 | break; | ||
466 | case 'l': | 469 | case 'l': |
467 | qWarning( "Generator: Option '/link': qmake generator does not support passing link options through the compiler tool" ); | 470 | qWarning( "Generator: Option '/link': qmake generator does not support passing link options through the compiler tool" ); |
468 | return FALSE; | 471 | found = FALSE; |
469 | 472 | break; | |
470 | case 'A': | 473 | case 'A': |
471 | if ( second != 'I' ) | 474 | if ( second != 'I' ) { |
472 | return FALSE; | 475 | found = FALSE; break; |
476 | } | ||
473 | AdditionalUsingDirectories += option+2; | 477 | AdditionalUsingDirectories += option+2; |
474 | break; | 478 | break; |
475 | case 'C': | 479 | case 'C': |
476 | KeepComments = _True; | 480 | KeepComments = _True; |
477 | break; | 481 | break; |
478 | case 'D': | 482 | case 'D': |
479 | PreprocessorDefinitions += option+1; | 483 | PreprocessorDefinitions += option+1; |
480 | break; | 484 | break; |
481 | case 'E': | 485 | case 'E': |
482 | if ( second == 'H' ) { | 486 | if ( second == 'H' ) { |
483 | if ( third == 'a' || third == 'c' || third == 's' ) { | 487 | if ( third == 'a' || third == 'c' || third == 's' ) { |
484 | // ExceptionHandling must be false, or it will override | 488 | // ExceptionHandling must be false, or it will override |
485 | // with an /EHsc option | 489 | // with an /EHsc option |
486 | ExceptionHandling = _False; | 490 | ExceptionHandling = _False; |
487 | AdditionalOptions += option; | 491 | AdditionalOptions += option; |
488 | break; | 492 | break; |
489 | } | 493 | } |
490 | return FALSE; | 494 | found = FALSE; break; |
491 | } | 495 | } |
492 | GeneratePreprocessedFile = preprocessYes; | 496 | GeneratePreprocessedFile = preprocessYes; |
493 | break; | 497 | break; |
494 | case 'F': | 498 | case 'F': |
495 | if ( second <= '9' && second >= '0' ) { | 499 | if ( second <= '9' && second >= '0' ) { |
496 | AdditionalOptions += option; | 500 | AdditionalOptions += option; |
497 | break; | 501 | break; |
498 | } else { | 502 | } else { |
499 | switch ( second ) { | 503 | switch ( second ) { |
500 | case 'A': | 504 | case 'A': |
501 | if ( third == 'c' ) { | 505 | if ( third == 'c' ) { |
502 | AssemblerOutput = asmListingAsmMachine; | 506 | AssemblerOutput = asmListingAsmMachine; |
@@ -535,34 +539,34 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
535 | AdditionalOptions += option; | 539 | AdditionalOptions += option; |
536 | break; | 540 | break; |
537 | case 'o': | 541 | case 'o': |
538 | ObjectFile = option+3; | 542 | ObjectFile = option+3; |
539 | break; | 543 | break; |
540 | case 'p': | 544 | case 'p': |
541 | PrecompiledHeaderFile = option+3; | 545 | PrecompiledHeaderFile = option+3; |
542 | break; | 546 | break; |
543 | case 'x': | 547 | case 'x': |
544 | ExpandAttributedSource = _True; | 548 | ExpandAttributedSource = _True; |
545 | break; | 549 | break; |
546 | default: | 550 | default: |
547 | return FALSE; | 551 | found = FALSE; break; |
548 | } | 552 | } |
549 | } | 553 | } |
550 | break; | 554 | break; |
551 | case 'G': | 555 | case 'G': |
552 | switch ( second ) { | 556 | switch ( second ) { |
553 | case '3': | 557 | case '3': |
554 | case '4': | 558 | case '4': |
555 | qWarning( "Option '/G3' and '/G4' were phased out in Visual C++ 5.0" ); | 559 | qWarning( "Option '/G3' and '/G4' were phased out in Visual C++ 5.0" ); |
556 | return FALSE; | 560 | found = FALSE; break; |
557 | case '5': | 561 | case '5': |
558 | OptimizeForProcessor = procOptimizePentium; | 562 | OptimizeForProcessor = procOptimizePentium; |
559 | break; | 563 | break; |
560 | case '6': | 564 | case '6': |
561 | case 'B': | 565 | case 'B': |
562 | OptimizeForProcessor = procOptimizePentiumProAndAbove; | 566 | OptimizeForProcessor = procOptimizePentiumProAndAbove; |
563 | break; | 567 | break; |
564 | case 'A': | 568 | case 'A': |
565 | OptimizeForWindowsApplication = _True; | 569 | OptimizeForWindowsApplication = _True; |
566 | break; | 570 | break; |
567 | case 'F': | 571 | case 'F': |
568 | StringPooling = _True; | 572 | StringPooling = _True; |
@@ -610,77 +614,77 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
610 | case 's': | 614 | case 's': |
611 | // Warning: following [num] is not used, | 615 | // Warning: following [num] is not used, |
612 | // were should we put it? | 616 | // were should we put it? |
613 | BufferSecurityCheck = _True; | 617 | BufferSecurityCheck = _True; |
614 | break; | 618 | break; |
615 | case 'y': | 619 | case 'y': |
616 | EnableFunctionLevelLinking = _True; | 620 | EnableFunctionLevelLinking = _True; |
617 | break; | 621 | break; |
618 | case 'z': | 622 | case 'z': |
619 | CallingConvention = callConventionStdCall; | 623 | CallingConvention = callConventionStdCall; |
620 | break; | 624 | break; |
621 | default: | 625 | default: |
622 | return FALSE; | 626 | found = FALSE; break; |
623 | } | 627 | } |
624 | break; | 628 | break; |
625 | case 'H': | 629 | case 'H': |
626 | AdditionalOptions += option; | 630 | AdditionalOptions += option; |
627 | break; | 631 | break; |
628 | case 'I': | 632 | case 'I': |
629 | AdditionalIncludeDirectories += option+2; | 633 | AdditionalIncludeDirectories += option+2; |
630 | break; | 634 | break; |
631 | case 'L': | 635 | case 'L': |
632 | if ( second == 'D' ) { | 636 | if ( second == 'D' ) { |
633 | AdditionalOptions += option; | 637 | AdditionalOptions += option; |
634 | break; | 638 | break; |
635 | } | 639 | } |
636 | return FALSE; | 640 | found = FALSE; break; |
637 | case 'M': | 641 | case 'M': |
638 | if ( second == 'D' ) { | 642 | if ( second == 'D' ) { |
639 | RuntimeLibrary = rtMultiThreadedDLL; | 643 | RuntimeLibrary = rtMultiThreadedDLL; |
640 | if ( third == 'd' ) | 644 | if ( third == 'd' ) |
641 | RuntimeLibrary = rtMultiThreadedDebugDLL; | 645 | RuntimeLibrary = rtMultiThreadedDebugDLL; |
642 | break; | 646 | break; |
643 | } else if ( second == 'L' ) { | 647 | } else if ( second == 'L' ) { |
644 | RuntimeLibrary = rtSingleThreaded; | 648 | RuntimeLibrary = rtSingleThreaded; |
645 | if ( third == 'd' ) | 649 | if ( third == 'd' ) |
646 | RuntimeLibrary = rtSingleThreadedDebug; | 650 | RuntimeLibrary = rtSingleThreadedDebug; |
647 | break; | 651 | break; |
648 | } else if ( second == 'T' ) { | 652 | } else if ( second == 'T' ) { |
649 | RuntimeLibrary = rtMultiThreaded; | 653 | RuntimeLibrary = rtMultiThreaded; |
650 | if ( third == 'd' ) | 654 | if ( third == 'd' ) |
651 | RuntimeLibrary = rtMultiThreadedDebug; | 655 | RuntimeLibrary = rtMultiThreadedDebug; |
652 | break; | 656 | break; |
653 | } | 657 | } |
654 | return FALSE; | 658 | found = FALSE; break; |
655 | case 'O': | 659 | case 'O': |
656 | switch ( second ) { | 660 | switch ( second ) { |
657 | case '1': | 661 | case '1': |
658 | Optimization = optimizeMinSpace; | 662 | Optimization = optimizeMinSpace; |
659 | break; | 663 | break; |
660 | case '2': | 664 | case '2': |
661 | Optimization = optimizeMaxSpeed; | 665 | Optimization = optimizeMaxSpeed; |
662 | break; | 666 | break; |
663 | case 'a': | 667 | case 'a': |
664 | AdditionalOptions += option; | 668 | AdditionalOptions += option; |
665 | break; | 669 | break; |
666 | case 'b': | 670 | case 'b': |
667 | if ( third == '0' ) | 671 | if ( third == '0' ) |
668 | InlineFunctionExpansion = expandDisable; | 672 | InlineFunctionExpansion = expandDisable; |
669 | else if ( third == '1' ) | 673 | else if ( third == '1' ) |
670 | InlineFunctionExpansion = expandOnlyInline; | 674 | InlineFunctionExpansion = expandOnlyInline; |
671 | else if ( third == '2' ) | 675 | else if ( third == '2' ) |
672 | InlineFunctionExpansion = expandAnySuitable; | 676 | InlineFunctionExpansion = expandAnySuitable; |
673 | else | 677 | else |
674 | return FALSE; | 678 | found = FALSE; |
675 | break; | 679 | break; |
676 | case 'd': | 680 | case 'd': |
677 | Optimization = optimizeDisabled; | 681 | Optimization = optimizeDisabled; |
678 | break; | 682 | break; |
679 | case 'g': | 683 | case 'g': |
680 | GlobalOptimizations = _True; | 684 | GlobalOptimizations = _True; |
681 | break; | 685 | break; |
682 | case 'i': | 686 | case 'i': |
683 | EnableIntrinsicFunctions = _True; | 687 | EnableIntrinsicFunctions = _True; |
684 | break; | 688 | break; |
685 | case 'p': | 689 | case 'p': |
686 | ImproveFloatingPointConsistency = _True; | 690 | ImproveFloatingPointConsistency = _True; |
@@ -696,58 +700,58 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
696 | case 'w': | 700 | case 'w': |
697 | AdditionalOptions += option; | 701 | AdditionalOptions += option; |
698 | break; | 702 | break; |
699 | case 'x': | 703 | case 'x': |
700 | Optimization = optimizeFull; | 704 | Optimization = optimizeFull; |
701 | break; | 705 | break; |
702 | case 'y': | 706 | case 'y': |
703 | OmitFramePointers = _True; | 707 | OmitFramePointers = _True; |
704 | if ( third == '-' ) | 708 | if ( third == '-' ) |
705 | OmitFramePointers = _False; | 709 | OmitFramePointers = _False; |
706 | break; | 710 | break; |
707 | default: | 711 | default: |
708 | return FALSE; | 712 | found = FALSE; break; |
709 | } | 713 | } |
710 | break; | 714 | break; |
711 | case 'P': | 715 | case 'P': |
712 | GeneratePreprocessedFile = preprocessYes; | 716 | GeneratePreprocessedFile = preprocessYes; |
713 | break; | 717 | break; |
714 | case 'Q': | 718 | case 'Q': |
715 | if ( second == 'I' ) { | 719 | if ( second == 'I' ) { |
716 | AdditionalOptions += option; | 720 | AdditionalOptions += option; |
717 | break; | 721 | break; |
718 | } | 722 | } |
719 | return FALSE; | 723 | found = FALSE; break; |
720 | case 'R': | 724 | case 'R': |
721 | if ( second == 'T' && third == 'C' ) { | 725 | if ( second == 'T' && third == 'C' ) { |
722 | if ( fourth == '1' ) | 726 | if ( fourth == '1' ) |
723 | BasicRuntimeChecks = runtimeBasicCheckAll; | 727 | BasicRuntimeChecks = runtimeBasicCheckAll; |
724 | else if ( fourth == 'c' ) | 728 | else if ( fourth == 'c' ) |
725 | SmallerTypeCheck = _True; | 729 | SmallerTypeCheck = _True; |
726 | else if ( fourth == 's' ) | 730 | else if ( fourth == 's' ) |
727 | BasicRuntimeChecks = runtimeCheckStackFrame; | 731 | BasicRuntimeChecks = runtimeCheckStackFrame; |
728 | else if ( fourth == 'u' ) | 732 | else if ( fourth == 'u' ) |
729 | BasicRuntimeChecks = runtimeCheckUninitVariables; | 733 | BasicRuntimeChecks = runtimeCheckUninitVariables; |
730 | else | 734 | else |
731 | return FALSE; | 735 | found = FALSE; break; |
732 | } | 736 | } |
733 | break; | 737 | break; |
734 | case 'T': | 738 | case 'T': |
735 | if ( second == 'C' ) { | 739 | if ( second == 'C' ) { |
736 | CompileAs = compileAsC; | 740 | CompileAs = compileAsC; |
737 | } else if ( second == 'P' ) { | 741 | } else if ( second == 'P' ) { |
738 | CompileAs = compileAsCPlusPlus; | 742 | CompileAs = compileAsCPlusPlus; |
739 | } else { | 743 | } else { |
740 | qWarning( "Generator: Options '/Tp<filename>' and '/Tc<filename>' are not supported by qmake" ); | 744 | qWarning( "Generator: Options '/Tp<filename>' and '/Tc<filename>' are not supported by qmake" ); |
741 | return FALSE; | 745 | found = FALSE; break; |
742 | } | 746 | } |
743 | break; | 747 | break; |
744 | case 'U': | 748 | case 'U': |
745 | UndefinePreprocessorDefinitions += option+2; | 749 | UndefinePreprocessorDefinitions += option+2; |
746 | break; | 750 | break; |
747 | case 'V': | 751 | case 'V': |
748 | AdditionalOptions += option; | 752 | AdditionalOptions += option; |
749 | break; | 753 | break; |
750 | case 'W': | 754 | case 'W': |
751 | switch ( second ) { | 755 | switch ( second ) { |
752 | case 'a': | 756 | case 'a': |
753 | case '4': | 757 | case '4': |
@@ -769,25 +773,25 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
769 | AdditionalOptions += option; | 773 | AdditionalOptions += option; |
770 | break; | 774 | break; |
771 | case 'X': | 775 | case 'X': |
772 | WarnAsError = _True; | 776 | WarnAsError = _True; |
773 | break; | 777 | break; |
774 | case 'p': | 778 | case 'p': |
775 | if ( third == '6' && fourth == '4' ) { | 779 | if ( third == '6' && fourth == '4' ) { |
776 | Detect64BitPortabilityProblems = _True; | 780 | Detect64BitPortabilityProblems = _True; |
777 | break; | 781 | break; |
778 | } | 782 | } |
779 | // Fallthrough | 783 | // Fallthrough |
780 | default: | 784 | default: |
781 | return FALSE; | 785 | found = FALSE; break; |
782 | } | 786 | } |
783 | break; | 787 | break; |
784 | case 'X': | 788 | case 'X': |
785 | IgnoreStandardIncludePath = _True; | 789 | IgnoreStandardIncludePath = _True; |
786 | break; | 790 | break; |
787 | case 'Y': | 791 | case 'Y': |
788 | switch ( second ) { | 792 | switch ( second ) { |
789 | case '\0': | 793 | case '\0': |
790 | case '-': | 794 | case '-': |
791 | AdditionalOptions += option; | 795 | AdditionalOptions += option; |
792 | break; | 796 | break; |
793 | case 'X': | 797 | case 'X': |
@@ -798,25 +802,25 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
798 | UsePrecompiledHeader = pchCreateUsingSpecific; | 802 | UsePrecompiledHeader = pchCreateUsingSpecific; |
799 | PrecompiledHeaderFile = option+3; | 803 | PrecompiledHeaderFile = option+3; |
800 | break; | 804 | break; |
801 | case 'd': | 805 | case 'd': |
802 | case 'l': | 806 | case 'l': |
803 | AdditionalOptions =+ option; | 807 | AdditionalOptions =+ option; |
804 | break; | 808 | break; |
805 | case 'u': | 809 | case 'u': |
806 | UsePrecompiledHeader = pchUseUsingSpecific; | 810 | UsePrecompiledHeader = pchUseUsingSpecific; |
807 | PrecompiledHeaderFile = option+3; | 811 | PrecompiledHeaderFile = option+3; |
808 | break; | 812 | break; |
809 | default: | 813 | default: |
810 | return FALSE; | 814 | found = FALSE; break; |
811 | } | 815 | } |
812 | break; | 816 | break; |
813 | case 'Z': | 817 | case 'Z': |
814 | switch ( second ) { | 818 | switch ( second ) { |
815 | case '7': | 819 | case '7': |
816 | DebugInformationFormat = debugOldStyleInfo; | 820 | DebugInformationFormat = debugOldStyleInfo; |
817 | break; | 821 | break; |
818 | case 'I': | 822 | case 'I': |
819 | DebugInformationFormat = debugEditAndContinue; | 823 | DebugInformationFormat = debugEditAndContinue; |
820 | break; | 824 | break; |
821 | case 'd': | 825 | case 'd': |
822 | DebugInformationFormat = debugLineInfoOnly; | 826 | DebugInformationFormat = debugLineInfoOnly; |
@@ -831,27 +835,27 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
831 | DisableLanguageExtensions = _True; | 835 | DisableLanguageExtensions = _True; |
832 | break; | 836 | break; |
833 | case 'e': | 837 | case 'e': |
834 | DisableLanguageExtensions = _False; | 838 | DisableLanguageExtensions = _False; |
835 | break; | 839 | break; |
836 | case 'c': | 840 | case 'c': |
837 | if ( third == ':' ) { | 841 | if ( third == ':' ) { |
838 | if ( fourth == 'f' ) | 842 | if ( fourth == 'f' ) |
839 | ForceConformanceInForLoopScope = _True; | 843 | ForceConformanceInForLoopScope = _True; |
840 | else if ( fourth == 'w' ) | 844 | else if ( fourth == 'w' ) |
841 | TreatWChar_tAsBuiltInType = _True; | 845 | TreatWChar_tAsBuiltInType = _True; |
842 | else | 846 | else |
843 | return FALSE; | 847 | found = FALSE; |
844 | } else { | 848 | } else { |
845 | return FALSE; | 849 | found = FALSE; break; |
846 | } | 850 | } |
847 | break; | 851 | break; |
848 | case 'g': | 852 | case 'g': |
849 | case 'm': | 853 | case 'm': |
850 | case 's': | 854 | case 's': |
851 | AdditionalOptions += option; | 855 | AdditionalOptions += option; |
852 | break; | 856 | break; |
853 | case 'p': | 857 | case 'p': |
854 | switch ( third ) | 858 | switch ( third ) |
855 | { | 859 | { |
856 | case '\0': | 860 | case '\0': |
857 | case '1': | 861 | case '1': |
@@ -860,90 +864,93 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
860 | StructMemberAlignment = alignSixteenBytes; | 864 | StructMemberAlignment = alignSixteenBytes; |
861 | break; | 865 | break; |
862 | case '2': | 866 | case '2': |
863 | StructMemberAlignment = alignTwoBytes; | 867 | StructMemberAlignment = alignTwoBytes; |
864 | break; | 868 | break; |
865 | case '4': | 869 | case '4': |
866 | StructMemberAlignment = alignFourBytes; | 870 | StructMemberAlignment = alignFourBytes; |
867 | break; | 871 | break; |
868 | case '8': | 872 | case '8': |
869 | StructMemberAlignment = alignEightBytes; | 873 | StructMemberAlignment = alignEightBytes; |
870 | break; | 874 | break; |
871 | default: | 875 | default: |
872 | return FALSE; | 876 | found = FALSE; break; |
873 | } | 877 | } |
874 | break; | 878 | break; |
875 | default: | 879 | default: |
876 | return FALSE; | 880 | found = FALSE; break; |
877 | } | 881 | } |
878 | break; | 882 | break; |
879 | case 'c': | 883 | case 'c': |
880 | if ( second == '\0' ) { | 884 | if ( second == '\0' ) { |
881 | CompileOnly = _True; | 885 | CompileOnly = _True; |
882 | } else if ( second == 'l' ) { | 886 | } else if ( second == 'l' ) { |
883 | if ( *(option+5) == 'n' ) { | 887 | if ( *(option+5) == 'n' ) { |
884 | CompileAsManaged = managedAssembly; | 888 | CompileAsManaged = managedAssembly; |
885 | TurnOffAssemblyGeneration = _True; | 889 | TurnOffAssemblyGeneration = _True; |
886 | } else { | 890 | } else { |
887 | CompileAsManaged = managedAssembly; | 891 | CompileAsManaged = managedAssembly; |
888 | } | 892 | } |
889 | } else { | 893 | } else { |
890 | return FALSE; | 894 | found = FALSE; break; |
891 | } | 895 | } |
892 | break; | 896 | break; |
893 | case 'd': | 897 | case 'd': |
894 | if ( second != 'r' ) | 898 | if ( second != 'r' ) { |
895 | return FALSE; | 899 | found = FALSE; break; |
900 | } | ||
896 | CompileAsManaged = managedAssembly; | 901 | CompileAsManaged = managedAssembly; |
897 | break; | 902 | break; |
898 | case 'n': | 903 | case 'n': |
899 | if ( second == 'o' && third == 'B' && fourth == 'o' ) { | 904 | if ( second == 'o' && third == 'B' && fourth == 'o' ) { |
900 | AdditionalOptions += "/noBool"; | 905 | AdditionalOptions += "/noBool"; |
901 | break; | 906 | break; |
902 | } | 907 | } |
903 | if ( second == 'o' && third == 'l' && fourth == 'o' ) { | 908 | if ( second == 'o' && third == 'l' && fourth == 'o' ) { |
904 | SuppressStartupBanner = _True; | 909 | SuppressStartupBanner = _True; |
905 | break; | 910 | break; |
906 | } | 911 | } |
907 | return FALSE; | 912 | found = FALSE; break; |
908 | case 's': | 913 | case 's': |
909 | if ( second == 'h' && third == 'o' && fourth == 'w' ) { | 914 | if ( second == 'h' && third == 'o' && fourth == 'w' ) { |
910 | ShowIncludes = _True; | 915 | ShowIncludes = _True; |
911 | break; | 916 | break; |
912 | } | 917 | } |
913 | return FALSE; | 918 | found = FALSE; break; |
914 | case 'u': | 919 | case 'u': |
915 | UndefineAllPreprocessorDefinitions = _True; | 920 | UndefineAllPreprocessorDefinitions = _True; |
916 | break; | 921 | break; |
917 | case 'v': | 922 | case 'v': |
918 | if ( second == 'd' || second == 'm' ) { | 923 | if ( second == 'd' || second == 'm' ) { |
919 | AdditionalOptions += option; | 924 | AdditionalOptions += option; |
920 | break; | 925 | break; |
921 | } | 926 | } |
922 | return FALSE; | 927 | found = FALSE; break; |
923 | case 'w': | 928 | case 'w': |
924 | switch ( second ) { | 929 | switch ( second ) { |
925 | case '\0': | 930 | case '\0': |
926 | WarningLevel = warningLevel_0; | 931 | WarningLevel = warningLevel_0; |
927 | break; | 932 | break; |
928 | case 'd': | 933 | case 'd': |
929 | DisableSpecificWarnings += option+3; | 934 | DisableSpecificWarnings += option+3; |
930 | break; | 935 | break; |
931 | default: | 936 | default: |
932 | AdditionalOptions += option; | 937 | AdditionalOptions += option; |
933 | } | 938 | } |
934 | break; | 939 | break; |
935 | default: | 940 | default: |
936 | return FALSE; | 941 | found = FALSE; break; |
937 | } | 942 | } |
943 | if( !found ) | ||
944 | warn_msg( WarnLogic, "Could not parse Compiler option: %s", option ); | ||
938 | return TRUE; | 945 | return TRUE; |
939 | } | 946 | } |
940 | 947 | ||
941 | // VCLinkerTool ----------------------------------------------------- | 948 | // VCLinkerTool ----------------------------------------------------- |
942 | VCLinkerTool::VCLinkerTool() | 949 | VCLinkerTool::VCLinkerTool() |
943 | :EnableCOMDATFolding( optFoldingDefault ), | 950 | :EnableCOMDATFolding( optFoldingDefault ), |
944 | GenerateDebugInformation( unset ), | 951 | GenerateDebugInformation( unset ), |
945 | GenerateMapFile( unset ), | 952 | GenerateMapFile( unset ), |
946 | HeapCommitSize( -1 ), | 953 | HeapCommitSize( -1 ), |
947 | HeapReserveSize( -1 ), | 954 | HeapReserveSize( -1 ), |
948 | IgnoreAllDefaultLibraries( unset ), | 955 | IgnoreAllDefaultLibraries( unset ), |
949 | IgnoreEmbeddedIDL( unset ), | 956 | IgnoreEmbeddedIDL( unset ), |
@@ -971,25 +978,25 @@ VCLinkerTool::VCLinkerTool() | |||
971 | TerminalServerAware( termSvrAwareDefault ), | 978 | TerminalServerAware( termSvrAwareDefault ), |
972 | TurnOffAssemblyGeneration( unset ), | 979 | TurnOffAssemblyGeneration( unset ), |
973 | TypeLibraryResourceID( 0 ) | 980 | TypeLibraryResourceID( 0 ) |
974 | { | 981 | { |
975 | } | 982 | } |
976 | 983 | ||
977 | QTextStream &operator<<( QTextStream &strm, const VCLinkerTool &tool ) | 984 | QTextStream &operator<<( QTextStream &strm, const VCLinkerTool &tool ) |
978 | { | 985 | { |
979 | strm << _begTool3; | 986 | strm << _begTool3; |
980 | strm << _VCLinkerToolName; | 987 | strm << _VCLinkerToolName; |
981 | strm << XPair( _AdditionalDependencies4, tool.AdditionalDependencies, " " ); | 988 | strm << XPair( _AdditionalDependencies4, tool.AdditionalDependencies, " " ); |
982 | strm << XPair( _AdditionalLibraryDirectories, tool.AdditionalLibraryDirectories ); | 989 | strm << XPair( _AdditionalLibraryDirectories, tool.AdditionalLibraryDirectories ); |
983 | strm << XPair( _AdditionalOptions, tool.AdditionalOptions ); | 990 | strm << XPair( _AdditionalOptions, tool.AdditionalOptions, " " ); |
984 | strm << XPair( _AddModuleNamesToAssembly, tool.AddModuleNamesToAssembly ); | 991 | strm << XPair( _AddModuleNamesToAssembly, tool.AddModuleNamesToAssembly ); |
985 | strm << SPair( _BaseAddress, tool.BaseAddress ); | 992 | strm << SPair( _BaseAddress, tool.BaseAddress ); |
986 | strm << XPair( _DelayLoadDLLs, tool.DelayLoadDLLs ); | 993 | strm << XPair( _DelayLoadDLLs, tool.DelayLoadDLLs ); |
987 | if ( tool.EnableCOMDATFolding != optFoldingDefault ) strm << EPair( _EnableCOMDATFolding, tool.EnableCOMDATFolding ); | 994 | if ( tool.EnableCOMDATFolding != optFoldingDefault ) strm << EPair( _EnableCOMDATFolding, tool.EnableCOMDATFolding ); |
988 | strm << SPair( _EntryPointSymbol, tool.EntryPointSymbol ); | 995 | strm << SPair( _EntryPointSymbol, tool.EntryPointSymbol ); |
989 | strm << XPair( _ForceSymbolReferences, tool.ForceSymbolReferences ); | 996 | strm << XPair( _ForceSymbolReferences, tool.ForceSymbolReferences ); |
990 | strm << SPair( _FunctionOrder, tool.FunctionOrder ); | 997 | strm << SPair( _FunctionOrder, tool.FunctionOrder ); |
991 | strm << TPair( _GenerateDebugInformation, tool.GenerateDebugInformation ); | 998 | strm << TPair( _GenerateDebugInformation, tool.GenerateDebugInformation ); |
992 | strm << TPair( _GenerateMapFile, tool.GenerateMapFile ); | 999 | strm << TPair( _GenerateMapFile, tool.GenerateMapFile ); |
993 | if ( tool.HeapCommitSize != -1 ) strm << LPair( _HeapCommitSize, tool.HeapCommitSize ); | 1000 | if ( tool.HeapCommitSize != -1 ) strm << LPair( _HeapCommitSize, tool.HeapCommitSize ); |
994 | if ( tool.HeapReserveSize != -1 ) strm << LPair( _HeapReserveSize, tool.HeapReserveSize ); | 1001 | if ( tool.HeapReserveSize != -1 ) strm << LPair( _HeapReserveSize, tool.HeapReserveSize ); |
995 | strm << TPair( _IgnoreAllDefaultLibraries, tool.IgnoreAllDefaultLibraries ); | 1002 | strm << TPair( _IgnoreAllDefaultLibraries, tool.IgnoreAllDefaultLibraries ); |
@@ -1037,77 +1044,81 @@ QTextStream &operator<<( QTextStream &strm, const VCLinkerTool &tool ) | |||
1037 | 1044 | ||
1038 | // Hashing routine to do fast option lookups ---- | 1045 | // Hashing routine to do fast option lookups ---- |
1039 | // Slightly rewritten to stop on ':' ',' and '\0' | 1046 | // Slightly rewritten to stop on ':' ',' and '\0' |
1040 | // Original routine in qtranslator.cpp ---------- | 1047 | // Original routine in qtranslator.cpp ---------- |
1041 | static uint elfHash( const char* name ) | 1048 | static uint elfHash( const char* name ) |
1042 | { | 1049 | { |
1043 | const uchar *k; | 1050 | const uchar *k; |
1044 | uint h = 0; | 1051 | uint h = 0; |
1045 | uint g; | 1052 | uint g; |
1046 | 1053 | ||
1047 | if ( name ) { | 1054 | if ( name ) { |
1048 | k = (const uchar *) name; | 1055 | k = (const uchar *) name; |
1049 | while ( (*k) && | 1056 | while ( (*k) && |
1050 | (*k)!= ':' && | 1057 | (*k)!= ':' && |
1051 | (*k)!=',' && | 1058 | (*k)!=',' && |
1052 | (*k)!=' ' ) { | 1059 | (*k)!=' ' ) { |
1053 | h = ( h << 4 ) + *k++; | 1060 | h = ( h << 4 ) + *k++; |
1054 | if ( (g = (h & 0xf0000000)) != 0 ) | 1061 | if ( (g = (h & 0xf0000000)) != 0 ) |
1055 | h ^= g >> 24; | 1062 | h ^= g >> 24; |
1056 | h &= ~g; | 1063 | h &= ~g; |
1057 | } | 1064 | } |
1058 | } | 1065 | } |
1059 | if ( !h ) | 1066 | if ( !h ) |
1060 | h = 1; | 1067 | h = 1; |
1061 | return h; | 1068 | return h; |
1062 | } | 1069 | } |
1070 | |||
1071 | //#define USE_DISPLAY_HASH | ||
1072 | #ifdef USE_DISPLAY_HASH | ||
1063 | static void displayHash( const char* str ) | 1073 | static void displayHash( const char* str ) |
1064 | { | 1074 | { |
1065 | printf( "case 0x%07x: // %s\n break;\n", elfHash(str), str ); | 1075 | printf( "case 0x%07x: // %s\n break;\n", elfHash(str), str ); |
1066 | } | 1076 | } |
1077 | #endif | ||
1067 | 1078 | ||
1068 | bool VCLinkerTool::parseOption( const char* option ) | 1079 | bool VCLinkerTool::parseOption( const char* option ) |
1069 | { | 1080 | { |
1070 | #if 0 | 1081 | #ifdef USE_DISPLAY_HASH |
1071 | // Main options | 1082 | // Main options |
1072 | displayHash( "/ALIGN" ); displayHash( "/ALLOWBIND" ); displayHash( "/ASSEMBLYMODULE" ); | 1083 | displayHash( "/ALIGN" ); displayHash( "/ALLOWBIND" ); displayHash( "/ASSEMBLYMODULE" ); |
1073 | displayHash( "/ASSEMBLYRESOURCE" ); displayHash( "/BASE" ); displayHash( "/DEBUG" ); | 1084 | displayHash( "/ASSEMBLYRESOURCE" ); displayHash( "/BASE" ); displayHash( "/DEBUG" ); |
1074 | displayHash( "/DEF" ); displayHash( "/DEFAULTLIB" ); displayHash( "/DELAY" ); | 1085 | displayHash( "/DEF" ); displayHash( "/DEFAULTLIB" ); displayHash( "/DELAY" ); |
1075 | displayHash( "/DELAYLOAD" ); displayHash( "/DLL" ); displayHash( "/DRIVER" ); | 1086 | displayHash( "/DELAYLOAD" ); displayHash( "/DLL" ); displayHash( "/DRIVER" ); |
1076 | displayHash( "/ENTRY" ); displayHash( "/EXETYPE" ); displayHash( "/EXPORT" ); | 1087 | displayHash( "/ENTRY" ); displayHash( "/EXETYPE" ); displayHash( "/EXPORT" ); |
1077 | displayHash( "/FIXED" ); displayHash( "/FORCE" ); displayHash( "/HEAP" ); | 1088 | displayHash( "/FIXED" ); displayHash( "/FORCE" ); displayHash( "/HEAP" ); |
1078 | displayHash( "/IDLOUT" ); displayHash( "/IGNOREIDL" ); displayHash( "/IMPLIB" ); | 1089 | displayHash( "/IDLOUT" ); displayHash( "/IGNOREIDL" ); displayHash( "/IMPLIB" ); |
1079 | displayHash( "/INCLUDE" ); displayHash( "/INCREMENTAL" ); displayHash( "/LARGEADDRESSAWARE" ); | 1090 | displayHash( "/INCLUDE" ); displayHash( "/INCREMENTAL" ); displayHash( "/LARGEADDRESSAWARE" ); |
1080 | displayHash( "/LIBPATH" ); displayHash( "/LTCG" ); displayHash( "/MACHINE" ); | 1091 | displayHash( "/LIBPATH" ); displayHash( "/LTCG" ); displayHash( "/MACHINE" ); |
1081 | displayHash( "/MAP" ); displayHash( "/MAPINFO" ); displayHash( "/MERGE" ); | 1092 | displayHash( "/MAP" ); displayHash( "/MAPINFO" ); displayHash( "/MERGE" ); |
1082 | displayHash( "/MIDL" ); displayHash( "/NOASSEMBLY" ); displayHash( "/NODEFAULTLIB" ); | 1093 | displayHash( "/MIDL" ); displayHash( "/NOASSEMBLY" ); displayHash( "/NODEFAULTLIB" ); |
1083 | displayHash( "/NOENTRY" ); displayHash( "/NOLOGO" ); displayHash( "/OPT" ); | 1094 | displayHash( "/NOENTRY" ); displayHash( "/NOLOGO" ); displayHash( "/OPT" ); |
1084 | displayHash( "/ORDER" ); displayHash( "/OUT" ); displayHash( "/PDB" ); | 1095 | displayHash( "/ORDER" ); displayHash( "/OUT" ); displayHash( "/PDB" ); |
1085 | displayHash( "/PDBSTRIPPED" ); displayHash( "/RELEASE" ); displayHash( "/SECTION" ); | 1096 | displayHash( "/PDBSTRIPPED" ); displayHash( "/RELEASE" ); displayHash( "/SECTION" ); |
1086 | displayHash( "/STACK" ); displayHash( "/STUB" ); displayHash( "/SUBSYSTEM" ); | 1097 | displayHash( "/STACK" ); displayHash( "/STUB" ); displayHash( "/SUBSYSTEM" ); |
1087 | displayHash( "/SWAPRUN" ); displayHash( "/TLBID" ); displayHash( "/TLBOUT" ); | 1098 | displayHash( "/SWAPRUN" ); displayHash( "/TLBID" ); displayHash( "/TLBOUT" ); |
1088 | displayHash( "/TSAWARE" ); displayHash( "/VERBOSE" ); displayHash( "/VERSION" ); | 1099 | displayHash( "/TSAWARE" ); displayHash( "/VERBOSE" ); displayHash( "/VERSION" ); |
1089 | displayHash( "/VXD" ); displayHash( "/WS " ); | 1100 | displayHash( "/VXD" ); displayHash( "/WS " ); |
1090 | #endif | 1101 | #endif |
1091 | #if 0 | 1102 | #ifdef USE_DISPLAY_HASH |
1092 | // Sub options | 1103 | // Sub options |
1093 | displayHash( "UNLOAD" ); displayHash( "NOBIND" ); displayHash( "no" ); displayHash( "NOSTATUS" ); displayHash( "STATUS" ); | 1104 | displayHash( "UNLOAD" ); displayHash( "NOBIND" ); displayHash( "no" ); displayHash( "NOSTATUS" ); displayHash( "STATUS" ); |
1094 | displayHash( "AM33" ); displayHash( "ARM" ); displayHash( "CEE" ); displayHash( "IA64" ); displayHash( "X86" ); displayHash( "M32R" ); | 1105 | displayHash( "AM33" ); displayHash( "ARM" ); displayHash( "CEE" ); displayHash( "IA64" ); displayHash( "X86" ); displayHash( "M32R" ); |
1095 | displayHash( "MIPS" ); displayHash( "MIPS16" ); displayHash( "MIPSFPU" ); displayHash( "MIPSFPU16" ); displayHash( "MIPSR41XX" ); displayHash( "PPC" ); | 1106 | displayHash( "MIPS" ); displayHash( "MIPS16" ); displayHash( "MIPSFPU" ); displayHash( "MIPSFPU16" ); displayHash( "MIPSR41XX" ); displayHash( "PPC" ); |
1096 | displayHash( "SH3" ); displayHash( "SH4" ); displayHash( "SH5" ); displayHash( "THUMB" ); displayHash( "TRICORE" ); displayHash( "EXPORTS" ); | 1107 | displayHash( "SH3" ); displayHash( "SH4" ); displayHash( "SH5" ); displayHash( "THUMB" ); displayHash( "TRICORE" ); displayHash( "EXPORTS" ); |
1097 | displayHash( "LINES" ); displayHash( "REF" ); displayHash( "NOREF" ); displayHash( "ICF" ); displayHash( "WIN98" ); displayHash( "NOWIN98" ); | 1108 | displayHash( "LINES" ); displayHash( "REF" ); displayHash( "NOREF" ); displayHash( "ICF" ); displayHash( "WIN98" ); displayHash( "NOWIN98" ); |
1098 | displayHash( "CONSOLE" ); displayHash( "EFI_APPLICATION" ); displayHash( "EFI_BOOT_SERVICE_DRIVER" ); displayHash( "EFI_ROM" ); displayHash( "EFI_RUNTIME_DRIVER" ); displayHash( "NATIVE" ); | 1109 | displayHash( "CONSOLE" ); displayHash( "EFI_APPLICATION" ); displayHash( "EFI_BOOT_SERVICE_DRIVER" ); displayHash( "EFI_ROM" ); displayHash( "EFI_RUNTIME_DRIVER" ); displayHash( "NATIVE" ); |
1099 | displayHash( "POSIX" ); displayHash( "WINDOWS" ); displayHash( "WINDOWSCE" ); displayHash( "NET" ); displayHash( "CD" ); displayHash( "NO" ); | 1110 | displayHash( "POSIX" ); displayHash( "WINDOWS" ); displayHash( "WINDOWSCE" ); displayHash( "NET" ); displayHash( "CD" ); displayHash( "NO" ); |
1100 | #endif | 1111 | #endif |
1101 | 1112 | bool found = TRUE; | |
1102 | switch ( elfHash(option) ) { | 1113 | switch ( elfHash(option) ) { |
1103 | case 0x3360dbe: // /ALIGN[:number] | 1114 | case 0x3360dbe: // /ALIGN[:number] |
1104 | case 0x1485c34: // /ALLOWBIND[:NO] | 1115 | case 0x1485c34: // /ALLOWBIND[:NO] |
1105 | case 0x6b21972: // /DEFAULTLIB:library | 1116 | case 0x6b21972: // /DEFAULTLIB:library |
1106 | case 0x396ea92: // /DRIVER[:UPONLY | :WDM] | 1117 | case 0x396ea92: // /DRIVER[:UPONLY | :WDM] |
1107 | case 0xaca9d75: // /EXETYPE[:DYNAMIC | :DEV386] | 1118 | case 0xaca9d75: // /EXETYPE[:DYNAMIC | :DEV386] |
1108 | case 0x3ad5444: // /EXPORT:entryname[,@ordinal[,NONAME]][,DATA] | 1119 | case 0x3ad5444: // /EXPORT:entryname[,@ordinal[,NONAME]][,DATA] |
1109 | case 0x33aec94: // /FIXED[:NO] | 1120 | case 0x33aec94: // /FIXED[:NO] |
1110 | case 0x33b4675: // /FORCE:[MULTIPLE|UNRESOLVED] | 1121 | case 0x33b4675: // /FORCE:[MULTIPLE|UNRESOLVED] |
1111 | case 0x7988f7e: // /SECTION:name,[E][R][W][S][D][K][L][P][X][,ALIGN=#] | 1122 | case 0x7988f7e: // /SECTION:name,[E][R][W][S][D][K][L][P][X][,ALIGN=#] |
1112 | case 0x0348992: // /STUB:filename | 1123 | case 0x0348992: // /STUB:filename |
1113 | case 0x0034bc4: // /VXD | 1124 | case 0x0034bc4: // /VXD |
@@ -1132,25 +1143,25 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
1132 | case 0x0033896: // /DEF:filename | 1143 | case 0x0033896: // /DEF:filename |
1133 | ModuleDefinitionFile = option+5; | 1144 | ModuleDefinitionFile = option+5; |
1134 | break; | 1145 | break; |
1135 | case 0x338a069: // /DELAY:{UNLOAD | NOBIND} | 1146 | case 0x338a069: // /DELAY:{UNLOAD | NOBIND} |
1136 | // MS documentation does not specify what to do with | 1147 | // MS documentation does not specify what to do with |
1137 | // this option, so we'll put it in AdditionalOptions | 1148 | // this option, so we'll put it in AdditionalOptions |
1138 | AdditionalOptions += option; | 1149 | AdditionalOptions += option; |
1139 | break; | 1150 | break; |
1140 | case 0x06f4bf4: // /DELAYLOAD:dllname | 1151 | case 0x06f4bf4: // /DELAYLOAD:dllname |
1141 | DelayLoadDLLs += option+11; | 1152 | DelayLoadDLLs += option+11; |
1142 | break; | 1153 | break; |
1143 | // case 0x003390c: // /DLL | 1154 | // case 0x003390c: // /DLL |
1144 | // This option is not used for vcproj files | 1155 | // This option is not used for vcproj files |
1145 | //break; | 1156 | //break; |
1146 | case 0x33a3979: // /ENTRY:function | 1157 | case 0x33a3979: // /ENTRY:function |
1147 | EntryPointSymbol = option+7; | 1158 | EntryPointSymbol = option+7; |
1148 | break; | 1159 | break; |
1149 | case 0x033c960: // /HEAP:reserve[,commit] | 1160 | case 0x033c960: // /HEAP:reserve[,commit] |
1150 | { | 1161 | { |
1151 | QStringList both = QStringList::split( ",", option+6 ); | 1162 | QStringList both = QStringList::split( ",", option+6 ); |
1152 | HeapReserveSize = both[0].toLong(); | 1163 | HeapReserveSize = both[0].toLong(); |
1153 | if ( both.count() == 2 ) | 1164 | if ( both.count() == 2 ) |
1154 | HeapCommitSize = both[1].toLong(); | 1165 | HeapCommitSize = both[1].toLong(); |
1155 | } | 1166 | } |
1156 | break; | 1167 | break; |
@@ -1183,49 +1194,49 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
1183 | case 0x0d745c8: // /LIBPATH:dir | 1194 | case 0x0d745c8: // /LIBPATH:dir |
1184 | AdditionalLibraryDirectories += option+9; | 1195 | AdditionalLibraryDirectories += option+9; |
1185 | break; | 1196 | break; |
1186 | case 0x0341877: // /LTCG[:NOSTATUS|:STATUS] | 1197 | case 0x0341877: // /LTCG[:NOSTATUS|:STATUS] |
1187 | config->WholeProgramOptimization = _True; | 1198 | config->WholeProgramOptimization = _True; |
1188 | LinkTimeCodeGeneration = _True; | 1199 | LinkTimeCodeGeneration = _True; |
1189 | if ( *(option+5) == ':' && | 1200 | if ( *(option+5) == ':' && |
1190 | *(option+6) == 'S' ) | 1201 | *(option+6) == 'S' ) |
1191 | ShowProgress = linkProgressAll; | 1202 | ShowProgress = linkProgressAll; |
1192 | break; | 1203 | break; |
1193 | case 0x157cf65: // /MACHINE:{AM33|ARM|CEE|IA64|X86|M32R|MIPS|MIPS16|MIPSFPU|MIPSFPU16|MIPSR41XX|PPC|SH3|SH4|SH5|THUMB|TRICORE} | 1204 | case 0x157cf65: // /MACHINE:{AM33|ARM|CEE|IA64|X86|M32R|MIPS|MIPS16|MIPSFPU|MIPSFPU16|MIPSR41XX|PPC|SH3|SH4|SH5|THUMB|TRICORE} |
1194 | switch ( elfHash(option+9) ) { | 1205 | switch ( elfHash(option+9) ) { |
1195 | // Very limited documentation on all options but X86, | 1206 | // Very limited documentation on all options but X86, |
1196 | // so we put the others in AdditionalOptions... | 1207 | // so we put the others in AdditionalOptions... |
1197 | case 0x0046063: // AM33 | 1208 | case 0x0046063: // AM33 |
1198 | case 0x000466d: // ARM | 1209 | case 0x000466d: // ARM |
1199 | case 0x0004795: // CEE | 1210 | case 0x0004795: // CEE |
1200 | case 0x004d494: // IA64 | 1211 | case 0x004d494: // IA64 |
1201 | case 0x0050672: // M32R | 1212 | case 0x0050672: // M32R |
1202 | case 0x0051e53: // MIPS | 1213 | case 0x0051e53: // MIPS |
1203 | case 0x51e5646: // MIPS16 | 1214 | case 0x51e5646: // MIPS16 |
1204 | case 0x1e57b05: // MIPSFPU | 1215 | case 0x1e57b05: // MIPSFPU |
1205 | case 0x57b09a6: // MIPSFPU16 | 1216 | case 0x57b09a6: // MIPSFPU16 |
1206 | case 0x5852738: // MIPSR41XX | 1217 | case 0x5852738: // MIPSR41XX |
1207 | case 0x0005543: // PPC | 1218 | case 0x0005543: // PPC |
1208 | case 0x00057b3: // SH3 | 1219 | case 0x00057b3: // SH3 |
1209 | case 0x00057b4: // SH4 | 1220 | case 0x00057b4: // SH4 |
1210 | case 0x00057b5: // SH5 | 1221 | case 0x00057b5: // SH5 |
1211 | case 0x058da12: // THUMB | 1222 | case 0x058da12: // THUMB |
1212 | case 0x96d8435: // TRICORE | 1223 | case 0x96d8435: // TRICORE |
1213 | AdditionalOptions += option; | 1224 | AdditionalOptions += option; |
1214 | break; | 1225 | break; |
1215 | case 0x0005bb6: // X86 | 1226 | case 0x0005bb6: // X86 |
1216 | TargetMachine = machineX86; | 1227 | TargetMachine = machineX86; |
1217 | break; | 1228 | break; |
1218 | default: | 1229 | default: |
1219 | return FALSE; | 1230 | found = FALSE; |
1220 | } | 1231 | } |
1221 | break; | 1232 | break; |
1222 | case 0x0034160: // /MAP[:filename] | 1233 | case 0x0034160: // /MAP[:filename] |
1223 | GenerateMapFile = _True; | 1234 | GenerateMapFile = _True; |
1224 | MapFileName = option+5; | 1235 | MapFileName = option+5; |
1225 | break; | 1236 | break; |
1226 | case 0x164e1ef: // /MAPINFO:{EXPORTS|LINES} | 1237 | case 0x164e1ef: // /MAPINFO:{EXPORTS|LINES} |
1227 | if ( *(option+9) == 'E' ) | 1238 | if ( *(option+9) == 'E' ) |
1228 | MapExports = _True; | 1239 | MapExports = _True; |
1229 | else if ( *(option+9) == 'L' ) | 1240 | else if ( *(option+9) == 'L' ) |
1230 | MapLines = _True; | 1241 | MapLines = _True; |
1231 | break; | 1242 | break; |
@@ -1266,25 +1277,25 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
1266 | OptimizeReferences = optNoReferences; | 1277 | OptimizeReferences = optNoReferences; |
1267 | break; | 1278 | break; |
1268 | case 'I': // NOICF | 1279 | case 'I': // NOICF |
1269 | EnableCOMDATFolding = optNoFolding; | 1280 | EnableCOMDATFolding = optNoFolding; |
1270 | break; | 1281 | break; |
1271 | case 'N': // WIN98 | 1282 | case 'N': // WIN98 |
1272 | OptimizeForWindows98 = optWin98Yes; | 1283 | OptimizeForWindows98 = optWin98Yes; |
1273 | break; | 1284 | break; |
1274 | case 'W': // NOWIN98 | 1285 | case 'W': // NOWIN98 |
1275 | OptimizeForWindows98 = optWin98No; | 1286 | OptimizeForWindows98 = optWin98No; |
1276 | break; | 1287 | break; |
1277 | default: | 1288 | default: |
1278 | return FALSE; | 1289 | found = FALSE; |
1279 | } | 1290 | } |
1280 | } | 1291 | } |
1281 | break; | 1292 | break; |
1282 | case 0x34468a2: // /ORDER:@filename | 1293 | case 0x34468a2: // /ORDER:@filename |
1283 | FunctionOrder = option+8; | 1294 | FunctionOrder = option+8; |
1284 | break; | 1295 | break; |
1285 | case 0x00344a4: // /OUT:filename | 1296 | case 0x00344a4: // /OUT:filename |
1286 | OutputFile = option+5; | 1297 | OutputFile = option+5; |
1287 | break; | 1298 | break; |
1288 | case 0x0034482: // /PDB:filename | 1299 | case 0x0034482: // /PDB:filename |
1289 | ProgramDatabaseFile = option+5; | 1300 | ProgramDatabaseFile = option+5; |
1290 | break; | 1301 | break; |
@@ -1315,35 +1326,35 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
1315 | break; | 1326 | break; |
1316 | // The following are undocumented, so add them to AdditionalOptions | 1327 | // The following are undocumented, so add them to AdditionalOptions |
1317 | case 0x240949e: // EFI_APPLICATION | 1328 | case 0x240949e: // EFI_APPLICATION |
1318 | case 0xe617652: // EFI_BOOT_SERVICE_DRIVER | 1329 | case 0xe617652: // EFI_BOOT_SERVICE_DRIVER |
1319 | case 0x9af477d: // EFI_ROM | 1330 | case 0x9af477d: // EFI_ROM |
1320 | case 0xd34df42: // EFI_RUNTIME_DRIVER | 1331 | case 0xd34df42: // EFI_RUNTIME_DRIVER |
1321 | case 0x5268ea5: // NATIVE | 1332 | case 0x5268ea5: // NATIVE |
1322 | case 0x05547e8: // POSIX | 1333 | case 0x05547e8: // POSIX |
1323 | case 0x2949c95: // WINDOWSCE | 1334 | case 0x2949c95: // WINDOWSCE |
1324 | AdditionalOptions += option; | 1335 | AdditionalOptions += option; |
1325 | break; | 1336 | break; |
1326 | default: | 1337 | default: |
1327 | return FALSE; | 1338 | found = FALSE; |
1328 | } | 1339 | } |
1329 | } | 1340 | } |
1330 | break; | 1341 | break; |
1331 | case 0x8b654de: // /SWAPRUN:{NET | CD} | 1342 | case 0x8b654de: // /SWAPRUN:{NET | CD} |
1332 | if ( *(option+9) == 'N' ) | 1343 | if ( *(option+9) == 'N' ) |
1333 | SwapRunFromNet = _True; | 1344 | SwapRunFromNet = _True; |
1334 | else if ( *(option+9) == 'C' ) | 1345 | else if ( *(option+9) == 'C' ) |
1335 | SwapRunFromCD = _True; | 1346 | SwapRunFromCD = _True; |
1336 | else | 1347 | else |
1337 | return FALSE; | 1348 | found = FALSE; |
1338 | break; | 1349 | break; |
1339 | case 0x34906d4: // /TLBID:id | 1350 | case 0x34906d4: // /TLBID:id |
1340 | TypeLibraryResourceID = QString( option+7 ).toLong(); | 1351 | TypeLibraryResourceID = QString( option+7 ).toLong(); |
1341 | break; | 1352 | break; |
1342 | case 0x4907494: // /TLBOUT:[path\]filename | 1353 | case 0x4907494: // /TLBOUT:[path\]filename |
1343 | TypeLibraryFile = option+8; | 1354 | TypeLibraryFile = option+8; |
1344 | break; | 1355 | break; |
1345 | case 0x976b525: // /TSAWARE[:NO] | 1356 | case 0x976b525: // /TSAWARE[:NO] |
1346 | if ( *(option+8) == ':' ) | 1357 | if ( *(option+8) == ':' ) |
1347 | TerminalServerAware = termSvrAwareNo; | 1358 | TerminalServerAware = termSvrAwareNo; |
1348 | else | 1359 | else |
1349 | TerminalServerAware = termSvrAwareYes; | 1360 | TerminalServerAware = termSvrAwareYes; |
@@ -1351,27 +1362,29 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
1351 | case 0xaa67735: // /VERBOSE[:lib] | 1362 | case 0xaa67735: // /VERBOSE[:lib] |
1352 | if ( *(option+9) == ':' ) { | 1363 | if ( *(option+9) == ':' ) { |
1353 | ShowProgress = linkProgressLibs; | 1364 | ShowProgress = linkProgressLibs; |
1354 | AdditionalOptions += option; | 1365 | AdditionalOptions += option; |
1355 | } else { | 1366 | } else { |
1356 | ShowProgress = linkProgressAll; | 1367 | ShowProgress = linkProgressAll; |
1357 | } | 1368 | } |
1358 | break; | 1369 | break; |
1359 | case 0xaa77f7e: // /VERSION:major[.minor] | 1370 | case 0xaa77f7e: // /VERSION:major[.minor] |
1360 | Version = option+9; | 1371 | Version = option+9; |
1361 | break; | 1372 | break; |
1362 | default: | 1373 | default: |
1363 | return FALSE; | 1374 | found = FALSE; |
1364 | } | 1375 | } |
1365 | return TRUE; | 1376 | if( !found ) |
1377 | warn_msg( WarnLogic, "Could not parse Linker options: %s", option ); | ||
1378 | return found; | ||
1366 | } | 1379 | } |
1367 | 1380 | ||
1368 | // VCMIDLTool ------------------------------------------------------- | 1381 | // VCMIDLTool ------------------------------------------------------- |
1369 | VCMIDLTool::VCMIDLTool() | 1382 | VCMIDLTool::VCMIDLTool() |
1370 | :DefaultCharType( midlCharUnsigned ), | 1383 | :DefaultCharType( midlCharUnsigned ), |
1371 | EnableErrorChecks( midlDisableAll ), | 1384 | EnableErrorChecks( midlDisableAll ), |
1372 | ErrorCheckAllocations( unset ), | 1385 | ErrorCheckAllocations( unset ), |
1373 | ErrorCheckBounds( unset ), | 1386 | ErrorCheckBounds( unset ), |
1374 | ErrorCheckEnumRange( unset ), | 1387 | ErrorCheckEnumRange( unset ), |
1375 | ErrorCheckRefPointers( unset ), | 1388 | ErrorCheckRefPointers( unset ), |
1376 | ErrorCheckStubData( unset ), | 1389 | ErrorCheckStubData( unset ), |
1377 | GenerateStublessProxies( unset ), | 1390 | GenerateStublessProxies( unset ), |
@@ -1383,25 +1396,25 @@ VCMIDLTool::VCMIDLTool() | |||
1383 | TargetEnvironment( midlTargetNotSet ), | 1396 | TargetEnvironment( midlTargetNotSet ), |
1384 | ValidateParameters( unset ), | 1397 | ValidateParameters( unset ), |
1385 | WarnAsError( unset ), | 1398 | WarnAsError( unset ), |
1386 | WarningLevel( midlWarningLevel_0 ) | 1399 | WarningLevel( midlWarningLevel_0 ) |
1387 | { | 1400 | { |
1388 | } | 1401 | } |
1389 | 1402 | ||
1390 | QTextStream &operator<<( QTextStream &strm, const VCMIDLTool &tool ) | 1403 | QTextStream &operator<<( QTextStream &strm, const VCMIDLTool &tool ) |
1391 | { | 1404 | { |
1392 | strm << _begTool3; | 1405 | strm << _begTool3; |
1393 | strm << _VCMIDLToolName; | 1406 | strm << _VCMIDLToolName; |
1394 | strm << XPair( _AdditionalIncludeDirectories, tool.AdditionalIncludeDirectories ); | 1407 | strm << XPair( _AdditionalIncludeDirectories, tool.AdditionalIncludeDirectories ); |
1395 | strm << XPair( _AdditionalOptions, tool.AdditionalOptions ); | 1408 | strm << XPair( _AdditionalOptions, tool.AdditionalOptions, " " ); |
1396 | strm << XPair( _CPreprocessOptions, tool.CPreprocessOptions ); | 1409 | strm << XPair( _CPreprocessOptions, tool.CPreprocessOptions ); |
1397 | strm << EPair( _DefaultCharType, tool.DefaultCharType ); | 1410 | strm << EPair( _DefaultCharType, tool.DefaultCharType ); |
1398 | strm << SPair( _DLLDataFileName, tool.DLLDataFileName ); | 1411 | strm << SPair( _DLLDataFileName, tool.DLLDataFileName ); |
1399 | strm << EPair( _EnableErrorChecks, tool.EnableErrorChecks ); | 1412 | strm << EPair( _EnableErrorChecks, tool.EnableErrorChecks ); |
1400 | strm << TPair( _ErrorCheckAllocations, tool.ErrorCheckAllocations ); | 1413 | strm << TPair( _ErrorCheckAllocations, tool.ErrorCheckAllocations ); |
1401 | strm << TPair( _ErrorCheckBounds, tool.ErrorCheckBounds ); | 1414 | strm << TPair( _ErrorCheckBounds, tool.ErrorCheckBounds ); |
1402 | strm << TPair( _ErrorCheckEnumRange, tool.ErrorCheckEnumRange ); | 1415 | strm << TPair( _ErrorCheckEnumRange, tool.ErrorCheckEnumRange ); |
1403 | strm << TPair( _ErrorCheckRefPointers, tool.ErrorCheckRefPointers ); | 1416 | strm << TPair( _ErrorCheckRefPointers, tool.ErrorCheckRefPointers ); |
1404 | strm << TPair( _ErrorCheckStubData, tool.ErrorCheckStubData ); | 1417 | strm << TPair( _ErrorCheckStubData, tool.ErrorCheckStubData ); |
1405 | strm << XPair( _FullIncludePath, tool.FullIncludePath ); | 1418 | strm << XPair( _FullIncludePath, tool.FullIncludePath ); |
1406 | strm << TPair( _GenerateStublessProxies, tool.GenerateStublessProxies ); | 1419 | strm << TPair( _GenerateStublessProxies, tool.GenerateStublessProxies ); |
1407 | strm << TPair( _GenerateTypeLibrary, tool.GenerateTypeLibrary ); | 1420 | strm << TPair( _GenerateTypeLibrary, tool.GenerateTypeLibrary ); |
@@ -1418,52 +1431,53 @@ QTextStream &operator<<( QTextStream &strm, const VCMIDLTool &tool ) | |||
1418 | if ( tool.TargetEnvironment != midlTargetNotSet ) strm << EPair( _TargetEnvironment, tool.TargetEnvironment ); | 1431 | if ( tool.TargetEnvironment != midlTargetNotSet ) strm << EPair( _TargetEnvironment, tool.TargetEnvironment ); |
1419 | strm << SPair( _TypeLibraryName, tool.TypeLibraryName ); | 1432 | strm << SPair( _TypeLibraryName, tool.TypeLibraryName ); |
1420 | strm << XPair( _UndefinePreprocessorDefinitions, tool.UndefinePreprocessorDefinitions ); | 1433 | strm << XPair( _UndefinePreprocessorDefinitions, tool.UndefinePreprocessorDefinitions ); |
1421 | strm << TPair( _ValidateParameters, tool.ValidateParameters ); | 1434 | strm << TPair( _ValidateParameters, tool.ValidateParameters ); |
1422 | strm << TPair( _WarnAsError, tool.WarnAsError ); | 1435 | strm << TPair( _WarnAsError, tool.WarnAsError ); |
1423 | strm << EPair( _WarningLevel, tool.WarningLevel ); | 1436 | strm << EPair( _WarningLevel, tool.WarningLevel ); |
1424 | strm << "/>"; | 1437 | strm << "/>"; |
1425 | return strm; | 1438 | return strm; |
1426 | } | 1439 | } |
1427 | 1440 | ||
1428 | bool VCMIDLTool::parseOption( const char* option ) | 1441 | bool VCMIDLTool::parseOption( const char* option ) |
1429 | { | 1442 | { |
1430 | #if 0 | 1443 | #ifdef USE_DISPLAY_HASH |
1431 | displayHash( "/D name[=def]" ); displayHash( "/I directory-list" ); displayHash( "/Oi" ); | 1444 | displayHash( "/D name[=def]" ); displayHash( "/I directory-list" ); displayHash( "/Oi" ); |
1432 | displayHash( "/Oic" ); displayHash( "/Oicf" ); displayHash( "/Oif" ); displayHash( "/Os" ); | 1445 | displayHash( "/Oic" ); displayHash( "/Oicf" ); displayHash( "/Oif" ); displayHash( "/Os" ); |
1433 | displayHash( "/U name" ); displayHash( "/WX" ); displayHash( "/W{0|1|2|3|4}" ); | 1446 | displayHash( "/U name" ); displayHash( "/WX" ); displayHash( "/W{0|1|2|3|4}" ); |
1434 | displayHash( "/Zp {N}" ); displayHash( "/Zs" ); displayHash( "/acf filename" ); | 1447 | displayHash( "/Zp {N}" ); displayHash( "/Zs" ); displayHash( "/acf filename" ); |
1435 | displayHash( "/align {N}" ); displayHash( "/app_config" ); displayHash( "/c_ext" ); | 1448 | displayHash( "/align {N}" ); displayHash( "/app_config" ); displayHash( "/c_ext" ); |
1436 | displayHash( "/char ascii7" ); displayHash( "/char signed" ); displayHash( "/char unsigned" ); | 1449 | displayHash( "/char ascii7" ); displayHash( "/char signed" ); displayHash( "/char unsigned" ); |
1437 | displayHash( "/client none" ); displayHash( "/client stub" ); displayHash( "/confirm" ); | 1450 | displayHash( "/client none" ); displayHash( "/client stub" ); displayHash( "/confirm" ); |
1438 | displayHash( "/cpp_cmd cmd_line" ); displayHash( "/cpp_opt options" ); | 1451 | displayHash( "/cpp_cmd cmd_line" ); displayHash( "/cpp_opt options" ); |
1439 | displayHash( "/cstub filename" ); displayHash( "/dlldata filename" ); displayHash( "/env win32" ); | 1452 | displayHash( "/cstub filename" ); displayHash( "/dlldata filename" ); displayHash( "/env win32" ); |
1440 | displayHash( "/env win64" ); displayHash( "/error all" ); displayHash( "/error allocation" ); | 1453 | displayHash( "/env win64" ); displayHash( "/error all" ); displayHash( "/error allocation" ); |
1441 | displayHash( "/error bounds_check" ); displayHash( "/error enum" ); displayHash( "/error none" ); | 1454 | displayHash( "/error bounds_check" ); displayHash( "/error enum" ); displayHash( "/error none" ); |
1442 | displayHash( "/error ref" ); displayHash( "/error stub_data" ); displayHash( "/h filename" ); | 1455 | displayHash( "/error ref" ); displayHash( "/error stub_data" ); displayHash( "/h filename" ); |
1443 | displayHash( "/header filename" ); displayHash( "/iid filename" ); displayHash( "/lcid" ); | 1456 | displayHash( "/header filename" ); displayHash( "/iid filename" ); displayHash( "/lcid" ); |
1444 | displayHash( "/mktyplib203" ); displayHash( "/ms_ext" ); displayHash( "/ms_union" ); | 1457 | displayHash( "/mktyplib203" ); displayHash( "/ms_ext" ); displayHash( "/ms_union" ); |
1445 | displayHash( "/msc_ver <nnnn>" ); displayHash( "/newtlb" ); displayHash( "/no_cpp" ); | 1458 | displayHash( "/msc_ver <nnnn>" ); displayHash( "/newtlb" ); displayHash( "/no_cpp" ); |
1446 | displayHash( "/no_def_idir" ); displayHash( "/no_default_epv" ); displayHash( "/no_format_opt" ); | 1459 | displayHash( "/no_def_idir" ); displayHash( "/no_default_epv" ); displayHash( "/no_format_opt" ); |
1447 | displayHash( "/no_warn" ); displayHash( "/nocpp" ); displayHash( "/nologo" ); displayHash( "/notlb" ); | 1460 | displayHash( "/no_warn" ); displayHash( "/nocpp" ); displayHash( "/nologo" ); displayHash( "/notlb" ); |
1448 | displayHash( "/o filename" ); displayHash( "/oldnames" ); displayHash( "/oldtlb" ); | 1461 | displayHash( "/o filename" ); displayHash( "/oldnames" ); displayHash( "/oldtlb" ); |
1449 | displayHash( "/osf" ); displayHash( "/out directory" ); displayHash( "/pack {N}" ); | 1462 | displayHash( "/osf" ); displayHash( "/out directory" ); displayHash( "/pack {N}" ); |
1450 | displayHash( "/prefix all" ); displayHash( "/prefix client" ); displayHash( "/prefix server" ); | 1463 | displayHash( "/prefix all" ); displayHash( "/prefix client" ); displayHash( "/prefix server" ); |
1451 | displayHash( "/prefix switch" ); displayHash( "/protocol all" ); displayHash( "/protocol dce" ); | 1464 | displayHash( "/prefix switch" ); displayHash( "/protocol all" ); displayHash( "/protocol dce" ); |
1452 | displayHash( "/protocol ndr64" ); displayHash( "/proxy filename" ); displayHash( "/robust" ); | 1465 | displayHash( "/protocol ndr64" ); displayHash( "/proxy filename" ); displayHash( "/robust" ); |
1453 | displayHash( "/rpcss" ); displayHash( "/savePP" ); displayHash( "/server none" ); | 1466 | displayHash( "/rpcss" ); displayHash( "/savePP" ); displayHash( "/server none" ); |
1454 | displayHash( "/server stub" ); displayHash( "/sstub filename" ); displayHash( "/syntax_check" ); | 1467 | displayHash( "/server stub" ); displayHash( "/sstub filename" ); displayHash( "/syntax_check" ); |
1455 | displayHash( "/target {system}" ); displayHash( "/tlb filename" ); displayHash( "/use_epv" ); | 1468 | displayHash( "/target {system}" ); displayHash( "/tlb filename" ); displayHash( "/use_epv" ); |
1456 | displayHash( "/win32" ); displayHash( "/win64" ); | 1469 | displayHash( "/win32" ); displayHash( "/win64" ); |
1457 | #endif | 1470 | #endif |
1471 | bool found = TRUE; | ||
1458 | int offset = 0; | 1472 | int offset = 0; |
1459 | switch( elfHash(option) ) { | 1473 | switch( elfHash(option) ) { |
1460 | case 0x0000334: // /D name[=def] | 1474 | case 0x0000334: // /D name[=def] |
1461 | PreprocessorDefinitions += option+3; | 1475 | PreprocessorDefinitions += option+3; |
1462 | break; | 1476 | break; |
1463 | case 0x0000339: // /I directory-list | 1477 | case 0x0000339: // /I directory-list |
1464 | AdditionalIncludeDirectories += option+3; | 1478 | AdditionalIncludeDirectories += option+3; |
1465 | break; | 1479 | break; |
1466 | case 0x0345f96: // /Oicf | 1480 | case 0x0345f96: // /Oicf |
1467 | case 0x00345f6: // /Oif | 1481 | case 0x00345f6: // /Oif |
1468 | GenerateStublessProxies = _True; | 1482 | GenerateStublessProxies = _True; |
1469 | break; | 1483 | break; |
@@ -1481,40 +1495,40 @@ bool VCMIDLTool::parseOption( const char* option ) | |||
1481 | StructMemberAlignment = ( *(option+offset+5) == '\0' ) ? midlAlignSingleByte : midlAlignSixteenBytes; | 1495 | StructMemberAlignment = ( *(option+offset+5) == '\0' ) ? midlAlignSingleByte : midlAlignSixteenBytes; |
1482 | break; | 1496 | break; |
1483 | case '2': | 1497 | case '2': |
1484 | StructMemberAlignment = midlAlignTwoBytes; | 1498 | StructMemberAlignment = midlAlignTwoBytes; |
1485 | break; | 1499 | break; |
1486 | case '4': | 1500 | case '4': |
1487 | StructMemberAlignment = midlAlignFourBytes; | 1501 | StructMemberAlignment = midlAlignFourBytes; |
1488 | break; | 1502 | break; |
1489 | case '8': | 1503 | case '8': |
1490 | StructMemberAlignment = midlAlignEightBytes; | 1504 | StructMemberAlignment = midlAlignEightBytes; |
1491 | break; | 1505 | break; |
1492 | default: | 1506 | default: |
1493 | return FALSE; | 1507 | found = FALSE; |
1494 | } | 1508 | } |
1495 | break; | 1509 | break; |
1496 | case 0x0359e82: // /char {ascii7|signed|unsigned} | 1510 | case 0x0359e82: // /char {ascii7|signed|unsigned} |
1497 | switch( *(option+6) ) { | 1511 | switch( *(option+6) ) { |
1498 | case 'a': | 1512 | case 'a': |
1499 | DefaultCharType = midlCharAscii7; | 1513 | DefaultCharType = midlCharAscii7; |
1500 | break; | 1514 | break; |
1501 | case 's': | 1515 | case 's': |
1502 | DefaultCharType = midlCharSigned; | 1516 | DefaultCharType = midlCharSigned; |
1503 | break; | 1517 | break; |
1504 | case 'u': | 1518 | case 'u': |
1505 | DefaultCharType = midlCharUnsigned; | 1519 | DefaultCharType = midlCharUnsigned; |
1506 | break; | 1520 | break; |
1507 | default: | 1521 | default: |
1508 | return FALSE; | 1522 | found = FALSE; |
1509 | } | 1523 | } |
1510 | break; | 1524 | break; |
1511 | case 0xa766524: // /cpp_opt options | 1525 | case 0xa766524: // /cpp_opt options |
1512 | CPreprocessOptions += option+9; | 1526 | CPreprocessOptions += option+9; |
1513 | break; | 1527 | break; |
1514 | case 0xb32abf1: // /dlldata filename | 1528 | case 0xb32abf1: // /dlldata filename |
1515 | DLLDataFileName = option + 9; | 1529 | DLLDataFileName = option + 9; |
1516 | break; | 1530 | break; |
1517 | case 0x0035c56: // /env {win32|win64} | 1531 | case 0x0035c56: // /env {win32|win64} |
1518 | TargetEnvironment = ( *(option+8) == '6' ) ? midlTargetWin64 : midlTargetWin32; | 1532 | TargetEnvironment = ( *(option+8) == '6' ) ? midlTargetWin64 : midlTargetWin32; |
1519 | break; | 1533 | break; |
1520 | case 0x35c9962: // /error {all|allocation|bounds_check|enum|none|ref|stub_data} | 1534 | case 0x35c9962: // /error {all|allocation|bounds_check|enum|none|ref|stub_data} |
@@ -1527,31 +1541,31 @@ bool VCMIDLTool::parseOption( const char* option ) | |||
1527 | ErrorCheckAllocations = _True; | 1541 | ErrorCheckAllocations = _True; |
1528 | break; | 1542 | break; |
1529 | case 'b': | 1543 | case 'b': |
1530 | ErrorCheckBounds = _True; | 1544 | ErrorCheckBounds = _True; |
1531 | break; | 1545 | break; |
1532 | case 'e': | 1546 | case 'e': |
1533 | ErrorCheckEnumRange = _True; | 1547 | ErrorCheckEnumRange = _True; |
1534 | break; | 1548 | break; |
1535 | case 'n': | 1549 | case 'n': |
1536 | EnableErrorChecks = midlDisableAll; | 1550 | EnableErrorChecks = midlDisableAll; |
1537 | break; | 1551 | break; |
1538 | case 'r': | 1552 | case 'r': |
1539 | break; | ||
1540 | ErrorCheckRefPointers = _True; | 1553 | ErrorCheckRefPointers = _True; |
1541 | case 's': | ||
1542 | break; | 1554 | break; |
1555 | case 's': | ||
1543 | ErrorCheckStubData = _True; | 1556 | ErrorCheckStubData = _True; |
1557 | break; | ||
1544 | default: | 1558 | default: |
1545 | return FALSE; | 1559 | found = FALSE; |
1546 | } | 1560 | } |
1547 | break; | 1561 | break; |
1548 | case 0x5eb7af2: // /header filename | 1562 | case 0x5eb7af2: // /header filename |
1549 | offset = 5; | 1563 | offset = 5; |
1550 | case 0x0000358: // /h filename | 1564 | case 0x0000358: // /h filename |
1551 | HeaderFileName = option + offset + 3; | 1565 | HeaderFileName = option + offset + 3; |
1552 | break; | 1566 | break; |
1553 | case 0x0035ff4: // /iid filename | 1567 | case 0x0035ff4: // /iid filename |
1554 | InterfaceIdentifierFileName = option+5; | 1568 | InterfaceIdentifierFileName = option+5; |
1555 | break; | 1569 | break; |
1556 | case 0x64b7933: // /mktyplib203 | 1570 | case 0x64b7933: // /mktyplib203 |
1557 | MkTypLibCompatible = _True; | 1571 | MkTypLibCompatible = _True; |
@@ -1638,46 +1652,48 @@ bool VCMIDLTool::parseOption( const char* option ) | |||
1638 | WarningLevel = midlWarningLevel_1; | 1652 | WarningLevel = midlWarningLevel_1; |
1639 | break; | 1653 | break; |
1640 | case '2': | 1654 | case '2': |
1641 | WarningLevel = midlWarningLevel_2; | 1655 | WarningLevel = midlWarningLevel_2; |
1642 | break; | 1656 | break; |
1643 | case '3': | 1657 | case '3': |
1644 | WarningLevel = midlWarningLevel_3; | 1658 | WarningLevel = midlWarningLevel_3; |
1645 | break; | 1659 | break; |
1646 | case '4': | 1660 | case '4': |
1647 | WarningLevel = midlWarningLevel_4; | 1661 | WarningLevel = midlWarningLevel_4; |
1648 | break; | 1662 | break; |
1649 | default: | 1663 | default: |
1650 | return FALSE; | 1664 | found = FALSE; |
1651 | } | 1665 | } |
1652 | } | 1666 | } |
1653 | break; | 1667 | break; |
1654 | } | 1668 | } |
1669 | if( !found ) | ||
1670 | warn_msg( WarnLogic, "Could not parse MIDL option: %s", option ); | ||
1655 | return TRUE; | 1671 | return TRUE; |
1656 | } | 1672 | } |
1657 | 1673 | ||
1658 | // VCLibrarianTool -------------------------------------------------- | 1674 | // VCLibrarianTool -------------------------------------------------- |
1659 | VCLibrarianTool::VCLibrarianTool() | 1675 | VCLibrarianTool::VCLibrarianTool() |
1660 | :IgnoreAllDefaultLibraries( unset ), | 1676 | :IgnoreAllDefaultLibraries( unset ), |
1661 | SuppressStartupBanner( _True ) | 1677 | SuppressStartupBanner( _True ) |
1662 | { | 1678 | { |
1663 | } | 1679 | } |
1664 | 1680 | ||
1665 | QTextStream &operator<<( QTextStream &strm, const VCLibrarianTool &tool ) | 1681 | QTextStream &operator<<( QTextStream &strm, const VCLibrarianTool &tool ) |
1666 | { | 1682 | { |
1667 | strm << _begTool3; | 1683 | strm << _begTool3; |
1668 | strm << SPair( _ToolName, QString( "VCLibrarianTool" ) ); | 1684 | strm << SPair( _ToolName, QString( "VCLibrarianTool" ) ); |
1669 | strm << XPair( _AdditionalDependencies4, tool.AdditionalDependencies ); | 1685 | strm << XPair( _AdditionalDependencies4, tool.AdditionalDependencies ); |
1670 | strm << XPair( _AdditionalLibraryDirectories, tool.AdditionalLibraryDirectories ); | 1686 | strm << XPair( _AdditionalLibraryDirectories, tool.AdditionalLibraryDirectories ); |
1671 | strm << XPair( _AdditionalOptions, tool.AdditionalOptions ); | 1687 | strm << XPair( _AdditionalOptions, tool.AdditionalOptions, " " ); |
1672 | strm << XPair( _ExportNamedFunctions, tool.ExportNamedFunctions ); | 1688 | strm << XPair( _ExportNamedFunctions, tool.ExportNamedFunctions ); |
1673 | strm << XPair( _ForceSymbolReferences, tool.ForceSymbolReferences ); | 1689 | strm << XPair( _ForceSymbolReferences, tool.ForceSymbolReferences ); |
1674 | strm << TPair( _IgnoreAllDefaultLibraries, tool.IgnoreAllDefaultLibraries ); | 1690 | strm << TPair( _IgnoreAllDefaultLibraries, tool.IgnoreAllDefaultLibraries ); |
1675 | strm << XPair( _IgnoreDefaultLibraryNames, tool.IgnoreDefaultLibraryNames ); | 1691 | strm << XPair( _IgnoreDefaultLibraryNames, tool.IgnoreDefaultLibraryNames ); |
1676 | strm << SPair( _ModuleDefinitionFile, tool.ModuleDefinitionFile ); | 1692 | strm << SPair( _ModuleDefinitionFile, tool.ModuleDefinitionFile ); |
1677 | strm << SPair( _OutputFile, tool.OutputFile ); | 1693 | strm << SPair( _OutputFile, tool.OutputFile ); |
1678 | strm << TPair( _SuppressStartupBanner, tool.SuppressStartupBanner ); | 1694 | strm << TPair( _SuppressStartupBanner, tool.SuppressStartupBanner ); |
1679 | strm << "/>"; | 1695 | strm << "/>"; |
1680 | return strm; | 1696 | return strm; |
1681 | } | 1697 | } |
1682 | 1698 | ||
1683 | // VCCustomBuildTool ------------------------------------------------ | 1699 | // VCCustomBuildTool ------------------------------------------------ |
@@ -1705,25 +1721,25 @@ VCResourceCompilerTool::VCResourceCompilerTool() | |||
1705 | IgnoreStandardIncludePath( unset ), | 1721 | IgnoreStandardIncludePath( unset ), |
1706 | ShowProgress( linkProgressNotSet ) | 1722 | ShowProgress( linkProgressNotSet ) |
1707 | { | 1723 | { |
1708 | PreprocessorDefinitions = "NDEBUG"; | 1724 | PreprocessorDefinitions = "NDEBUG"; |
1709 | } | 1725 | } |
1710 | 1726 | ||
1711 | QTextStream &operator<<( QTextStream &strm, const VCResourceCompilerTool &tool ) | 1727 | QTextStream &operator<<( QTextStream &strm, const VCResourceCompilerTool &tool ) |
1712 | { | 1728 | { |
1713 | strm << _begTool3; | 1729 | strm << _begTool3; |
1714 | strm << _VCResourceCompilerToolName; | 1730 | strm << _VCResourceCompilerToolName; |
1715 | strm << SPair( _ToolPath, tool.ToolPath ); | 1731 | strm << SPair( _ToolPath, tool.ToolPath ); |
1716 | strm << XPair( _AdditionalIncludeDirectories, tool.AdditionalIncludeDirectories ); | 1732 | strm << XPair( _AdditionalIncludeDirectories, tool.AdditionalIncludeDirectories ); |
1717 | strm << XPair( _AdditionalOptions, tool.AdditionalOptions ); | 1733 | strm << XPair( _AdditionalOptions, tool.AdditionalOptions, " " ); |
1718 | if ( tool.Culture != rcUseDefault ) strm << EPair( _Culture, tool.Culture ); | 1734 | if ( tool.Culture != rcUseDefault ) strm << EPair( _Culture, tool.Culture ); |
1719 | strm << XPair( _FullIncludePath, tool.FullIncludePath ); | 1735 | strm << XPair( _FullIncludePath, tool.FullIncludePath ); |
1720 | strm << TPair( _IgnoreStandardIncludePath, tool.IgnoreStandardIncludePath ); | 1736 | strm << TPair( _IgnoreStandardIncludePath, tool.IgnoreStandardIncludePath ); |
1721 | strm << XPair( _PreprocessorDefinitions, tool.PreprocessorDefinitions ); | 1737 | strm << XPair( _PreprocessorDefinitions, tool.PreprocessorDefinitions ); |
1722 | strm << SPair( _ResourceOutputFileName, tool.ResourceOutputFileName ); | 1738 | strm << SPair( _ResourceOutputFileName, tool.ResourceOutputFileName ); |
1723 | if ( tool.ShowProgress != linkProgressNotSet ) strm << EPair( _ShowProgress, tool.ShowProgress ); | 1739 | if ( tool.ShowProgress != linkProgressNotSet ) strm << EPair( _ShowProgress, tool.ShowProgress ); |
1724 | strm << "/>"; | 1740 | strm << "/>"; |
1725 | return strm; | 1741 | return strm; |
1726 | } | 1742 | } |
1727 | 1743 | ||
1728 | // VCEventTool ------------------------------------------------- | 1744 | // VCEventTool ------------------------------------------------- |
1729 | QTextStream &operator<<( QTextStream &strm, const VCEventTool &tool ) | 1745 | QTextStream &operator<<( QTextStream &strm, const VCEventTool &tool ) |
@@ -1842,47 +1858,68 @@ void VCFilter::generateMOC( QTextStream &strm, QString str ) const | |||
1842 | strm << _Outputs6; | 1858 | strm << _Outputs6; |
1843 | strm << mocOutput << "\""; | 1859 | strm << mocOutput << "\""; |
1844 | strm << "/>"; | 1860 | strm << "/>"; |
1845 | strm << _endFileConfiguration; | 1861 | strm << _endFileConfiguration; |
1846 | } | 1862 | } |
1847 | 1863 | ||
1848 | void VCFilter::generateUIC( QTextStream &strm, const QString& str ) const | 1864 | void VCFilter::generateUIC( QTextStream &strm, const QString& str ) const |
1849 | { | 1865 | { |
1850 | QString uicApp = Project->var("QMAKE_UIC"); | 1866 | QString uicApp = Project->var("QMAKE_UIC"); |
1851 | QString mocApp = Project->var( "QMAKE_MOC" ); | 1867 | QString mocApp = Project->var( "QMAKE_MOC" ); |
1852 | QString fname = str.section( '\\', -1 ); | 1868 | QString fname = str.section( '\\', -1 ); |
1853 | QString mocDir = Project->var( "MOC_DIR" ); | 1869 | QString mocDir = Project->var( "MOC_DIR" ); |
1870 | QString uiDir = Project->var( "UI_DIR" ); | ||
1871 | QString uiHeaders; | ||
1872 | QString uiSources; | ||
1873 | |||
1874 | // Determining the paths for the output files. | ||
1875 | int slash = str.findRev( '\\' ); | ||
1876 | QString pname = ( slash != -1 ) ? str.left( slash+1 ) : QString( ".\\" ); | ||
1877 | if( !uiDir.isEmpty() ) { | ||
1878 | uiHeaders = uiDir; | ||
1879 | uiSources = uiDir; | ||
1880 | } else { | ||
1881 | uiHeaders = Project->var( "UI_HEADERS_DIR" ); | ||
1882 | uiSources = Project->var( "UI_SOURCES_DIR" ); | ||
1883 | if( uiHeaders.isEmpty() ) | ||
1884 | uiHeaders = pname; | ||
1885 | if( uiSources.isEmpty() ) | ||
1886 | uiSources = pname; | ||
1887 | } | ||
1888 | if( !uiHeaders.endsWith( "\\" ) ) | ||
1889 | uiHeaders += "\\"; | ||
1890 | if( !uiSources.endsWith( "\\" ) ) | ||
1891 | uiSources += "\\"; | ||
1892 | |||
1893 | // Determine the file name. | ||
1854 | int dot = fname.findRev( '.' ); | 1894 | int dot = fname.findRev( '.' ); |
1855 | if( dot != -1 ) | 1895 | if( dot != -1 ) |
1856 | fname.truncate( dot ); | 1896 | fname.truncate( dot ); |
1857 | 1897 | ||
1858 | int slash = str.findRev( '\\' ); | ||
1859 | QString pname = ( slash != -1 ) ? str.left( slash+1 ) : QString(".\\"); | ||
1860 | |||
1861 | strm << _begFileConfiguration; | 1898 | strm << _begFileConfiguration; |
1862 | strm << _Name5; | 1899 | strm << _Name5; |
1863 | strm << Config->Name; | 1900 | strm << Config->Name; |
1864 | strm << "\">"; | 1901 | strm << "\">"; |
1865 | strm << _begTool5; | 1902 | strm << _begTool5; |
1866 | strm << _VCCustomBuildTool; | 1903 | strm << _VCCustomBuildTool; |
1867 | strm << _Description6; | 1904 | strm << _Description6; |
1868 | strm << "Uic'ing " << str << "...\""; | 1905 | strm << "Uic'ing " << str << "...\""; |
1869 | strm << _CommandLine6; | 1906 | strm << _CommandLine6; |
1870 | strm << uicApp << " " << str << " -o " << pname << fname << ".h && "; // Create .h from .ui file | 1907 | strm << uicApp << " " << str << " -o " << uiHeaders << fname << ".h && "; // Create .h from .ui file |
1871 | strm << uicApp << " " << str << " -i " << fname << ".h -o " << pname << fname << ".cpp && ";// Create .cpp from .ui file | 1908 | strm << uicApp << " " << str << " -i " << fname << ".h -o " << uiSources << fname << ".cpp && ";// Create .cpp from .ui file |
1872 | strm << mocApp << " " << pname << fname << ".h -o " << mocDir << "moc_" << fname << ".cpp\""; | 1909 | strm << mocApp << " " << uiHeaders << fname << ".h -o " << mocDir << "moc_" << fname << ".cpp\""; |
1873 | strm << _AdditionalDependencies6; | 1910 | strm << _AdditionalDependencies6; |
1874 | strm << mocApp << ";" << uicApp << "\""; | 1911 | strm << mocApp << ";" << uicApp << "\""; |
1875 | strm << _Outputs6; | 1912 | strm << _Outputs6; |
1876 | strm << pname << fname << ".h;" << pname << fname << ".cpp;" << mocDir << "moc_" << fname << ".cpp\""; | 1913 | strm << uiHeaders << fname << ".h;" << uiSources << fname << ".cpp;" << mocDir << "moc_" << fname << ".cpp\""; |
1877 | strm << "/>"; | 1914 | strm << "/>"; |
1878 | strm << _endFileConfiguration; | 1915 | strm << _endFileConfiguration; |
1879 | } | 1916 | } |
1880 | 1917 | ||
1881 | QTextStream &operator<<( QTextStream &strm, const VCFilter &tool ) | 1918 | QTextStream &operator<<( QTextStream &strm, const VCFilter &tool ) |
1882 | { | 1919 | { |
1883 | if ( tool.Files.count() == 0 ) | 1920 | if ( tool.Files.count() == 0 ) |
1884 | return strm; | 1921 | return strm; |
1885 | 1922 | ||
1886 | strm << _begFilter; | 1923 | strm << _begFilter; |
1887 | strm << SPair( _Name3, tool.Name ); | 1924 | strm << SPair( _Name3, tool.Name ); |
1888 | strm << TPair( _ParseFiles, tool.ParseFiles ); | 1925 | strm << TPair( _ParseFiles, tool.ParseFiles ); |
@@ -1897,27 +1934,27 @@ QTextStream &operator<<( QTextStream &strm, const VCFilter &tool ) | |||
1897 | else if ( tool.CustomBuild == uic ) | 1934 | else if ( tool.CustomBuild == uic ) |
1898 | tool.generateUIC( strm, *it ); | 1935 | tool.generateUIC( strm, *it ); |
1899 | strm << _endFile; | 1936 | strm << _endFile; |
1900 | } | 1937 | } |
1901 | 1938 | ||
1902 | strm << _endFilter; | 1939 | strm << _endFilter; |
1903 | return strm; | 1940 | return strm; |
1904 | } | 1941 | } |
1905 | 1942 | ||
1906 | // VCProject -------------------------------------------------------- | 1943 | // VCProject -------------------------------------------------------- |
1907 | VCProject::VCProject() | 1944 | VCProject::VCProject() |
1908 | { | 1945 | { |
1909 | QUuid uniqueId; | ||
1910 | #if defined(Q_WS_WIN32) | 1946 | #if defined(Q_WS_WIN32) |
1911 | GUID guid; | 1947 | GUID guid; |
1948 | QUuid uniqueId; | ||
1912 | HRESULT h = CoCreateGuid( &guid ); | 1949 | HRESULT h = CoCreateGuid( &guid ); |
1913 | if ( h == S_OK ) | 1950 | if ( h == S_OK ) |
1914 | uniqueId = QUuid( guid ); | 1951 | uniqueId = QUuid( guid ); |
1915 | ProjectGUID = uniqueId.toString(); | 1952 | ProjectGUID = uniqueId.toString(); |
1916 | #else | 1953 | #else |
1917 | // Qt doesn't support GUID on other platforms yet | 1954 | // Qt doesn't support GUID on other platforms yet |
1918 | ProjectGUID = ""; | 1955 | ProjectGUID = ""; |
1919 | #endif | 1956 | #endif |
1920 | } | 1957 | } |
1921 | 1958 | ||
1922 | QTextStream &operator<<( QTextStream &strm, const VCProject &tool ) | 1959 | QTextStream &operator<<( QTextStream &strm, const VCProject &tool ) |
1923 | { | 1960 | { |