Beispiel #1
0
 public static STBuildModuleType GetEngineModuleTypeBasedOnLocation(string ModuleName, STBuildModuleType ModuleType, string ModuleFileRelativeToEngineDirectory)
 {
     if (ModuleFileRelativeToEngineDirectory.IndexOf(STBuildModule.RuntimeFolder, StringComparison.InvariantCultureIgnoreCase) >= 0)
     {
         ModuleType = STBuildModuleType.Runtime;
     }
     else if (ModuleFileRelativeToEngineDirectory.IndexOf(STBuildModule.DeveloperFolder, StringComparison.InvariantCultureIgnoreCase) >= 0)
     {
         ModuleType = STBuildModuleType.Developer;
     }
     else if (ModuleFileRelativeToEngineDirectory.IndexOf(STBuildModule.EditorFolder, StringComparison.InvariantCultureIgnoreCase) >= 0)
     {
         ModuleType = STBuildModuleType.Editor;
     }
     else if (ModuleFileRelativeToEngineDirectory.IndexOf(STBuildModule.ProgramsFolder, StringComparison.InvariantCultureIgnoreCase) >= 0)
     {
         ModuleType = STBuildModuleType.Program;
     }
     return ModuleType;
 }
Beispiel #2
0
        public STBuildModule(
            STBuildTarget InTarget,
            string InName,
            STBuildModuleType InType,
            string InModuleDirectory,
            string InOutputDirectory,
            bool? InIsRedistributableOverride,
            IEnumerable<string> InPublicDefinitions = null,
            IEnumerable<string> InPublicIncludePaths = null,
            IEnumerable<string> InPublicSystemIncludePaths = null,
            IEnumerable<string> InPublicLibraryPaths = null,
            IEnumerable<string> InPublicAdditionalLibraries = null,
            IEnumerable<string> InPublicFrameworks = null,
            IEnumerable<string> InPublicWeakFrameworks = null,
            IEnumerable<STBuildFramework> InPublicAdditionalFrameworks = null,
            IEnumerable<string> InPublicAdditionalShadowFiles = null,
            IEnumerable<STBuildBundleResource> InPublicAdditionalBundleResources = null,
            IEnumerable<string> InPublicIncludePathModuleNames = null,
            IEnumerable<string> InPublicDependencyModuleNames = null,
            IEnumerable<string> InPublicDelayLoadDLLs = null,
            IEnumerable<string> InPrivateIncludePaths = null,
            IEnumerable<string> InPrivateIncludePathModuleNames = null,
            IEnumerable<string> InPrivateDependencyModuleNames = null,
            IEnumerable<string> InCircularlyReferencedDependentModules = null,
            IEnumerable<string> InDynamicallyLoadedModuleNames = null,
            IEnumerable<string> InPlatformSpecificDynamicallyLoadedModuleNames = null
            )
        {
            Target = InTarget;
            Name = InName;
            Type = InType;
            ModuleDirectory = InModuleDirectory;
            OutputDirectory = InOutputDirectory;
            PublicDefinitions = HashSetFromOptionalEnumerableStringParameter(InPublicDefinitions);
            PublicIncludePaths = HashSetFromOptionalEnumerableStringParameter(InPublicIncludePaths);
            PublicSystemIncludePaths = HashSetFromOptionalEnumerableStringParameter(InPublicSystemIncludePaths);
            PublicLibraryPaths = HashSetFromOptionalEnumerableStringParameter(InPublicLibraryPaths);
            PublicAdditionalLibraries = HashSetFromOptionalEnumerableStringParameter(InPublicAdditionalLibraries);
            PublicFrameworks = HashSetFromOptionalEnumerableStringParameter(InPublicFrameworks);
            PublicWeakFrameworks = HashSetFromOptionalEnumerableStringParameter(InPublicWeakFrameworks);
            PublicAdditionalFrameworks = InPublicAdditionalFrameworks == null ? new HashSet<STBuildFramework>() : new HashSet<STBuildFramework>(InPublicAdditionalFrameworks);
            PublicAdditionalShadowFiles = HashSetFromOptionalEnumerableStringParameter(InPublicAdditionalShadowFiles);
            PublicAdditionalBundleResources = InPublicAdditionalBundleResources == null ? new HashSet<STBuildBundleResource>() : new HashSet<STBuildBundleResource>(InPublicAdditionalBundleResources);
            PublicIncludePathModuleNames = HashSetFromOptionalEnumerableStringParameter(InPublicIncludePathModuleNames);
            PublicDependencyModuleNames = HashSetFromOptionalEnumerableStringParameter(InPublicDependencyModuleNames);
            PublicDelayLoadDLLs = HashSetFromOptionalEnumerableStringParameter(InPublicDelayLoadDLLs);
            PrivateIncludePaths = HashSetFromOptionalEnumerableStringParameter(InPrivateIncludePaths);
            PrivateIncludePathModuleNames = HashSetFromOptionalEnumerableStringParameter(InPrivateIncludePathModuleNames);
            PrivateDependencyModuleNames = HashSetFromOptionalEnumerableStringParameter(InPrivateDependencyModuleNames);
            CircularlyReferencedDependentModules = new HashSet<string>(HashSetFromOptionalEnumerableStringParameter(InCircularlyReferencedDependentModules));
            DynamicallyLoadedModuleNames = HashSetFromOptionalEnumerableStringParameter(InDynamicallyLoadedModuleNames);
            PlatformSpecificDynamicallyLoadedModuleNames = HashSetFromOptionalEnumerableStringParameter(InPlatformSpecificDynamicallyLoadedModuleNames);
            IsRedistributableOverride = InIsRedistributableOverride;

            Target.RegisterModule(this);
        }
