Diffstat (limited to 'qmake/generators/win32/msvc_objectmodel.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 155 |
1 files changed, 96 insertions, 59 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 | |||
@@ -383,7 +383,7 @@ QTextStream &operator<<( QTextStream &strm, const VCCLCompilerTool &tool ) | |||
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 ); |
@@ -454,22 +454,26 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -487,7 +491,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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; |
@@ -544,7 +548,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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; |
@@ -553,7 +557,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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; |
@@ -619,7 +623,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -633,7 +637,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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; |
@@ -651,7 +655,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -671,7 +675,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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; |
@@ -705,7 +709,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -716,7 +720,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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' ) |
@@ -728,7 +732,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -738,7 +742,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -778,7 +782,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -807,7 +811,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -840,9 +844,9 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -869,11 +873,11 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -887,12 +891,13 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -904,13 +909,13 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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; |
@@ -919,7 +924,7 @@ bool VCCLCompilerTool::parseOption( const char* option ) | |||
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': |
@@ -933,8 +938,10 @@ bool VCCLCompilerTool::parseOption( const char* 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 | ||
@@ -980,7 +987,7 @@ QTextStream &operator<<( QTextStream &strm, const VCLinkerTool &tool ) | |||
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 ); |
@@ -1060,14 +1067,18 @@ static uint elfHash( const char* name ) | |||
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" ); |
@@ -1088,7 +1099,7 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
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" ); |
@@ -1098,7 +1109,7 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
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] |
@@ -1216,7 +1227,7 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
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] |
@@ -1275,7 +1286,7 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
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; |
@@ -1324,7 +1335,7 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
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; |
@@ -1334,7 +1345,7 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
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(); |
@@ -1360,9 +1371,11 @@ bool VCLinkerTool::parseOption( const char* option ) | |||
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 ------------------------------------------------------- |
@@ -1392,7 +1405,7 @@ QTextStream &operator<<( QTextStream &strm, const VCMIDLTool &tool ) | |||
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 ); |
@@ -1427,7 +1440,7 @@ QTextStream &operator<<( QTextStream &strm, const VCMIDLTool &tool ) | |||
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}" ); |
@@ -1455,6 +1468,7 @@ bool VCMIDLTool::parseOption( const char* option ) | |||
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] |
@@ -1490,7 +1504,7 @@ bool VCMIDLTool::parseOption( const char* option ) | |||
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} |
@@ -1505,7 +1519,7 @@ bool VCMIDLTool::parseOption( const char* option ) | |||
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 |
@@ -1536,13 +1550,13 @@ bool VCMIDLTool::parseOption( const char* option ) | |||
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 |
@@ -1647,11 +1661,13 @@ bool VCMIDLTool::parseOption( const char* option ) | |||
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 | ||
@@ -1668,7 +1684,7 @@ QTextStream &operator<<( QTextStream &strm, const VCLibrarianTool &tool ) | |||
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 ); |
@@ -1714,7 +1730,7 @@ QTextStream &operator<<( QTextStream &strm, const VCResourceCompilerTool &tool ) | |||
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 ); |
@@ -1851,12 +1867,33 @@ void VCFilter::generateUIC( QTextStream &strm, const QString& str ) const | |||
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" ); |
1854 | int dot = fname.findRev( '.' ); | 1870 | QString uiDir = Project->var( "UI_DIR" ); |
1855 | if( dot != -1 ) | 1871 | QString uiHeaders; |
1856 | fname.truncate( dot ); | 1872 | QString uiSources; |
1857 | 1873 | ||
1874 | // Determining the paths for the output files. | ||
1858 | int slash = str.findRev( '\\' ); | 1875 | int slash = str.findRev( '\\' ); |
1859 | QString pname = ( slash != -1 ) ? str.left( slash+1 ) : QString(".\\"); | 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. | ||
1894 | int dot = fname.findRev( '.' ); | ||
1895 | if( dot != -1 ) | ||
1896 | fname.truncate( dot ); | ||
1860 | 1897 | ||
1861 | strm << _begFileConfiguration; | 1898 | strm << _begFileConfiguration; |
1862 | strm << _Name5; | 1899 | strm << _Name5; |
@@ -1867,13 +1904,13 @@ void VCFilter::generateUIC( QTextStream &strm, const QString& str ) const | |||
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 | } |
@@ -1906,9 +1943,9 @@ QTextStream &operator<<( QTextStream &strm, const VCFilter &tool ) | |||
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 ); |