Skip to content

Commit

Permalink
Fea #5, Ar任务添加增量生成
Browse files Browse the repository at this point in the history
  • Loading branch information
mingkuang-Chuyu committed Apr 27, 2023
1 parent 3075879 commit 1b84a36
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 7 deletions.
78 changes: 77 additions & 1 deletion YY.Build.Linux.Tasks/GCC/Ar.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Microsoft.Build.CPPTasks;
using Microsoft.Build.Framework;
using Microsoft.Build.Shared;
using System;
using System.Collections;
using System.Collections.Generic;
Expand All @@ -9,7 +10,7 @@

namespace YY.Build.Linux.Tasks.GCC
{
public class Ar : Microsoft.Build.CPPTasks.VCToolTask
public class Ar : TrackedVCToolTask
{
private ArrayList switchOrderList;

Expand Down Expand Up @@ -281,5 +282,80 @@ public virtual bool Verbose
}
}

protected override ITaskItem[] TrackedInputFiles => Sources;

protected override bool MaintainCompositeRootingMarkers => true;

protected override string TrackerIntermediateDirectory
{
get
{
if (TrackerLogDirectory != null)
{
return TrackerLogDirectory;
}
return string.Empty;
}
}

public virtual string TrackerLogDirectory
{
get
{
if (IsPropertySet("TrackerLogDirectory"))
{
return base.ActiveToolSwitches["TrackerLogDirectory"].Value;
}
return null;
}
set
{
base.ActiveToolSwitches.Remove("TrackerLogDirectory");
ToolSwitch toolSwitch = new ToolSwitch(ToolSwitchType.Directory);
toolSwitch.DisplayName = "Tracker Log Directory";
toolSwitch.Description = "Tracker log directory.";
toolSwitch.ArgumentRelationList = new ArrayList();
toolSwitch.Value = VCToolTask.EnsureTrailingSlash(value);
base.ActiveToolSwitches.Add("TrackerLogDirectory", toolSwitch);
AddActiveSwitchToolValue(toolSwitch);
}
}

protected override void SaveTracking()
{
string SourceKey = "^";

foreach (ITaskItem taskItem in Sources)
{
if (SourceKey.Length > 1)
SourceKey += '|';

SourceKey += FileTracker.FormatRootingMarker(taskItem);
}

// 保存Write文件
{
string WriteFilePath = TLogWriteFiles[0].GetMetadata("FullPath");
Directory.CreateDirectory(Path.GetDirectoryName(WriteFilePath));
using StreamWriter WriteFileWriter = FileUtilities.OpenWrite(WriteFilePath, append: true, Encoding.Unicode);

WriteFileWriter.WriteLine(SourceKey);
WriteFileWriter.WriteLine(OutputFile);
}

// 保存Read文件
{
string ReadFilePath = TLogReadFiles[0].GetMetadata("FullPath");
Directory.CreateDirectory(Path.GetDirectoryName(ReadFilePath));
using StreamWriter ReadFileWriter = FileUtilities.OpenWrite(ReadFilePath, append: true, Encoding.Unicode);

ReadFileWriter.WriteLine(SourceKey);

foreach (ITaskItem taskItem in Sources)
{
ReadFileWriter.WriteLine(FileTracker.FormatRootingMarker(taskItem));
}
}
}
}
}
1 change: 1 addition & 0 deletions YY.Build.Linux.Tasks/Targets/YY.Linux.Cross.props
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ Copyright (C) Microsoft Corporation. All rights reserved.
<Command>Replacement</Command>
<CreateIndex>true</CreateIndex>
<NoWarnOnCreate>true</NoWarnOnCreate>
<MinimalRebuildFromTracking>true</MinimalRebuildFromTracking>
</Lib>
<LibFullPathTemp>
<TimestampSurrogate>$(LastBuildState)</TimestampSurrogate>
Expand Down
17 changes: 11 additions & 6 deletions YY.Build.Linux.Tasks/Targets/YY.Linux.Cross.targets
Original file line number Diff line number Diff line change
Expand Up @@ -202,8 +202,11 @@ Copyright (C) Microsoft Corporation. All rights reserved.

<Target Name="Lib">
<ItemGroup>
<!--These objects are removed because lib.exe can only remove objects from an existing lib. -->
<Lib Remove="%(Lib.RemoveObjects)" Condition="'%(Lib.RemoveObjects)' != ''"/>
<Lib>
<TimestampSurrogate Condition="'%(Lib.TimestampSurrogate)' == ''">$(CompileUpToDateFile)</TimestampSurrogate>
<MinimalRebuildFromTracking Condition="'$(_BuildActionType)' != 'Build' or '$(ForceRebuild)' == 'true'">false</MinimalRebuildFromTracking>
<ExcludedInputPaths>$(ExcludePath)</ExcludedInputPaths>
</Lib>
</ItemGroup>

Expand All @@ -217,13 +220,15 @@ Copyright (C) Microsoft Corporation. All rights reserved.
SuppressStartupBanner="%(Lib.SuppressStartupBanner)"
Verbose="%(Lib.Verbose)"
OutputFile="%(Lib.OutputFile)"
AdditionalOptions="%(Lib.AdditionalOptions)"
AdditionalOptions="%(Lib.AdditionalOptions)"
TrackerLogDirectory="$(TLogLocation)"
TLogReadFiles="$(TLogLocation)\lib.read.1.tlog"
TLogWriteFiles="$(TLogLocation)\lib.write.1.tlog"
TrackFileAccess ="$(TrackFileAccess)"
MinimalRebuildFromTracking ="%(Lib.MinimalRebuildFromTracking)"
ToolExe="$(RemoteArToolExe)">
</Ar>

<WriteLinesToFile Overwrite="true" Condition="'@(ProjectReferenceToLink->HasMetadata(TimestampSurrogate))' != ''" Encoding="Unicode" File="$(TLogLocation)\Lib.read.1.tlog" Lines="@(Lib->'^%(Fullpath)','|');@(ProjectReferenceToLink->'%(TimestampSurrogate)'->Distinct())" />

<WriteLinesToFile Overwrite="true" Encoding="Unicode" File="$(TLogLocation)\lib.write.1.tlog" Lines="@(Lib->'^%(Fullpath)');$(LinkUpToDateFile)" />
<Message Text="$(MSBuildProjectFile) -&gt; $(TargetPath)" Importance="High"/>
</Target>

<!-- Local build/link commands executed using MSBuild Exec task-->
Expand Down

0 comments on commit 1b84a36

Please sign in to comment.