Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.IO;
using System.Collections.Generic;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Pdb2Mdb;
Expand All @@ -12,11 +13,15 @@ public class ConvertDebuggingFiles : Task
[Required]
public ITaskItem[] Files { get; set; }

[Output]
public ITaskItem[] ConvertedFiles { get; set; }

public override bool Execute ()
{
Log.LogDebugMessage ("ConvertDebuggingFiles Task");
Log.LogDebugMessage (" InputFiles: {0}", Files);

var convertedFiles = new List<ITaskItem> ();
foreach (var file in Files) {
var pdb = file.ToString ();

Expand All @@ -26,11 +31,13 @@ public override bool Execute ()
try {
MonoAndroidHelper.SetWriteable (pdb);
Converter.Convert (Path.ChangeExtension (pdb, ".dll"));
convertedFiles.Add (new TaskItem (Path.ChangeExtension (pdb, ".dll")));
} catch (Exception ex) {
Log.LogWarningFromException (ex, true);
}
}

ConvertedFiles = convertedFiles.ToArray ();
Log.LogDebugTaskItems ("[Output] ConvertedFiles:", ConvertedFiles);
return true;
}
}
Expand Down
15 changes: 12 additions & 3 deletions src/Xamarin.Android.Build.Tasks/Tasks/CopyMdbFiles.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using System.IO;
using System.Collections.Generic;
using Xamarin.Android.Tools;

