diff options
Diffstat (limited to 'qmake/generators/win32/msvc_objectmodel.h')
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.h | 801 |
1 files changed, 801 insertions, 0 deletions
diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h new file mode 100644 index 000000000..759242345 --- /dev/null +++ b/qmake/generators/win32/msvc_objectmodel.h @@ -0,0 +1,801 @@ +/**************************************************************************** +** +** Definition of VCProject class. +** +** Copyright (C) 2002-2008 Trolltech ASA. All rights reserved. +** +** This file is part of qmake. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free TQt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing retquirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** This file may be used under the terms of the Q Public License as +** defined by Trolltech ASA and appearing in the file LICENSE.TQPL +** included in the packaging of this file. Licensees holding valid TQt +** Commercial licenses may use this file in accordance with the TQt +** Commercial License Agreement provided with the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#ifndef __MSVC_OBJECTMODEL_H__ +#define __MSVC_OBJECTMODEL_H__ + +#include "project.h" +#include <qstring.h> +#include <qstringlist.h> + +enum DotNET { + NETUnknown = 0, + NET2002 = 0x70, + NET2003 = 0x71, + NET2005 = 0x80 +}; + +/* + This Object model is of course VERY simplyfied, + and does not actually follow the original MSVC + object model. However, it fulfilles the basic + needs for qmake +*/ + +/* + If a triState value is 'unset' then the + corresponding property is not in the output, + forcing the tool to utilize default values. + False/True values will be in the output... +*/ +enum customBuildCheck { + none, + moc, + uic, + lexyacc, + resource +}; +enum triState { + unset = -1, + _False = 0, + _True = 1 +}; +enum addressAwarenessType { + addrAwareDefault, + addrAwareNoLarge, + addrAwareLarge +}; +enum asmListingOption { + asmListingNone, + asmListingAssemblyOnly, + asmListingAsmMachineSrc, + asmListingAsmMachine, + asmListingAsmSrc +}; +enum basicRuntimeCheckOption { + runtimeBasicCheckNone, + runtimeCheckStackFrame, + runtimeCheckUninitVariables, + runtimeBasicCheckAll +}; +enum browseInfoOption { + brInfoNone, + brAllInfo, + brNoLocalSymbols +}; +enum callingConventionOption { + callConventionDefault = -1, + callConventionCDecl, + callConventionFastCall, + callConventionStdCall +}; +enum charSet { + charSetNotSet, + charSetUnicode, + charSetMBCS +}; +enum compileAsManagedOptions { + managedDefault = -1, + managedAssembly = 2 +}; +enum CompileAsOptions{ + compileAsDefault, + compileAsC, + compileAsCPlusPlus +}; +enum ConfigurationTypes { + typeUnknown = 0, + typeApplication = 1, + typeDynamicLibrary = 2, + typeStaticLibrary = 4, + typeGeneric = 10 +}; +enum debugOption { + debugUnknown = -1, + debugDisabled, + debugOldStyleInfo, + debugLineInfoOnly, + debugEnabled, + debugEditAndContinue +}; +enum eAppProtectionOption { + eAppProtectUnchanged, + eAppProtectLow, + eAppProtectMedium, + eAppProtectHigh +}; +enum enumResourceLangID { + rcUseDefault = 0, + rcAfrikaans = 1078, + rcAlbanian = 1052, + rcArabicAlgeria = 5121, + rcArabicBahrain = 15361, + rcArabicEgypt = 3073, + rcArabicIraq = 2049, + rcArabicJordan = 11265, + rcArabicKuwait = 13313, + rcArabicLebanon = 12289, + rcArabicLibya = 4097, + rcArabicMorocco = 6145, + rcArabicOman = 8193, + rcArabicQatar = 16385, + rcArabicSaudi = 1025, + rcArabicSyria = 10241, + rcArabicTunisia = 7169, + rcArabicUnitedArabEmirates = 14337, + rcArabicYemen = 9217, + rcBasque = 1069, + rcBulgarian = 1026, + rcByelorussian = 1059, + rcCatalan = 1027, + rcChineseHongKong = 3076, + rcChinesePRC = 2052, + rcChineseSingapore = 4100, + rcChineseTaiwan = 1028, + rcCroatian = 1050, + rcCzech = 1029, + rcDanish = 1030, + rcDutchBelgium = 2067, + rcDutchStandard = 1043, + rcEnglishAustralia = 3081, + rcEnglishBritain = 2057, + rcEnglishCanada = 4105, + RcEnglishCaribbean = 9225, + rcEnglishIreland = 6153, + rcEnglishJamaica = 8201, + rcEnglishNewZealand = 5129, + rcEnglishSouthAfrica = 7177, + rcEnglishUS = 1033, + rcEstonian = 1061, + rcFarsi = 1065, + rcFinnish = 1035, + rcFrenchBelgium = 2060, + rcFrenchCanada = 3084, + rcFrenchLuxembourg = 5132, + rcFrenchStandard = 1036, + rcFrenchSwitzerland = 4108, + rcGermanAustria = 3079, + rcGermanLichtenstein = 5127, + rcGermanLuxembourg = 4103, + rcGermanStandard = 1031, + rcGermanSwitzerland = 2055, + rcGreek = 1032, + rcHebrew = 1037, + rcHungarian = 1038, + rcIcelandic = 1039, + rcIndonesian = 1057, + rcItalianStandard = 1040, + rcItalianSwitzerland = 2064, + rcJapanese = 1041, + rcKorean = 1042, + rcKoreanJohab = 2066, + rcLatvian = 1062, + rcLithuanian = 1063, + rcNorwegianBokmal = 1044, + rcNorwegianNynorsk = 2068, + rcPolish = 1045, + rcPortugueseBrazilian = 1046, + rcPortugueseStandard = 2070, + rcRomanian = 1048, + rcRussian = 1049, + rcSerbian = 2074, + rcSlovak = 1051, + rcSpanishArgentina = 11274, + rcSpanishBolivia = 16394, + rcSpanishChile = 13322, + rcSpanishColombia = 9226, + rcSpanishCostaRica = 5130, + rcSpanishDominicanRepublic = 7178, + rcSpanishEcuador = 12298, + rcSpanishGuatemala = 4106, + rcSpanishMexico = 2058, + rcSpanishModern = 3082, + rcSpanishPanama = 6154, + rcSpanishParaguay = 15370, + rcSpanishPeru = 10250, + rcSpanishTraditional = 1034, + rcSpanishUruguay = 14346, + rcSpanishVenezuela = 8202, + rcSwedish = 1053, + rcThai = 1054, + rcTurkish = 1055, + rcUkrainian = 1058, + rcUrdu = 1056 +}; +enum enumSccEvent { + eProjectInScc, + ePreDirtyNotification +}; +enum favorSizeOrSpeedOption { + favorNone, + favorSpeed, + favorSize +}; +enum genProxyLanguage { + genProxyNative, + genProxyManaged +}; +enum inlineExpansionOption { + expandDisable, + expandOnlyInline, + expandAnySuitable, + expandDefault // Not useful number, but stops the output +}; +enum linkIncrementalType { + linkIncrementalDefault, + linkIncrementalNo, + linkIncrementalYes +}; +enum linkProgressOption { + linkProgressNotSet, + linkProgressAll, + linkProgressLibs +}; +enum machineTypeOption { + machineNotSet, + machineX86 +}; +enum midlCharOption { + midlCharUnsigned, + midlCharSigned, + midlCharAscii7 +}; +enum midlErrorCheckOption { + midlEnableCustom, + midlDisableAll, + midlEnableAll +}; +enum midlStructMemberAlignOption { + midlAlignNotSet, + midlAlignSingleByte, + midlAlignTwoBytes, + midlAlignFourBytes, + midlAlignEightBytes, + midlAlignSixteenBytes +}; +enum midlTargetEnvironment { + midlTargetNotSet, + midlTargetWin32, + midlTargetWin64 +}; +enum midlWarningLevelOption { + midlWarningLevel_0, + midlWarningLevel_1, + midlWarningLevel_2, + midlWarningLevel_3, + midlWarningLevel_4 +}; +enum optFoldingType { + optFoldingDefault, + optNoFolding, + optFolding +}; +enum optimizeOption { + optimizeDisabled, + optimizeMinSpace, + optimizeMaxSpeed, + optimizeFull, + optimizeCustom, + optimizeDefault // Not useful number, but stops the output +}; +enum optRefType { + optReferencesDefault, + optNoReferences, + optReferences +}; +enum optWin98Type { + optWin98Default, + optWin98No, + optWin98Yes +}; +enum pchOption { + pchNone, + pchCreateUsingSpecific, + pchGenerateAuto, + pchUseUsingSpecific +}; +enum preprocessOption { + preprocessUnknown = -1, + preprocessNo, + preprocessYes, + preprocessNoLineNumbers +}; +enum ProcessorOptimizeOption { + procOptimizeBlended, + procOptimizePentium, + procOptimizePentiumProAndAbove +}; +enum RemoteDebuggerType { + DbgLocal, + DbgRemote, + DbgRemoteTCPIP +}; +enum runtimeLibraryOption { + rtUnknown = -1, + rtMultiThreaded, + rtMultiThreadedDebug, + rtMultiThreadedDLL, + rtMultiThreadedDebugDLL, + rtSingleThreaded, + rtSingleThreadedDebug +}; +enum structMemberAlignOption { + alignNotSet, + alignSingleByte, + alignTwoBytes, + alignFourBytes, + alignEightBytes, + alignSixteenBytes +}; +enum subSystemOption { + subSystemNotSet, + subSystemConsole, + subSystemWindows +}; +enum termSvrAwarenessType { + termSvrAwareDefault, + termSvrAwareNo, + termSvrAwareYes +}; +enum toolSetType { + toolSetUtility, + toolSetMakefile, + toolSetLinker, + toolSetLibrarian, + toolSetAll +}; +enum TypeOfDebugger { + DbgNativeOnly, + DbgManagedOnly, + DbgMixed, + DbgAuto +}; +enum useOfATL { + useATLNotSet, + useATLStatic, + useATLDynamic +}; +enum useOfMfc { + useMfcStdWin, + useMfcStatic, + useMfcDynamic +}; +enum warningLevelOption { + warningLevelUnknown = -1, + warningLevel_0, + warningLevel_1, + warningLevel_2, + warningLevel_3, + warningLevel_4 +}; + +class VCToolBase { +protected: + // Functions + VCToolBase(){}; + virtual ~VCToolBase(){} + virtual bool parseOption( const char* option ) = 0; +public: + void parseOptions( TQStringList& options ) { + for ( TQStringList::ConstIterator it=options.begin(); (it!=options.end()); it++ ) + parseOption( (*it).latin1() ); + } +}; + +class VCConfiguration; +class VCProject; + +class VCCLCompilerTool : public VCToolBase +{ +public: + // Functions + VCCLCompilerTool(); + virtual ~VCCLCompilerTool(){} + bool parseOption( const char* option ); + + // Variables + TQStringList AdditionalIncludeDirectories; + TQStringList AdditionalOptions; + TQStringList AdditionalUsingDirectories; + TQString AssemblerListingLocation; + asmListingOption AssemblerOutput; + basicRuntimeCheckOption BasicRuntimeChecks; + browseInfoOption BrowseInformation; + TQString BrowseInformationFile; + triState BufferSecurityCheck; + callingConventionOption CallingConvention; + CompileAsOptions CompileAs; + compileAsManagedOptions CompileAsManaged; + triState CompileOnly; + debugOption DebugInformationFormat; + triState DefaultCharIsUnsigned; + triState Detect64BitPortabilityProblems; + triState DisableLanguageExtensions; + TQStringList DisableSpecificWarnings; + triState EnableFiberSafeOptimizations; + triState EnableFunctionLevelLinking; + triState EnableIntrinsicFunctions; + triState ExceptionHandling; + triState ExpandAttributedSource; + favorSizeOrSpeedOption FavorSizeOrSpeed; + triState ForceConformanceInForLoopScope; + TQStringList ForcedIncludeFiles; + TQStringList ForcedUsingFiles; + preprocessOption GeneratePreprocessedFile; + triState GlobalOptimizations; + triState IgnoreStandardIncludePath; + triState ImproveFloatingPointConsistency; + inlineExpansionOption InlineFunctionExpansion; + triState KeepComments; + triState MinimalRebuild; + TQString ObjectFile; + triState OmitFramePointers; + triState OpenMP; + optimizeOption Optimization; + ProcessorOptimizeOption OptimizeForProcessor; + triState OptimizeForWindowsApplication; + TQString OutputFile; + TQString PrecompiledHeaderFile; + TQString PrecompiledHeaderThrough; + TQStringList PreprocessorDefinitions; + TQString ProgramDataBaseFileName; + runtimeLibraryOption RuntimeLibrary; + triState RuntimeTypeInfo; + triState ShowIncludes; + triState SmallerTypeCheck; + triState StringPooling; + structMemberAlignOption StructMemberAlignment; + triState SuppressStartupBanner; + triState TreatWChar_tAsBuiltInType; + triState TurnOffAssemblyGeneration; + triState UndefineAllPreprocessorDefinitions; + TQStringList UndefinePreprocessorDefinitions; + pchOption UsePrecompiledHeader; + triState WarnAsError; + warningLevelOption WarningLevel; + triState WholeProgramOptimization; + VCConfiguration* config; +}; + +class VCLinkerTool : public VCToolBase +{ +public: + // Functions + VCLinkerTool(); + virtual ~VCLinkerTool(){} + bool parseOption( const char* option ); + + // Variables + TQStringList AdditionalDependencies; + TQStringList AdditionalLibraryDirectories; + TQStringList AdditionalOptions; + TQStringList AddModuleNamesToAssembly; + TQString BaseAddress; + TQStringList DelayLoadDLLs; + optFoldingType EnableCOMDATFolding; + TQString EntryPointSymbol; + TQStringList ForceSymbolReferences; + TQString FunctionOrder; + triState GenerateDebugInformation; + triState GenerateMapFile; + long HeapCommitSize; + long HeapReserveSize; + triState IgnoreAllDefaultLibraries; + TQStringList IgnoreDefaultLibraryNames; + triState IgnoreEmbeddedIDL; + triState IgnoreImportLibrary; + TQString ImportLibrary; + addressAwarenessType LargeAddressAware; + triState LinkDLL; + linkIncrementalType LinkIncremental; + triState LinkTimeCodeGeneration; + TQString LinkToManagedResourceFile; + triState MapExports; + TQString MapFileName; + triState MapLines; + TQString MergedIDLBaseFileName; + TQString MergeSections; // Should be list? + TQString MidlCommandFile; + TQString ModuleDefinitionFile; // Should be list? + optWin98Type OptimizeForWindows98; + optRefType OptimizeReferences; + TQString OutputFile; + TQString ProgramDatabaseFile; + triState RegisterOutput; + triState ResourceOnlyDLL; + triState SetChecksum; + linkProgressOption ShowProgress; + long StackCommitSize; + long StackReserveSize; + TQString StripPrivateSymbols; // Should be list? + subSystemOption SubSystem; + triState SupportUnloadOfDelayLoadedDLL; + triState SuppressStartupBanner; + triState SwapRunFromCD; + triState SwapRunFromNet; + machineTypeOption TargetMachine; + termSvrAwarenessType TerminalServerAware; + triState TurnOffAssemblyGeneration; + TQString TypeLibraryFile; + long TypeLibraryResourceID; + TQString Version; + VCConfiguration* config; +}; + +class VCMIDLTool : public VCToolBase +{ +public: + // Functions + VCMIDLTool(); + virtual ~VCMIDLTool(){} + bool parseOption( const char* option ); + + // Variables + TQStringList AdditionalIncludeDirectories; + TQStringList AdditionalOptions; + TQStringList CPreprocessOptions; + midlCharOption DefaultCharType; + TQString DLLDataFileName; // Should be list? + midlErrorCheckOption EnableErrorChecks; + triState ErrorCheckAllocations; + triState ErrorCheckBounds; + triState ErrorCheckEnumRange; + triState ErrorCheckRefPointers; + triState ErrorCheckStubData; + TQStringList FullIncludePath; + triState GenerateStublessProxies; + triState GenerateTypeLibrary; + TQString HeaderFileName; + triState IgnoreStandardIncludePath; + TQString InterfaceIdentifierFileName; + triState MkTypLibCompatible; + TQString OutputDirectory; + TQStringList PreprocessorDefinitions; + TQString ProxyFileName; + TQString RedirectOutputAndErrors; + midlStructMemberAlignOption StructMemberAlignment; + triState SuppressStartupBanner; + midlTargetEnvironment TargetEnvironment; + TQString TypeLibraryName; + TQStringList UndefinePreprocessorDefinitions; + triState ValidateParameters; + triState WarnAsError; + midlWarningLevelOption WarningLevel; + VCConfiguration* config; +}; + +class VCLibrarianTool : public VCToolBase +{ +public: + // Functions + VCLibrarianTool(); + virtual ~VCLibrarianTool(){} + bool parseOption( const char* ){ return FALSE; }; + + // Variables + TQStringList AdditionalDependencies; + TQStringList AdditionalLibraryDirectories; + TQStringList AdditionalOptions; + TQStringList ExportNamedFunctions; + TQStringList ForceSymbolReferences; + triState IgnoreAllDefaultLibraries; + TQStringList IgnoreDefaultLibraryNames; + TQString ModuleDefinitionFile; + TQString OutputFile; + triState SuppressStartupBanner; +}; + +class VCCustomBuildTool : public VCToolBase +{ +public: + // Functions + VCCustomBuildTool(); + virtual ~VCCustomBuildTool(){} + bool parseOption( const char* ){ return FALSE; }; + + // Variables + TQStringList AdditionalDependencies; + TQStringList CommandLine; + TQString Description; + TQStringList Outputs; + TQString ToolName; + TQString ToolPath; +}; + +class VCResourceCompilerTool : public VCToolBase +{ +public: + // Functions + VCResourceCompilerTool(); + virtual ~VCResourceCompilerTool(){} + bool parseOption( const char* ){ return FALSE; }; + + // Variables + TQStringList AdditionalIncludeDirectories; + TQStringList AdditionalOptions; + enumResourceLangID Culture; + TQStringList FullIncludePath; + triState IgnoreStandardIncludePath; + TQStringList PreprocessorDefinitions; + TQString ResourceOutputFileName; + linkProgressOption ShowProgress; + TQString ToolPath; +}; + +class VCEventTool : public VCToolBase +{ +protected: + // Functions + VCEventTool() : ExcludedFromBuild( unset ){}; + virtual ~VCEventTool(){} + bool parseOption( const char* ){ return FALSE; }; + +public: + // Variables + TQString CommandLine; + TQString Description; + triState ExcludedFromBuild; + TQString ToolName; + TQString ToolPath; +}; + +class VCPostBuildEventTool : public VCEventTool +{ +public: + VCPostBuildEventTool(); + ~VCPostBuildEventTool(){} +}; + +class VCPreBuildEventTool : public VCEventTool +{ +public: + VCPreBuildEventTool(); + ~VCPreBuildEventTool(){} +}; + +class VCPreLinkEventTool : public VCEventTool +{ +public: + VCPreLinkEventTool(); + ~VCPreLinkEventTool(){} +}; + +class VCConfiguration +{ +public: + // Functions + VCConfiguration(); + VCConfiguration(const VCConfiguration &other); + ~VCConfiguration() {} + + // Variables + triState ATLMinimizesCRunTimeLibraryUsage; + triState BuildBrowserInformation; + charSet CharacterSet; + ConfigurationTypes ConfigurationType; + TQString DeleteExtensionsOnClean; + TQString ImportLibrary; + TQString IntermediateDirectory; + TQString Name; + TQString OutputDirectory; + TQString PrimaryOutput; + TQString ProgramDatabase; + triState RegisterOutput; + useOfATL UseOfATL; + useOfMfc UseOfMfc; + triState WholeProgramOptimization; + + // XML sub-parts + VCCLCompilerTool compiler; + VCLinkerTool linker; + VCLibrarianTool librarian; + VCCustomBuildTool custom; + VCMIDLTool idl; + VCPostBuildEventTool postBuild; + VCPreBuildEventTool preBuild; + VCPreLinkEventTool preLink; + VCResourceCompilerTool resource; +}; + +class VcprojGenerator; +class VCFilter +{ +public: + // Functions + VCFilter(); + ~VCFilter(){} + void addMOCstage( TQTextStream &strm, TQString str ); + void addUICstage( TQTextStream &strm, TQString str ); + bool addIMGstage( TQTextStream &strm, TQString str ); + void modifyPCHstage( TQTextStream &strm, TQString str ); + bool addLexYaccStage( TQTextStream &strm, TQString str ); + + // Variables + TQString Name; + TQString Filter; + triState ParseFiles; + TQStringList Files; + VcprojGenerator* Project; + TQValueList<VCConfiguration> *Config; + customBuildCheck CustomBuild; + bool useCustomBuildTool; + VCCustomBuildTool CustomBuildTool; + bool useCompilerTool; + VCCLCompilerTool CompilerTool; + bool flat_files; +}; + +class VCProject +{ +public: + // Functions + VCProject(); + ~VCProject(){} + + // Variables + TQString Name; + TQString Version; + TQString ProjectGUID; + TQString SccProjectName; + TQString SccLocalPath; + TQString PlatformName; + + // XML sub-parts + TQValueList<VCConfiguration> Configuration; + VCFilter SourceFiles; + VCFilter HeaderFiles; + VCFilter MOCFiles; + VCFilter UICFiles; + VCFilter FormFiles; + VCFilter TranslationFiles; + VCFilter LexYaccFiles; + VCFilter ResourceFiles; +}; + +TQTextStream &operator<<( TQTextStream &, const VCCLCompilerTool & ); +TQTextStream &operator<<( TQTextStream &, const VCLinkerTool & ); +TQTextStream &operator<<( TQTextStream &, const VCMIDLTool & ); +TQTextStream &operator<<( TQTextStream &, const VCCustomBuildTool & ); +TQTextStream &operator<<( TQTextStream &, const VCLibrarianTool & ); +TQTextStream &operator<<( TQTextStream &, const VCResourceCompilerTool & ); +TQTextStream &operator<<( TQTextStream &, const VCEventTool & ); +TQTextStream &operator<<( TQTextStream &, const VCConfiguration & ); +TQTextStream &operator<<( TQTextStream &, VCFilter & ); +TQTextStream &operator<<( TQTextStream &, const VCProject & ); + +#endif //__MSVC_OBJECTMODEL_H__ |