Beispiel #1
0
        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);
        }