xamarin-macios/tests/xharness/UnifiedTarget.cs

153 строки
3.5 KiB
C#

using System;
using System.IO;
using System.Xml;
using Xamarin;
namespace xharness
{
public class UnifiedTarget : iOSTarget
{
// special cases for the BCL applications
public override string Suffix {
get {
return MonoNativeInfo != null ? MonoNativeInfo.FlavorSuffix : "-ios";
}
}
public override string ExtraLinkerDefsSuffix {
get {
return string.Empty;
}
}
protected override string ProjectTypeGuids {
get {
return "{FEACFBD2-3405-455C-9665-78FE426C6842};" + LanguageGuid;
}
}
protected override string BindingsProjectTypeGuids {
get {
return "{8FFB629D-F513-41CE-95D2-7ECE97B6EEEC}";
}
}
protected override string TargetFrameworkIdentifier {
get {
return "Xamarin.iOS";
}
}
protected override string Imports {
get {
return IsFSharp ? "iOS\\Xamarin.iOS.FSharp.targets" : "iOS\\Xamarin.iOS.CSharp.targets";
}
}
protected override string BindingsImports {
get {
return IsFSharp ? "iOS\\Xamarin.iOS.ObjCBinding.FSharp.targets" : "iOS\\Xamarin.iOS.ObjCBinding.CSharp.targets";
}
}
public override string SimulatorArchitectures {
get {
return "i386, x86_64";
}
}
public override string DeviceArchitectures {
get {
if (SupportsBitcode)
return "ARM64";
else
return "ARMv7, ARM64";
}
}
protected override void CalculateName ()
{
if (TargetDirectory.Contains ("bcl-test")) {
if (TestProject.Name == "mscorlib")
Name = "mscorlib";
else {
var bclIndex = TestProject.Name.IndexOf ("BCL", StringComparison.Ordinal);
// most of the BCL test are grouped, but there are a number that are not, in those cases remove the "{testype} Mono " prefix
Name = (bclIndex == -1) ? TestProject.Name.Substring (TestProject.Name.IndexOf ("Mono ", StringComparison.Ordinal) + "Mono ".Length) : TestProject.Name.Substring (bclIndex);
}
} else
base.CalculateName ();
if (MonoNativeInfo != null)
Name = Name + MonoNativeInfo.FlavorSuffix;
}
protected override string GetMinimumOSVersion (string templateMinimumOSVersion)
{
if (MonoNativeInfo == null)
return templateMinimumOSVersion;
return MonoNativeHelper.GetMinimumOSVersion (DevicePlatform.iOS, MonoNativeInfo.Flavor);
}
protected override int[] UIDeviceFamily {
get {
return new int [] { 1, 2 };
}
}
protected override string AdditionalDefines {
get {
return "XAMCORE_2_0";
}
}
public override bool IsMultiArchitecture {
get {
return true;
}
}
public override string Platform {
get {
return "ios";
}
}
public override string ProjectFileSuffix {
get {
if (MonoNativeInfo != null)
return MonoNativeInfo.FlavorSuffix;
return string.Empty;
}
}
protected override bool SupportsBitcode {
get {
return true;
}
}
protected override void ExecuteInternal ()
{
if (MonoNativeInfo == null)
return;
MonoNativeInfo.AddProjectDefines (inputProject);
inputProject.AddAdditionalDefines ("MONO_NATIVE_IOS");
inputProject.FixInfoPListInclude (Suffix);
inputProject.SetExtraLinkerDefs ("extra-linker-defs" + ExtraLinkerDefsSuffix + ".xml");
Harness.Save (inputProject, ProjectPath);
XmlDocument info_plist = new XmlDocument ();
var target_info_plist = Path.Combine (TargetDirectory, "Info" + Suffix + ".plist");
info_plist.LoadWithoutNetworkAccess (Path.Combine (TargetDirectory, "Info.plist"));
info_plist.SetMinimumOSVersion (GetMinimumOSVersion (info_plist.GetMinimumOSVersion ()));
Harness.Save (info_plist, target_info_plist);
}
}
}