Ejemplo n.º 1
0
 /// <summary>
 /// Constructor. Reads a makefile from disk.
 /// </summary>
 /// <param name="Reader">The archive to read from</param>
 /// <param name="LastWriteTimeUtc">Last modified time for the makefile</param>
 public TargetMakefile(BinaryArchiveReader Reader, DateTime LastWriteTimeUtc)
 {
     CreateTimeUtc                = new DateTime(Reader.ReadLong(), DateTimeKind.Utc);
     ModifiedTimeUtc              = LastWriteTimeUtc;
     Diagnostics                  = Reader.ReadList(() => Reader.ReadString());
     ExternalMetadata             = Reader.ReadString();
     ExecutableFile               = Reader.ReadFileReference();
     ReceiptFile                  = Reader.ReadFileReference();
     ProjectIntermediateDirectory = Reader.ReadDirectoryReference();
     TargetType              = (TargetType)Reader.ReadInt();
     ConfigValueTracker      = new ConfigValueTracker(Reader);
     bDeployAfterCompile     = Reader.ReadBool();
     bHasProjectScriptPlugin = Reader.ReadBool();
     AdditionalArguments     = Reader.ReadArray(() => Reader.ReadString());
     PreBuildScripts         = Reader.ReadArray(() => Reader.ReadFileReference());
     Actions = Reader.ReadList(() => new Action(Reader));
     EnvironmentVariables    = Reader.ReadList(() => Tuple.Create(Reader.ReadString(), Reader.ReadString()));
     OutputItems             = Reader.ReadList(() => Reader.ReadFileItem());
     ModuleNameToOutputItems = Reader.ReadDictionary(() => Reader.ReadString(), () => Reader.ReadArray(() => Reader.ReadFileItem()), StringComparer.OrdinalIgnoreCase);
     HotReloadModuleNames    = Reader.ReadHashSet(() => Reader.ReadString(), StringComparer.OrdinalIgnoreCase);
     SourceDirectories       = Reader.ReadList(() => Reader.ReadDirectoryItem());
     DirectoryToSourceFiles  = Reader.ReadDictionary(() => Reader.ReadDirectoryItem(), () => Reader.ReadArray(() => Reader.ReadFileItem()));
     WorkingSet = Reader.ReadHashSet(() => Reader.ReadFileItem());
     CandidatesForWorkingSet = Reader.ReadHashSet(() => Reader.ReadFileItem());
     UObjectModules          = Reader.ReadList(() => new UHTModuleInfo(Reader));
     UObjectModuleHeaders    = Reader.ReadList(() => new UHTModuleHeaderInfo(Reader));
     PluginFiles             = Reader.ReadHashSet(() => Reader.ReadFileItem());
     ExternalDependencies    = Reader.ReadHashSet(() => Reader.ReadFileItem());
     InternalDependencies    = Reader.ReadHashSet(() => Reader.ReadFileItem());
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="ExternalMetadata">External build metadata from the platform</param>
 /// <param name="ExecutableFile">Path to the executable or primary output binary for this target</param>
 /// <param name="ReceiptFile">Path to the receipt file</param>
 /// <param name="ProjectIntermediateDirectory">Path to the project intermediate directory</param>
 /// <param name="TargetType">The type of target</param>
 /// <param name="ConfigValueTracker">Set of dependencies on config files</param>
 /// <param name="bDeployAfterCompile">Whether to deploy the target after compiling</param>
 /// <param name="bHasProjectScriptPlugin">Whether the target has a project script plugin</param>
 public TargetMakefile(string ExternalMetadata, FileReference ExecutableFile, FileReference ReceiptFile, DirectoryReference ProjectIntermediateDirectory, TargetType TargetType, ConfigValueTracker ConfigValueTracker, bool bDeployAfterCompile, bool bHasProjectScriptPlugin)
 {
     this.CreateTimeUtc                = UnrealBuildTool.StartTimeUtc;
     this.ModifiedTimeUtc              = CreateTimeUtc;
     this.Diagnostics                  = new List <string>();
     this.ExternalMetadata             = ExternalMetadata;
     this.ExecutableFile               = ExecutableFile;
     this.ReceiptFile                  = ReceiptFile;
     this.ProjectIntermediateDirectory = ProjectIntermediateDirectory;
     this.TargetType              = TargetType;
     this.ConfigValueTracker      = ConfigValueTracker;
     this.bDeployAfterCompile     = bDeployAfterCompile;
     this.bHasProjectScriptPlugin = bHasProjectScriptPlugin;
     this.Actions                 = new List <Action>();
     this.OutputItems             = new List <FileItem>();
     this.ModuleNameToOutputItems = new Dictionary <string, FileItem[]>(StringComparer.OrdinalIgnoreCase);
     this.HotReloadModuleNames    = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
     this.SourceDirectories       = new List <DirectoryItem>();
     this.DirectoryToSourceFiles  = new Dictionary <DirectoryItem, FileItem[]>();
     this.WorkingSet              = new HashSet <FileItem>();
     this.CandidatesForWorkingSet = new HashSet <FileItem>();
     this.UObjectModules          = new List <UHTModuleInfo>();
     this.UObjectModuleHeaders    = new List <UHTModuleHeaderInfo>();
     this.PluginFiles             = new HashSet <FileItem>();
     this.ExternalDependencies    = new HashSet <FileItem>();
     this.InternalDependencies    = new HashSet <FileItem>();
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Read config settings for the given object
        /// </summary>
        /// <param name="ProjectDir">Path to the project directory</param>
        /// <param name="Platform">The platform being built</param>
        /// <param name="TargetObject">Object to receive the settings</param>
        /// <param name="Tracker">Tracks the set of config values that were retrieved. May be null.</param>
        internal static void ReadSettings(DirectoryReference ProjectDir, UnrealTargetPlatform Platform, object TargetObject, ConfigValueTracker Tracker)
        {
            List <ConfigField> Fields = FindConfigFieldsForType(TargetObject.GetType());

            foreach (ConfigField Field in Fields)
            {
                // Read the hierarchy listed
                ConfigHierarchy Hierarchy = ReadHierarchy(Field.Attribute.ConfigType, ProjectDir, Platform);

                // Get the key name
                string KeyName = Field.Attribute.KeyName ?? Field.FieldInfo.Name;

                // Get the value(s) associated with this key
                IReadOnlyList <string> Values;
                Hierarchy.TryGetValues(Field.Attribute.SectionName, KeyName, out Values);

                // Parse the values from the config files and update the target object
                if (Field.AddElement == null)
                {
                    if (Values != null && Values.Count == 1)
                    {
                        object Value;
                        if (TryParseValue(Values[0], Field.FieldInfo.FieldType, out Value))
                        {
                            Field.FieldInfo.SetValue(TargetObject, Value);
                        }
                    }
                }
                else
                {
                    if (Values != null)
                    {
                        foreach (string Item in Values)
                        {
                            object Value;
                            if (TryParseValue(Item, Field.ElementType, out Value))
                            {
                                Field.AddElement(TargetObject, Value);
                            }
                        }
                    }
                }

                // Save the dependency
                if (Tracker != null)
                {
                    Tracker.Add(Field.Attribute.ConfigType, ProjectDir, Platform, Field.Attribute.SectionName, KeyName, Values);
                }
            }
        }