public PBXCopyFilesBuildPhase AddEmbedFrameworkBuildPhase() { PBXCopyFilesBuildPhase phase = null; PBXNativeTarget naviTarget = GetNativeTarget("Unity-iPhone"); if (naviTarget == null) { Debug.Log("Not found Correct NativeTarget."); return(phase); } //check if embed framework buildPhase exist foreach (var currentObject in copyBuildPhases) { object nameObj = null; if (currentObject.Value.data.TryGetValue("name", out nameObj)) { string name = (string)nameObj; if (name == "Embed Frameworks") { return(currentObject.Value); } } } int buildActionMask = this.GetBuildActionMask(); phase = new PBXCopyFilesBuildPhase(buildActionMask); var buildPhases = (ArrayList)naviTarget.data["buildPhases"]; buildPhases.Add(phase.guid); //add build phase copyBuildPhases.Add(phase); return(phase); }
public PBXNativeTarget GetNativeTarget( string name ) { PBXNativeTarget naviTarget = null; foreach( KeyValuePair<string, PBXNativeTarget> currentObject in nativeTargets ) { string targetName = (string)currentObject.Value.data["name"]; if (targetName == name) { naviTarget = currentObject.Value; break; } } return naviTarget; }
public string ResolveName(string guid) { if (!this.objects.ContainsKey(guid)) { Debug.LogWarning(this + " ResolveName could not resolve " + guid); return(string.Empty); //"UNRESOLVED GUID:" + guid; } object entity = this.objects[guid]; if (entity is PBXBuildFile) { return(ResolveName(((PBXBuildFile)entity).fileRef)); } else if (entity is PBXFileReference) { PBXFileReference casted = (PBXFileReference)entity; return(casted.name != null ? casted.name : casted.path); } else if (entity is PBXGroup) { PBXGroup casted = (PBXGroup)entity; return(casted.name != null ? casted.name : casted.path); } else if (entity is PBXProject || guid == this.rootObject) { return("Project object"); } else if (entity is PBXFrameworksBuildPhase) { return("Frameworks"); } else if (entity is PBXResourcesBuildPhase) { return("Resources"); } else if (entity is PBXShellScriptBuildPhase) { return("ShellScript"); } else if (entity is PBXSourcesBuildPhase) { return("Sources"); } else if (entity is PBXCopyFilesBuildPhase) { return("CopyFiles"); } else if (entity is XCConfigurationList) { XCConfigurationList casted = (XCConfigurationList)entity; //Debug.LogWarning ("XCConfigurationList " + guid + " " + casted.ToString()); if (casted.data.ContainsKey("defaultConfigurationName")) { //Debug.Log ("XCConfigurationList " + (string)casted.data[ "defaultConfigurationName" ] + " " + guid); return((string)casted.data["defaultConfigurationName"]); } return(null); } else if (entity is PBXNativeTarget) { PBXNativeTarget obj = (PBXNativeTarget)entity; //Debug.LogWarning ("PBXNativeTarget " + guid + " " + obj.ToString()); if (obj.data.ContainsKey("name")) { //Debug.Log ("PBXNativeTarget " + (string)obj.data[ "name" ] + " " + guid); return((string)obj.data["name"]); } return(null); } else if (entity is XCBuildConfiguration) { XCBuildConfiguration obj = (XCBuildConfiguration)entity; //Debug.LogWarning ("XCBuildConfiguration UNRESOLVED GUID:" + guid + " " + (obj==null?"":obj.ToString())); if (obj.data.ContainsKey("name")) { //Debug.Log ("XCBuildConfiguration " + (string)obj.data[ "name" ] + " " + guid + " " + (obj==null?"":obj.ToString())); return((string)obj.data["name"]); } } else if (entity is PBXObject) { PBXObject obj = (PBXObject)entity; if (obj.data.ContainsKey("name")) { Debug.Log("PBXObject " + (string)obj.data["name"] + " " + guid + " " + (obj == null?"":obj.ToString())); } return((string)obj.data["name"]); } //return "UNRESOLVED GUID:" + guid; Debug.LogWarning("UNRESOLVED GUID:" + guid); return(null); }
public void ApplyMod(XCMod mod) { PBXGroup modGroup = this.GetGroup(mod.group); Debug.Log("Adding libraries..."); foreach (XCModFile libRef in mod.libs) { string completeLibPath = System.IO.Path.Combine("usr/lib", libRef.filePath); Debug.Log("Adding library " + completeLibPath); this.AddFile(completeLibPath, modGroup, "SDKROOT", true, libRef.isWeak); } Debug.Log("Adding frameworks..."); PBXGroup frameworkGroup = this.GetGroup("Frameworks"); foreach (string framework in mod.frameworks) { string[] filename = framework.Split(':'); bool isWeak = (filename.Length > 1) ? true : false; string completePath = System.IO.Path.Combine("System/Library/Frameworks", filename[0]); this.AddFile(completePath, frameworkGroup, "SDKROOT", true, isWeak); } Debug.Log("Adding files..."); foreach (string filePath in mod.files) { string absoluteFilePath = System.IO.Path.Combine(mod.path, filePath); this.AddFile(absoluteFilePath, modGroup); } Debug.Log("Adding embed binaries..."); if (mod.embed_binaries != null) { //1. Add LD_RUNPATH_SEARCH_PATHS for embed framework this.overwriteBuildSetting("LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks", "Release"); this.overwriteBuildSetting("LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks", "Debug"); foreach (string binary in mod.embed_binaries) { string absoluteFilePath = System.IO.Path.Combine(mod.path, binary); this.AddEmbedFramework(absoluteFilePath); } } Debug.Log("Adding folders..."); foreach (string folderPath in mod.folders) { string absoluteFolderPath = System.IO.Path.Combine(Application.dataPath, folderPath); Debug.Log("Adding folder " + absoluteFolderPath); this.AddFolder(absoluteFolderPath, modGroup, (string[])mod.excludes.ToArray(typeof(string))); } Debug.Log("Adding headerpaths..."); foreach (string headerpath in mod.headerpaths) { if (headerpath.Contains("$(inherited)")) { Debug.Log("not prepending a path to " + headerpath); this.AddHeaderSearchPaths(headerpath); } else { string absoluteHeaderPath = System.IO.Path.Combine(mod.path, headerpath); this.AddHeaderSearchPaths(absoluteHeaderPath); } } Debug.Log("Adding compiler flags..."); foreach (string flag in mod.compiler_flags) { this.AddOtherCFlags(flag); } Debug.Log("Adding linker flags..."); foreach (string flag in mod.linker_flags) { this.AddOtherLinkerFlags(flag); } Debug.Log("Adding plist items..."); string plistPath = this.projectRootPath + "/Info.plist"; XCPlist plist = new XCPlist(plistPath); plist.Process(mod.plist); if (null != mod.project) { Debug.Log("Add project items..."); PBXNativeTarget nativeTarget = GetNativeTarget("Unity-iPhone"); project.AddAttribute(nativeTarget.guid, mod.project); modified = true; } this.Consolidate(); }