Beispiel #3
0
 public STBuildModuleCPPCLR(
     STBuildTarget InTarget,
     string InName,
     STBuildModuleType InType,
     string InModuleDirectory,
     string InOutputDirectory,
     bool? InIsRedistributableOverride,
     IntelliSenseGatherer InIntelliSenseGatherer,
     IEnumerable<FileItem> InSourceFiles,
     IEnumerable<string> InPublicIncludePaths,
     IEnumerable<string> InPublicSystemIncludePaths,
     IEnumerable<string> InDefinitions,
     IEnumerable<string> InPrivateAssemblyReferences,
     IEnumerable<string> InPublicIncludePathModuleNames,
     IEnumerable<string> InPublicDependencyModuleNames,
     IEnumerable<string> InPublicDelayLoadDLLs,
     IEnumerable<string> InPublicAdditionalLibraries,
     IEnumerable<string> InPublicFrameworks,
     IEnumerable<string> InPublicWeakFrameworks,
     IEnumerable<STBuildFramework> InPublicAdditionalFrameworks,
     IEnumerable<string> InPublicAdditionalShadowFiles,
     IEnumerable<STBuildBundleResource> InPublicAdditionalBundleResources,
     IEnumerable<string> InPrivateIncludePaths,
     IEnumerable<string> InPrivateIncludePathModuleNames,
     IEnumerable<string> InPrivateDependencyModuleNames,
     IEnumerable<string> InCircularlyReferencedDependentModules,
     IEnumerable<string> InDynamicallyLoadedModuleNames,
     IEnumerable<string> InPlatformSpecificDynamicallyLoadedModuleNames,
     ModuleRules.CodeOptimization InOptimizeCode,
     bool InAllowSharedPCH,
     string InSharedPCHHeaderFile,
     bool InUseRTTI,
     bool InEnableBufferSecurityChecks,
     bool InFasterWithoutUnity,
     int InMinFilesUsingPrecompiledHeaderOverride,
     bool InEnableExceptions,
     bool bInBuildSourceFiles
     )
     : base(InTarget, InName, InType, InModuleDirectory, InOutputDirectory, InIsRedistributableOverride, InIntelliSenseGatherer,
     InSourceFiles, InPublicIncludePaths, InPublicSystemIncludePaths, InDefinitions,
     InPublicIncludePathModuleNames, InPublicDependencyModuleNames, InPublicDelayLoadDLLs, InPublicAdditionalLibraries, InPublicFrameworks, InPublicWeakFrameworks, InPublicAdditionalFrameworks, InPublicAdditionalShadowFiles, InPublicAdditionalBundleResources,
     InPrivateIncludePaths, InPrivateIncludePathModuleNames, InPrivateDependencyModuleNames,
     InCircularlyReferencedDependentModules, InDynamicallyLoadedModuleNames, InPlatformSpecificDynamicallyLoadedModuleNames, InOptimizeCode,
     InAllowSharedPCH, InSharedPCHHeaderFile, InUseRTTI, InEnableBufferSecurityChecks, InFasterWithoutUnity, InMinFilesUsingPrecompiledHeaderOverride,
     InEnableExceptions, bInBuildSourceFiles)
 {
     PrivateAssemblyReferences = HashSetFromOptionalEnumerableStringParameter(InPrivateAssemblyReferences);
 }
