xamarin-macios/msbuild/Xamarin.MacDev.Tasks.Core/Sdks.cs

90 строки
2.5 KiB
C#

using System;
using System.IO;
using Xamarin.Localization.MSBuild;
using Xamarin.Utils;
using Xamarin.MacDev.Tasks;
namespace Xamarin.MacDev {
public static class Sdks {
const string MTOUCH_LOCATION_ENV_VAR = "MD_MTOUCH_SDK_ROOT";
public static XamMacSdk XamMac { get; private set; }
public static AppleIPhoneSdk IOS { get; private set; }
public static MacOSXSdk MacOS { get; private set; }
public static MonoTouchSdk XamIOS { get; internal set; }
public static AppleWatchSdk Watch { get; private set; }
public static AppleTVOSSdk TVOS { get; private set; }
static Sdks ()
{
Reload ();
}
static void Reload ()
{
var monotouch = Environment.GetEnvironmentVariable (MTOUCH_LOCATION_ENV_VAR);
if (string.IsNullOrEmpty (monotouch)) {
foreach (var location in MonoTouchSdk.DefaultLocations) {
if (Directory.Exists (location)) {
monotouch = location;
break;
}
}
}
XamIOS = new MonoTouchSdk (monotouch);
IOS = new AppleIPhoneSdk (AppleSdkSettings.DeveloperRoot, AppleSdkSettings.DeveloperRootVersionPlist);
Watch = new AppleWatchSdk (AppleSdkSettings.DeveloperRoot, AppleSdkSettings.DeveloperRootVersionPlist);
TVOS = new AppleTVOSSdk (AppleSdkSettings.DeveloperRoot, AppleSdkSettings.DeveloperRootVersionPlist);
XamMac = new XamMacSdk (null);
MacOS = new MacOSXSdk (AppleSdkSettings.DeveloperRoot, AppleSdkSettings.DeveloperRootVersionPlist);
}
public static AppleSdk GetSdk (ApplePlatform framework)
{
switch (framework) {
case ApplePlatform.iOS:
return IOS;
case ApplePlatform.WatchOS:
return Watch;
case ApplePlatform.TVOS:
return TVOS;
default:
throw new InvalidOperationException (string.Format (MSBStrings.InvalidFramework, framework));
}
}
public static AppleSdk GetSdk (string targetFrameworkMoniker)
{
return GetSdk (PlatformFrameworkHelper.GetFramework (targetFrameworkMoniker));
}
public static IAppleSdk GetAppleSdk (ApplePlatform framework)
{
switch (framework) {
case ApplePlatform.iOS:
return IOS;
case ApplePlatform.WatchOS:
return Watch;
case ApplePlatform.TVOS:
return TVOS;
case ApplePlatform.MacCatalyst:
case ApplePlatform.MacOSX:
return MacOS;
default:
throw new InvalidOperationException (string.Format (MSBStrings.InvalidFramework, framework));
}
}
public static IAppleSdk GetAppleSdk (string targetFrameworkMoniker)
{
return GetAppleSdk (PlatformFrameworkHelper.GetFramework (targetFrameworkMoniker));
}
}
}