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; }
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); }
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); }
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; }
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; }
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; } }