예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }