/// <summary> /// Determines the distribution level of a module based on its directory and includes. /// </summary> /// <param name="ProjectDir">The project directory, if available</param> /// <returns>Map of the restricted folder types to the first found instance</returns> public Dictionary <RestrictedFolder, DirectoryReference> FindRestrictedFolderReferences(DirectoryReference ProjectDir) { Dictionary <RestrictedFolder, DirectoryReference> References = new Dictionary <RestrictedFolder, DirectoryReference>(); if (!Rules.bOutputPubliclyDistributable) { // Find all the directories that this module references HashSet <DirectoryReference> ReferencedDirs = new HashSet <DirectoryReference>(); GetReferencedDirectories(ReferencedDirs); if (Name == "WinDualShock") { Console.Write(""); } // Remove all the whitelisted folders ReferencedDirs.ExceptWith(WhitelistRestrictedFolders); ReferencedDirs.ExceptWith(PublicDependencyModules.SelectMany(x => x.WhitelistRestrictedFolders)); ReferencedDirs.ExceptWith(PrivateDependencyModules.SelectMany(x => x.WhitelistRestrictedFolders)); // Add flags for each of them foreach (DirectoryReference ReferencedDir in ReferencedDirs) { // Find the base directory containing this reference DirectoryReference BaseDir; if (ReferencedDir.IsUnderDirectory(UnrealBuildTool.EngineDirectory)) { BaseDir = UnrealBuildTool.EngineDirectory; } else if (ProjectDir != null && ReferencedDir.IsUnderDirectory(ProjectDir)) { BaseDir = ProjectDir; } else { continue; } // Add references to each of the restricted folders List <RestrictedFolder> Folders = RestrictedFolders.FindRestrictedFolders(BaseDir, ReferencedDir); foreach (RestrictedFolder Folder in Folders) { if (!References.ContainsKey(Folder)) { References.Add(Folder, ReferencedDir); } } } } return(References); }
/// <summary> /// Determines the distribution level of a module based on its directory and includes. /// </summary> /// <param name="ProjectDir">The project directory, if available</param> /// <returns>Map of the restricted folder types to the first found instance</returns> public Dictionary <RestrictedFolder, DirectoryReference> FindRestrictedFolderReferences(DirectoryReference ProjectDir) { Dictionary <RestrictedFolder, DirectoryReference> References = new Dictionary <RestrictedFolder, DirectoryReference>(); if (!Rules.bLegalToDistributeObjectCode) { // Find all the directories that this module references HashSet <DirectoryReference> ReferencedDirs = new HashSet <DirectoryReference>(); GetReferencedDirectories(ReferencedDirs); // Remove all the whitelisted folders ReferencedDirs.ExceptWith(WhitelistRestrictedFolders); ReferencedDirs.ExceptWith(PublicDependencyModules.SelectMany(x => x.WhitelistRestrictedFolders)); ReferencedDirs.ExceptWith(PrivateDependencyModules.SelectMany(x => x.WhitelistRestrictedFolders)); // Add flags for each of them foreach (DirectoryReference ReferencedDir in ReferencedDirs) { // Find the base directory containing this reference DirectoryReference BaseDir; // @todo platplug does this need to check platform extension engine directories? what are ReferencedDir's here? if (ReferencedDir.IsUnderDirectory(UnrealBuildTool.EngineDirectory)) { BaseDir = UnrealBuildTool.EngineDirectory; } else if (ProjectDir != null && ReferencedDir.IsUnderDirectory(ProjectDir)) { BaseDir = ProjectDir; } else { continue; } // Add references to each of the restricted folders List <RestrictedFolder> Folders = RestrictedFolders.FindRestrictedFolders(BaseDir, ReferencedDir); foreach (RestrictedFolder Folder in Folders) { if (!References.ContainsKey(Folder)) { References.Add(Folder, ReferencedDir); } } } } return(References); }