Beispiel #4
0
 public STBuildExternalModule(
     STBuildTarget InTarget,
     STBuildModuleType InType,
     string InName,
     string InModuleDirectory,
     string InOutputDirectory,
     bool? InIsRedistributableOverride,
     IEnumerable<string> InPublicDefinitions = null,
     IEnumerable<string> InPublicIncludePaths = null,
     IEnumerable<string> InPublicSystemIncludePaths = null,
     IEnumerable<string> InPublicLibraryPaths = null,
     IEnumerable<string> InPublicAdditionalLibraries = null,
     IEnumerable<string> InPublicFrameworks = null,
     IEnumerable<string> InPublicWeakFrameworks = null,
     IEnumerable<STBuildFramework> InPublicAdditionalFrameworks = null,
     IEnumerable<string> InPublicAdditionalShadowFiles = null,
     IEnumerable<STBuildBundleResource> InPublicAdditionalBundleResources = null,
     IEnumerable<string> InPublicDependencyModuleNames = null,
     IEnumerable<string> InPublicDelayLoadDLLs = null		// Delay loaded DLLs that should be setup when including this module
     )
     : base(InTarget: InTarget,
         InType: InType,
         InName: InName,
         InModuleDirectory: InModuleDirectory,
         InOutputDirectory: InOutputDirectory,
         InIsRedistributableOverride: InIsRedistributableOverride,
         InPublicDefinitions: InPublicDefinitions,
         InPublicIncludePaths: InPublicIncludePaths,
         InPublicSystemIncludePaths: InPublicSystemIncludePaths,
         InPublicLibraryPaths: InPublicLibraryPaths,
         InPublicAdditionalLibraries: InPublicAdditionalLibraries,
         InPublicFrameworks: InPublicFrameworks,
         InPublicWeakFrameworks: InPublicWeakFrameworks,
         InPublicAdditionalFrameworks: InPublicAdditionalFrameworks,
         InPublicAdditionalShadowFiles: InPublicAdditionalShadowFiles,
         InPublicAdditionalBundleResources: InPublicAdditionalBundleResources,
         InPublicDependencyModuleNames: InPublicDependencyModuleNames,
         InPublicDelayLoadDLLs: InPublicDelayLoadDLLs)
 {
     bIncludedInTarget = true;
 }
