public override bool Execute() { var arcs = MtouchArch.Split(',').Select(c => c.Trim().ToLower()).ToList(); // lipo uses lower case var availableArchs = AvailableArchs(); Log.LogMessage(MessageImportance.Normal, $"Copying: {string.Join(", ", Resources.Select(c => c.ItemSpec))}"); Log.LogMessage(MessageImportance.Normal, $"Swift Arcs Needed: {MtouchArch}"); Log.LogMessage(MessageImportance.Normal, $"Swift Arcs Available: {string.Join(", ", availableArchs)}"); var args = GetLipoArgs(availableArchs); var xcodePath = GetRuntimePath(); Parallel.ForEach(Resources.Select(c => c.ItemSpec), (dylib) => { Log.LogMessage(MessageImportance.Normal, $"Copying: {dylib}"); RunLipo($"'{Path.Combine(xcodePath, dylib)}' {args} '{GetOutputPath(dylib)}'"); }); return(true); }
public override bool Execute() { var arcs = MtouchArch.Split(',').Select(c => c.Trim().ToLower()).ToList(); // lipo uses lower case var availableArchs = AvailableArchs(); Log.LogMessage(MessageImportance.Normal, $"Copying: {string.Join(", ", Resources.Select(c => c.ItemSpec))}"); Log.LogMessage(MessageImportance.Normal, $"Swift Arcs Needed: {MtouchArch}"); Log.LogMessage(MessageImportance.Normal, $"Swift Arcs Available: {string.Join(", ", availableArchs)}"); var archsToRemove = availableArchs.Except(arcs).Where(c => !string.IsNullOrWhiteSpace(c)).ToArray(); StringBuilder argsBuilder = new StringBuilder(); if (archsToRemove.Length == 0) { argsBuilder.Append(" -create -output"); } else { foreach (var arch in archsToRemove) { argsBuilder.Append($" -remove {arch}"); } argsBuilder.Append(" -output"); } var args = argsBuilder.ToString(); var xcodePath = GetRuntimePath(); Parallel.ForEach(Resources.Select(c => c.ItemSpec), (dylib) => { Log.LogMessage(MessageImportance.Normal, $"Copying: {dylib}"); RunLipo($"{Path.Combine(xcodePath, dylib)} {args} {GetOutputPath(dylib)}"); }); return(true); }