namespace Xamarin.Android.Tasks {
Expand All @@ -12,23 +13,31 @@ public class CopyMdbFiles : Task {

public ITaskItem[] DestinationFiles { get; set; }

[Output]
public ITaskItem[] CopiedFiles { get; set; }

public override bool Execute() {
Log.LogDebugTaskItems ("SourceFiles:", SourceFiles);
Log.LogDebugTaskItems ("DestinationFiles:", DestinationFiles);

if (SourceFiles.Length != DestinationFiles.Length)
throw new ArgumentException ("source and destination count mismatch");

var copiedFiles = new List<ITaskItem> ();
for (int i = 0; i < SourceFiles.Length; i++) {
var src = SourceFiles[i].ItemSpec;
if (File.Exists (src)) {
var dst = DestinationFiles [i].ItemSpec;
var date = DateTime.Now;
MonoAndroidHelper.CopyIfChanged (src, dst);
MonoAndroidHelper.SetWriteable (dst);
MonoAndroidHelper.SetLastAccessAndWriteTimeUtc (dst, date, Log);
if (MonoAndroidHelper.CopyIfChanged (src, dst)) {
copiedFiles.Add (DestinationFiles [i]);
MonoAndroidHelper.SetWriteable (dst);
MonoAndroidHelper.SetLastAccessAndWriteTimeUtc (dst, date, Log);
}
}
}
CopiedFiles = copiedFiles.ToArray ();
Log.LogDebugTaskItems ("[Output] CopiedFiles:", CopiedFiles);
return true;
}
}
Expand Down
36 changes: 21 additions & 15 deletions src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
Original file line number Diff line number Diff line change
Expand Up @@ -1556,7 +1556,13 @@ because xbuild doesn't support framework reference assemblies.
Inputs="@(_ResolvedPdbFiles)"
Outputs="@(_ResolvedPdbFiles->'%(RootDir)%(Directory)%(Filename).dll.mdb')"
DependsOnTargets="_CollectPdbFiles">
<ConvertDebuggingFiles Files="@(_ResolvedPdbFiles)" />
<ConvertDebuggingFiles Files="@(_ResolvedPdbFiles)">
<Output TaskParameter="ConvertedFiles" ItemName="_ConvertedDebuggingFiles" />
</ConvertDebuggingFiles>
<WriteLinesToFile
File="$(IntermediateOutputPath)$(CleanFile)"
Lines="@(_ConvertedDebuggingFiles)"
Overwrite="false" />
</Target>

<Target Name="_CopyMdbFiles"
Expand All @@ -1565,13 +1571,20 @@ because xbuild doesn't support framework reference assemblies.
DependsOnTargets="_ConvertPdbFiles;_CollectMdbFiles" >
<CopyMdbFiles
SourceFiles="@(_ResolvedMdbFiles);@(_ResolvedPortablePdbFiles)"
DestinationFiles="@(_ResolvedMdbFiles->'$(OutputPath)%(Filename)%(Extension)');@(_ResolvedPortablePdbFiles->'$(OutputPath)%(Filename)%(Extension)')"
/>
DestinationFiles="@(_ResolvedMdbFiles->'$(OutputPath)%(Filename)%(Extension)');@(_ResolvedPortablePdbFiles->'$(OutputPath)%(Filename)%(Extension)')">
<Output TaskParameter="CopiedFiles" ItemName="_MdbFilesCopied" />
</CopyMdbFiles>
<Copy
SourceFiles="@(_ResolvedMdbFiles->'$(OutputPath)%(Filename)%(Extension)');@(_ResolvedPortablePdbFiles->'$(OutputPath)%(Filename)%(Extension)')"
DestinationFiles="@(_ResolvedMdbFiles->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)');@(_ResolvedPortablePdbFiles->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)')"
SkipUnchangedFiles="true"
/>
SourceFiles="@(_ResolvedMdbFiles->'$(OutputPath)%(Filename)%(Extension)');@(_ResolvedPortablePdbFiles->'$(OutputPath)%(Filename)%(Extension)')"
DestinationFiles="@(_ResolvedMdbFiles->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)');@(_ResolvedPortablePdbFiles->'$(MonoAndroidLinkerInputDir)%(Filename)%(Extension)')"
SkipUnchangedFiles="true">
<Output TaskParameter="CopiedFiles" ItemName="_DebugFilesCopiedToLinkerSrc" />
</Copy>
<Touch Files="@(_DebugFilesCopiedToLinkerSrc)" />
<WriteLinesToFile
File="$(IntermediateOutputPath)$(CleanFile)"
Lines="@(_MdbFilesCopied);@(_DebugFilesCopiedToLinkerSrc)"
Overwrite="false" />
</Target>

<Target Name="_LinkAssemblies"
Expand Down Expand Up @@ -2408,13 +2421,6 @@ because xbuild doesn't support framework reference assemblies.

<!-- Cleaning -->

<Target Name="_CleanGeneratedDebuggingFiles">
<ItemGroup>
<_OutputDebugSymbolFiles Include="$(OutputPath)*.dll.mdb;$(OutputPath)*.pdb" />
</ItemGroup>
<Delete Files="@(_OutputDebugSymbolFiles)"/>
</Target>

<Target Name="_CleanMsymArchive">
<GetAndroidPackageName ManifestFile="$(ProjectDir)$(AndroidManifest)" AssemblyName="$(AssemblyName)">
<Output TaskParameter="PackageName" PropertyName="_AndroidPackage" />
Expand All @@ -2429,7 +2435,7 @@ because xbuild doesn't support framework reference assemblies.
<Delete Files="@(_OutputDeploymentFiles)"/>
</Target>

<Target Name="_CleanMonoAndroidIntermediateDir" DependsOnTargets="_CleanGeneratedDebuggingFiles;_CleanGeneratedDeploymentFiles;_CleanMsymArchive">
<Target Name="_CleanMonoAndroidIntermediateDir" DependsOnTargets="_CleanGeneratedDeploymentFiles;_CleanMsymArchive">
<RemoveDirFixed Directories="$(MonoAndroidIntermediate)android" Condition="Exists ('$(MonoAndroidIntermediate)android')" />
<!-- FIXME: remove this extraneous rmdir after a few release cycles since we release the one we killed it. -->
<RemoveDirFixed Directories="$(MonoAndroidIntermediate)assemblies" Condition="Exists ('$(MonoAndroidIntermediate)assemblies')" />
Expand Down