Beispiel #5
0
        public STBuildModuleCPP(
            STBuildTarget InTarget,
            string InName,
            STBuildModuleType InType,
            string InModuleDirectory,
            string InOutputDirectory,
            bool? InIsRedistributableOverride,
            IntelliSenseGatherer InIntelliSenseGatherer,
            IEnumerable<FileItem> InSourceFiles,
            IEnumerable<string> InPublicIncludePaths,
            IEnumerable<string> InPublicSystemIncludePaths,
            IEnumerable<string> InDefinitions,
            IEnumerable<string> InPublicIncludePathModuleNames,
            IEnumerable<string> InPublicDependencyModuleNames,
            IEnumerable<string> InPublicDelayLoadDLLs,
            IEnumerable<string> InPublicAdditionalLibraries,
            IEnumerable<string> InPublicFrameworks,
            IEnumerable<string> InPublicWeakFrameworks,
            IEnumerable<STBuildFramework> InPublicAdditionalFrameworks,
            IEnumerable<string> InPublicAdditionalShadowFiles,
            IEnumerable<STBuildBundleResource> InPublicAdditionalBundleResources,
            IEnumerable<string> InPrivateIncludePaths,
            IEnumerable<string> InPrivateIncludePathModuleNames,
            IEnumerable<string> InPrivateDependencyModuleNames,
            IEnumerable<string> InCircularlyReferencedDependentModules,
            IEnumerable<string> InDynamicallyLoadedModuleNames,
            IEnumerable<string> InPlatformSpecificDynamicallyLoadedModuleNames,
            ModuleRules.CodeOptimization InOptimizeCode,
            bool InAllowSharedPCH,
            string InSharedPCHHeaderFile,
            bool InUseRTTI,
            bool InEnableBufferSecurityChecks,
            bool InFasterWithoutUnity,
            int InMinFilesUsingPrecompiledHeaderOverride,
            bool InEnableExceptions,
            bool bInBuildSourceFiles
            )
            : base(InTarget,
                    InName,
                    InType,
                    InModuleDirectory,
                    InOutputDirectory,
                    InIsRedistributableOverride,
                    InDefinitions,
                    InPublicIncludePaths,
                    InPublicSystemIncludePaths,
                    null,
                    InPublicAdditionalLibraries,
                    InPublicFrameworks,
                    InPublicWeakFrameworks,
                    InPublicAdditionalFrameworks,
                    InPublicAdditionalShadowFiles,
                    InPublicAdditionalBundleResources,
                    InPublicIncludePathModuleNames,
                    InPublicDependencyModuleNames,
                    InPublicDelayLoadDLLs,
                    InPrivateIncludePaths,
                    InPrivateIncludePathModuleNames,
                    InPrivateDependencyModuleNames,
                    InCircularlyReferencedDependentModules,
                    InDynamicallyLoadedModuleNames,
                    InPlatformSpecificDynamicallyLoadedModuleNames)
        {
            IntelliSenseGatherer = InIntelliSenseGatherer;

            CategorizeSourceFiles(InSourceFiles, SourceFilesFound);
            if (bInBuildSourceFiles)
            {
                CategorizeSourceFiles(InSourceFiles, SourceFilesToBuild);
            }

            Definitions = HashSetFromOptionalEnumerableStringParameter(InDefinitions);
            foreach (var Def in Definitions)
            {
                Log.TraceVerbose("Compile Env {0}: {1}", Name, Def);
            }
            OptimizeCode                           = InOptimizeCode;
            bAllowSharedPCH                        = InAllowSharedPCH;
            SharedPCHHeaderFile                    = InSharedPCHHeaderFile;
            bUseRTTI                               = InUseRTTI;
            bEnableBufferSecurityChecks            = InEnableBufferSecurityChecks;
            bFasterWithoutUnity                    = InFasterWithoutUnity;
            MinFilesUsingPrecompiledHeaderOverride = InMinFilesUsingPrecompiledHeaderOverride;
            bEnableExceptions                      = InEnableExceptions;
        }
