Example #1
0
    static void AddPluginToAgenda(UE4Build.BuildAgenda Agenda, string PluginFileName, PluginDescriptor Plugin, string TargetName, TargetRules.TargetType TargetType, UnrealTargetPlatform Platform, UnrealTargetConfiguration Configuration, List <string> ReceiptFileNames, string InAdditionalArgs)
    {
        // Find a list of modules that need to be built for this plugin
        List <string> ModuleNames = new List <string>();

        foreach (ModuleDescriptor Module in Plugin.Modules)
        {
            if (Module.IsCompiledInConfiguration(Platform, TargetType))
            {
                ModuleNames.Add(Module.Name);
            }
        }

        // Add these modules to the build agenda
        if (ModuleNames.Count > 0)
        {
            string Arguments = String.Format("-plugin {0}", CommandUtils.MakePathSafeToUseWithCommandLine(PluginFileName));
            foreach (string ModuleName in ModuleNames)
            {
                Arguments += String.Format(" -module {0}", ModuleName);
            }

            string ReceiptFileName = BuildReceipt.GetDefaultPath(Path.GetDirectoryName(PluginFileName), TargetName, Platform, Configuration, "");
            Arguments += String.Format(" -receipt {0}", CommandUtils.MakePathSafeToUseWithCommandLine(ReceiptFileName));
            ReceiptFileNames.Add(ReceiptFileName);

            if (!String.IsNullOrEmpty(InAdditionalArgs))
            {
                Arguments += InAdditionalArgs;
            }

            Agenda.AddTarget(TargetName, Platform, Configuration, InAddArgs: Arguments);
        }
    }
Example #2
0
    static List <BuildProduct> GetBuildProductsFromReceipts(List <string> ReceiptFileNames)
    {
        List <BuildProduct> BuildProducts = new List <BuildProduct>();

        foreach (string ReceiptFileName in ReceiptFileNames)
        {
            BuildReceipt Receipt = BuildReceipt.Read(ReceiptFileName);
            BuildProducts.AddRange(Receipt.BuildProducts);
        }
        return(BuildProducts);
    }
Example #3
0
    public void StageRuntimeDependenciesFromReceipt(BuildReceipt Receipt)
    {
        // Also stage any additional runtime dependencies, like ThirdParty DLLs
        foreach (RuntimeDependency RuntimeDependency in Receipt.RuntimeDependencies)
        {
            // allow missing files if needed
            if (Receipt.bRequireDependenciesToExist == false && File.Exists(RuntimeDependency.Path) == false)
            {
                continue;
            }

            StageFile(StagedFileType.NonUFS, RuntimeDependency.Path, RuntimeDependency.StagePath);
        }
    }
Example #4
0
    public void StageBuildProductsFromReceipt(BuildReceipt Receipt)
    {
        // Stage all the build products needed at runtime
        foreach (BuildProduct BuildProduct in Receipt.BuildProducts)
        {
            // allow missing files if needed
            if (Receipt.bRequireDependenciesToExist == false && File.Exists(BuildProduct.Path) == false)
            {
                continue;
            }

            if (BuildProduct.Type == BuildProductType.Executable || BuildProduct.Type == BuildProductType.DynamicLibrary || BuildProduct.Type == BuildProductType.RequiredResource)
            {
                StageFile(StagedFileType.NonUFS, BuildProduct.Path);
            }
            else if (BuildProduct.Type == BuildProductType.SymbolFile)
            {
                StageFile(StagedFileType.DebugNonUFS, BuildProduct.Path);
            }
        }
    }
Example #5
0
		private List<string> CollectPluginDataPaths(BuildReceipt Receipt)
		{
			List<string> PluginExtras = new List<string>();
			if (Receipt == null)
			{
				Log.TraceInformation("Receipt is NULL");
				return PluginExtras;
			}

			// collect plugin extra data paths from target receipt
			var Results = Receipt.AdditionalProperties.Where(x => x.Name == "AndroidPlugin");
			foreach (var Property in Results)
			{
				// Keep only unique paths
				string PluginPath = Property.Value;
				if (PluginExtras.FirstOrDefault(x => x == PluginPath) == null)
				{
					PluginExtras.Add(PluginPath);
					Log.TraceInformation("AndroidPlugin: {0}", PluginPath);
				}
			}
			return PluginExtras;
		}