[msbuild] Share the Metal[Lib] task implementations between iOS and macOS. (#12851)

This commit is contained in:
Rolf Bjarne Kvinge 2021-09-29 07:55:55 +02:00 коммит произвёл GitHub
Родитель 3d182c5c54
Коммит cd2867d44c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
11 изменённых файлов: 51 добавлений и 123 удалений

Просмотреть файл

@ -1,17 +0,0 @@
using System.IO;
using Xamarin.MacDev;
using Xamarin.MacDev.Tasks;
namespace Xamarin.Mac.Tasks
{
public class Metal : MetalTaskBase
{
protected override string DevicePlatformBinDir {
get {
return AppleSdkSettings.XcodeVersion.Major >= 10
? Path.Combine (SdkDevPath, "Toolchains", "XcodeDefault.xctoolchain", "usr", "bin")
: Path.Combine (SdkDevPath, "Platforms", "MacOSX.platform", "usr", "bin");
}
}
}
}

Просмотреть файл

@ -1,17 +0,0 @@
using System.IO;
using Xamarin.MacDev;
using Xamarin.MacDev.Tasks;
namespace Xamarin.Mac.Tasks
{
public class MetalLib : MetalLibTaskBase
{
protected override string DevicePlatformBinDir {
get {
return AppleSdkSettings.XcodeVersion.Major >= 10
? Path.Combine (SdkDevPath, "Toolchains", "XcodeDefault.xctoolchain", "usr", "bin")
: Path.Combine (SdkDevPath, "Platforms", "MacOSX.platform", "usr", "bin");
}
}
}
}

Просмотреть файл

@ -4,6 +4,7 @@ using System.IO;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using Xamarin.Localization.MSBuild;
using Xamarin.Utils;
namespace Xamarin.MacDev.Tasks
@ -26,8 +27,24 @@ namespace Xamarin.MacDev.Tasks
#endregion
protected abstract string DevicePlatformBinDir {
get;
string DevicePlatformBinDir {
get {
switch (Platform) {
case ApplePlatform.iOS:
case ApplePlatform.TVOS:
case ApplePlatform.WatchOS:
return AppleSdkSettings.XcodeVersion.Major >= 11
? Path.Combine (SdkDevPath, "Toolchains", "XcodeDefault.xctoolchain", "usr", "bin")
: Path.Combine (SdkDevPath, "Platforms", "iPhoneOS.platform", "usr", "bin");
case ApplePlatform.MacOSX:
case ApplePlatform.MacCatalyst:
return AppleSdkSettings.XcodeVersion.Major >= 10
? Path.Combine (SdkDevPath, "Toolchains", "XcodeDefault.xctoolchain", "usr", "bin")
: Path.Combine (SdkDevPath, "Platforms", "MacOSX.platform", "usr", "bin");
default:
throw new InvalidOperationException (string.Format (MSBStrings.InvalidPlatform, Platform));
}
}
}
protected override string ToolName {

Просмотреть файл

@ -48,8 +48,24 @@ namespace Xamarin.MacDev.Tasks
[Output]
public ITaskItem OutputFile { get; set; }
protected abstract string DevicePlatformBinDir {
get;
string DevicePlatformBinDir {
get {
switch (Platform) {
case ApplePlatform.iOS:
case ApplePlatform.TVOS:
case ApplePlatform.WatchOS:
return AppleSdkSettings.XcodeVersion.Major >= 11
? Path.Combine (SdkDevPath, "Toolchains", "XcodeDefault.xctoolchain", "usr", "bin")
: Path.Combine (SdkDevPath, "Platforms", "iPhoneOS.platform", "usr", "bin");
case ApplePlatform.MacOSX:
case ApplePlatform.MacCatalyst:
return AppleSdkSettings.XcodeVersion.Major >= 10
? Path.Combine (SdkDevPath, "Toolchains", "XcodeDefault.xctoolchain", "usr", "bin")
: Path.Combine (SdkDevPath, "Platforms", "MacOSX.platform", "usr", "bin");
default:
throw new InvalidOperationException (string.Format (MSBStrings.InvalidPlatform, Platform));
}
}
}
protected override string ToolName {

Просмотреть файл

@ -1,6 +1,6 @@
using Xamarin.Messaging.Build.Client;
namespace Xamarin.iOS.Tasks
namespace Xamarin.MacDev.Tasks
{
public class Metal : MetalTaskBase
{

Просмотреть файл

@ -3,7 +3,7 @@ using System.Linq;
using Microsoft.Build.Framework;
using Xamarin.Messaging.Build.Client;
namespace Xamarin.iOS.Tasks
namespace Xamarin.MacDev.Tasks
{
public class MetalLib : MetalLibTaskBase, ITaskCallback
{

Просмотреть файл

@ -53,8 +53,6 @@ Copyright (C) 2018 Microsoft. All rights reserved.
<UsingTask Condition="'$(_PlatformName)' != 'macOS'" TaskName="Xamarin.iOS.Tasks.FindWatchOS2AppBundle" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' != 'macOS'" TaskName="Xamarin.iOS.Tasks.GetFiles" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' != 'macOS'" TaskName="Xamarin.iOS.Tasks.GetMlaunchArguments" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' != 'macOS'" TaskName="Xamarin.iOS.Tasks.Metal" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' != 'macOS'" TaskName="Xamarin.iOS.Tasks.MetalLib" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' != 'macOS'" TaskName="Xamarin.iOS.Tasks.MTouch" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' != 'macOS'" TaskName="Xamarin.iOS.Tasks.ParseDeviceSpecificBuildInformation" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' != 'macOS'" TaskName="Xamarin.iOS.Tasks.PrepareNativeReferences" AssemblyFile="$(_TaskAssemblyName)" />
@ -73,8 +71,6 @@ Copyright (C) 2018 Microsoft. All rights reserved.
<UsingTask Condition="'$(_PlatformName)' == 'macOS'" TaskName="Xamarin.Mac.Tasks.CreateEmbeddedResources" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' == 'macOS'" TaskName="Xamarin.Mac.Tasks.DetectSdkLocations" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' == 'macOS'" TaskName="Xamarin.Mac.Tasks.DetectSigningIdentity" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' == 'macOS'" TaskName="Xamarin.Mac.Tasks.Metal" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' == 'macOS'" TaskName="Xamarin.Mac.Tasks.MetalLib" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' == 'macOS'" TaskName="Xamarin.Mac.Tasks.Mmp" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask Condition="'$(_PlatformName)' == 'macOS'" TaskName="Xamarin.Mac.Tasks.PrepareNativeReferences" AssemblyFile="$(_TaskAssemblyName)" />
@ -105,6 +101,8 @@ Copyright (C) 2018 Microsoft. All rights reserved.
<UsingTask TaskName="Xamarin.MacDev.Tasks.GetFullPath" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask TaskName="Xamarin.MacDev.Tasks.GetPropertyListValue" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask TaskName="Xamarin.MacDev.Tasks.IBTool" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask TaskName="Xamarin.MacDev.Tasks.Metal" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask TaskName="Xamarin.MacDev.Tasks.MetalLib" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask TaskName="Xamarin.MacDev.Tasks.OptimizeImage" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask TaskName="Xamarin.MacDev.Tasks.OptimizePropertyList" AssemblyFile="$(_TaskAssemblyName)" />
<UsingTask TaskName="Xamarin.MacDev.Tasks.PackLibraryResources" AssemblyFile="$(_TaskAssemblyName)" />

Просмотреть файл

@ -1,17 +0,0 @@
using System.IO;
using Xamarin.MacDev;
namespace Xamarin.iOS.Tasks
{
public abstract class MetalLibTaskBase : Xamarin.MacDev.Tasks.MetalLibTaskBase
{
protected override string DevicePlatformBinDir {
get {
return AppleSdkSettings.XcodeVersion.Major >= 11
? Path.Combine (SdkDevPath, "Toolchains", "XcodeDefault.xctoolchain", "usr", "bin")
: Path.Combine (SdkDevPath, "Platforms", "iPhoneOS.platform", "usr", "bin");
}
}
}
}

Просмотреть файл

@ -1,17 +0,0 @@
using System.IO;
using Xamarin.MacDev;
namespace Xamarin.iOS.Tasks
{
public abstract class MetalTaskBase : Xamarin.MacDev.Tasks.MetalTaskBase
{
protected override string DevicePlatformBinDir {
get {
return AppleSdkSettings.XcodeVersion.Major >= 11
? Path.Combine (SdkDevPath, "Toolchains", "XcodeDefault.xctoolchain", "usr", "bin")
: Path.Combine (SdkDevPath, "Platforms", "iPhoneOS.platform", "usr", "bin");
}
}
}
}

Просмотреть файл

@ -12,48 +12,18 @@ namespace AppleSdkSettings {
namespace Xamarin.MacDev.Tasks {
public abstract class MetalTaskBase {
protected virtual string OperatingSystem {
get {
throw new NotImplementedException ();
}
}
protected abstract string DevicePlatformBinDir {
get;
}
protected string SdkDevPath {
get { return ""; }
}
}
public abstract class MetalLibTaskBase {
protected abstract string DevicePlatformBinDir {
get;
}
protected string SdkDevPath {
get { return ""; }
}
}
}
namespace Xamarin.Mac.Tasks {
public class MetalPoker : Metal {
public new string DevicePlatformBinDir {
get { return base.DevicePlatformBinDir; }
public new string GenerateFullPathToTool ()
{
return base.GenerateFullPathToTool ();
}
}
public class MetalLibPoker : MetalLib {
public new string DevicePlatformBinDir {
get { return base.DevicePlatformBinDir; }
public new string GenerateFullPathToTool ()
{
return base.GenerateFullPathToTool ();
}
}
@ -64,14 +34,16 @@ namespace Xamarin.Mac.Tasks {
public void MetalBinPathTest ()
{
var metalTask = new MetalPoker ();
CheckToolBinDir ("metal", metalTask.DevicePlatformBinDir);
metalTask.SdkDevPath = string.Empty;
CheckToolBinDir ("metal", metalTask.GenerateFullPathToTool ());
}
[Test]
public void MetalLibBinPathTest ()
{
var metalLibTask = new MetalLibPoker ();
CheckToolBinDir ("metallib", metalLibTask.DevicePlatformBinDir);
metalLibTask.SdkDevPath = string.Empty;
CheckToolBinDir ("metallib", metalLibTask.GenerateFullPathToTool ());
}
public void CheckToolBinDir (string taskName, string binDirToCheck)

Просмотреть файл

@ -74,14 +74,7 @@
<Compile Include="..\common\BundlerTool.cs">
<Link>BundlerTool.cs</Link>
</Compile>
<Compile Include="ToolTasksBinPathTest.cs" />
<Compile Include="MonoNativeTests.cs" />
<Compile Include="..\..\msbuild\Xamarin.Mac.Tasks\Tasks\Metal.cs">
<Link>Metal.cs</Link>
</Compile>
<Compile Include="..\..\msbuild\Xamarin.Mac.Tasks\Tasks\MetalLib.cs">
<Link>MetalLib.cs</Link>
</Compile>
<Compile Include="..\..\tools\common\SdkVersions.cs">
<Link>SdkVersions.cs</Link>
</Compile>