Beispiel #6
0
        protected virtual STBuildModule InstantiateModule(
            ModuleRules RulesObject,
            string ModuleName,
            STBuildModuleType ModuleType,
            string ModuleDirectory,
            string ApplicationOutputPath,
            IntelliSenseGatherer IntelliSenseGatherer,
            List<FileItem> ModuleSourceFiles,
            bool bBuildSourceFiles)
        {
            switch (RulesObject.Type)
            {
                case ModuleRules.ModuleType.CPlusPlus:
                    return new STBuildModuleCPP(
                            InTarget: this,
                            InName: ModuleName,
                            InType: ModuleType,
                            InModuleDirectory: ModuleDirectory,
                            InOutputDirectory: ApplicationOutputPath,
                            InIsRedistributableOverride: RulesObject.IsRedistributableOverride,
                            InIntelliSenseGatherer: IntelliSenseGatherer,
                            InSourceFiles: ModuleSourceFiles,
                            InPublicSystemIncludePaths: RulesObject.PublicSystemIncludePaths,
                            InPublicIncludePaths: RulesObject.PublicIncludePaths,
                            InDefinitions: RulesObject.Definitions,
                            InPublicIncludePathModuleNames: RulesObject.PublicIncludePathModuleNames,
                            InPublicDependencyModuleNames: RulesObject.PublicDependencyModuleNames,
                            InPublicDelayLoadDLLs: RulesObject.PublicDelayLoadDLLs,
                            InPublicAdditionalLibraries: RulesObject.PublicAdditionalLibraries,
                            InPublicFrameworks: RulesObject.PublicFrameworks,
                            InPublicWeakFrameworks: RulesObject.PublicWeakFrameworks,
                            InPublicAdditionalFrameworks: RulesObject.PublicAdditionalFrameworks,
                            InPublicAdditionalShadowFiles: RulesObject.PublicAdditionalShadowFiles,
                            InPublicAdditionalBundleResources: RulesObject.AdditionalBundleResources,
                            InPrivateIncludePaths: RulesObject.PrivateIncludePaths,
                            InPrivateIncludePathModuleNames: RulesObject.PrivateIncludePathModuleNames,
                            InPrivateDependencyModuleNames: RulesObject.PrivateDependencyModuleNames,
                            InCircularlyReferencedDependentModules: RulesObject.CircularlyReferencedDependentModules,
                            InDynamicallyLoadedModuleNames: RulesObject.DynamicallyLoadedModuleNames,
                            InPlatformSpecificDynamicallyLoadedModuleNames: RulesObject.PlatformSpecificDynamicallyLoadedModuleNames,
                            InOptimizeCode: RulesObject.OptimizeCode,
                            InAllowSharedPCH: (RulesObject.PCHUsage == ModuleRules.PCHUsageMode.NoSharedPCHs) ? false : true,
                            InSharedPCHHeaderFile: RulesObject.SharedPCHHeaderFile,
                            InUseRTTI: RulesObject.bUseRTTI,
                            InEnableBufferSecurityChecks: RulesObject.bEnableBufferSecurityChecks,
                            InFasterWithoutUnity: RulesObject.bFasterWithoutUnity,
                            InMinFilesUsingPrecompiledHeaderOverride: RulesObject.MinFilesUsingPrecompiledHeaderOverride,
                            InEnableExceptions: RulesObject.bEnableExceptions,
                            bInBuildSourceFiles: bBuildSourceFiles
                        );

                case ModuleRules.ModuleType.CPlusPlusCLR:
                    return new STBuildModuleCPPCLR(
                            InTarget: this,
                            InName: ModuleName,
                            InType: ModuleType,
                            InModuleDirectory: ModuleDirectory,
                            InOutputDirectory: ApplicationOutputPath,
                            InIsRedistributableOverride: RulesObject.IsRedistributableOverride,
                            InIntelliSenseGatherer: IntelliSenseGatherer,
                            InSourceFiles: ModuleSourceFiles,
                            InDefinitions: RulesObject.Definitions,
                            InPublicSystemIncludePaths: RulesObject.PublicSystemIncludePaths,
                            InPublicIncludePaths: RulesObject.PublicIncludePaths,
                            InPublicIncludePathModuleNames: RulesObject.PublicIncludePathModuleNames,
                            InPublicDependencyModuleNames: RulesObject.PublicDependencyModuleNames,
                            InPublicDelayLoadDLLs: RulesObject.PublicDelayLoadDLLs,
                            InPublicAdditionalLibraries: RulesObject.PublicAdditionalLibraries,
                            InPublicFrameworks: RulesObject.PublicFrameworks,
                            InPublicWeakFrameworks: RulesObject.PublicWeakFrameworks,
                            InPublicAdditionalFrameworks: RulesObject.PublicAdditionalFrameworks,
                            InPublicAdditionalShadowFiles: RulesObject.PublicAdditionalShadowFiles,
                            InPublicAdditionalBundleResources: RulesObject.AdditionalBundleResources,
                            InPrivateIncludePaths: RulesObject.PrivateIncludePaths,
                            InPrivateIncludePathModuleNames: RulesObject.PrivateIncludePathModuleNames,
                            InPrivateDependencyModuleNames: RulesObject.PrivateDependencyModuleNames,
                            InPrivateAssemblyReferences: RulesObject.PrivateAssemblyReferences,
                            InCircularlyReferencedDependentModules: RulesObject.CircularlyReferencedDependentModules,
                            InDynamicallyLoadedModuleNames: RulesObject.DynamicallyLoadedModuleNames,
                            InPlatformSpecificDynamicallyLoadedModuleNames: RulesObject.PlatformSpecificDynamicallyLoadedModuleNames,
                            InOptimizeCode: RulesObject.OptimizeCode,
                            InAllowSharedPCH: (RulesObject.PCHUsage == ModuleRules.PCHUsageMode.NoSharedPCHs) ? false : true,
                            InSharedPCHHeaderFile: RulesObject.SharedPCHHeaderFile,
                            InUseRTTI: RulesObject.bUseRTTI,
                            InEnableBufferSecurityChecks: RulesObject.bEnableBufferSecurityChecks,
                            InFasterWithoutUnity: RulesObject.bFasterWithoutUnity,
                            InMinFilesUsingPrecompiledHeaderOverride: RulesObject.MinFilesUsingPrecompiledHeaderOverride,
                            InEnableExceptions: RulesObject.bEnableExceptions,
                            bInBuildSourceFiles: bBuildSourceFiles
                        );

                case ModuleRules.ModuleType.External:
                    return new STBuildExternalModule(
                            InTarget: this,
                            InName: ModuleName,
                            InType: ModuleType,
                            InModuleDirectory: ModuleDirectory,
                            InOutputDirectory: ApplicationOutputPath,
                            InIsRedistributableOverride: RulesObject.IsRedistributableOverride,
                            InPublicDefinitions: RulesObject.Definitions,
                            InPublicSystemIncludePaths: RulesObject.PublicSystemIncludePaths,
                            InPublicIncludePaths: RulesObject.PublicIncludePaths,
                            InPublicLibraryPaths: RulesObject.PublicLibraryPaths,
                            InPublicAdditionalLibraries: RulesObject.PublicAdditionalLibraries,
                            InPublicFrameworks: RulesObject.PublicFrameworks,
                            InPublicWeakFrameworks: RulesObject.PublicWeakFrameworks,
                            InPublicAdditionalFrameworks: RulesObject.PublicAdditionalFrameworks,
                            InPublicAdditionalShadowFiles: RulesObject.PublicAdditionalShadowFiles,
                            InPublicAdditionalBundleResources: RulesObject.AdditionalBundleResources,
                            InPublicDependencyModuleNames: RulesObject.PublicDependencyModuleNames,
                            InPublicDelayLoadDLLs: RulesObject.PublicDelayLoadDLLs
                        );

                default:
                    return null;
            }
        }