diff --git a/tests/mono-native/iOS/mono-native.csproj.template b/tests/mono-native/iOS/mono-native.csproj.template
index 7f74b6d3fb..eff5089a32 100644
--- a/tests/mono-native/iOS/mono-native.csproj.template
+++ b/tests/mono-native/iOS/mono-native.csproj.template
@@ -14,14 +14,18 @@
168,169,219,414,612,618,649,672
Xamarin.iOS
obj\$(Platform)\$(Configuration)-unified
-
+
+
+ MONO_NATIVE_SYMLINK
+ MONO_NATIVE_STATIC
+ $(MonoNativeMode);$(DefineConstants)
True
full
False
bin\iPhoneSimulator\$(Configuration)-unified
- DEBUG;MONO_NATIVE_SYMLINK;$(DefineConstants)
+ DEBUG;$(DefineConstants)
prompt
4
True
@@ -36,7 +40,7 @@
none
True
bin\iPhoneSimulator\$(Configuration)-unified
- MONO_NATIVE_STATIC;$(DefineConstants)
+ $(DefineConstants)
prompt
4
None
@@ -50,7 +54,7 @@
full
False
bin\iPhone\$(Configuration)-unified
- DEBUG;MONO_NATIVE_STATIC;$(DefineConstants)
+ DEBUG;$(DefineConstants)
prompt
4
iPhone Developer
@@ -66,7 +70,7 @@
full
False
bin\iPhone\$(Configuration)-unified
- DEBUG;MONO_NATIVE_STATIC;$(DefineConstants)
+ DEBUG;$(DefineConstants)
prompt
4
iPhone Developer
@@ -82,7 +86,7 @@
full
False
bin\iPhone\$(Configuration)-unified
- DEBUG;MONO_NATIVE_STATIC;$(DefineConstants)
+ DEBUG;$(DefineConstants)
prompt
4
iPhone Developer
@@ -97,7 +101,7 @@
none
True
bin\iPhone\$(Configuration)-unified
- MONO_NATIVE_STATIC;$(DefineConstants)
+ $(DefineConstants)
prompt
4
iPhone Developer
@@ -112,7 +116,7 @@
none
True
bin\iPhone\$(Configuration)-unified
- MONO_NATIVE_STATIC;$(DefineConstants)
+ $(DefineConstants)
prompt
4
iPhone Developer
@@ -127,7 +131,7 @@
none
True
bin\iPhone\$(Configuration)-unified
- MONO_NATIVE_STATIC;$(DefineConstants)
+ $(DefineConstants)
prompt
4
iPhone Developer
@@ -142,7 +146,7 @@
none
True
bin\iPhone\$(Configuration)-unified
- MONO_NATIVE_STATIC;$(DefineConstants)
+ $(DefineConstants)
prompt
4
iPhone Developer
diff --git a/tests/xharness/Jenkins/TestData.cs b/tests/xharness/Jenkins/TestData.cs
index ae8cb9739a..e5966a0b5c 100644
--- a/tests/xharness/Jenkins/TestData.cs
+++ b/tests/xharness/Jenkins/TestData.cs
@@ -18,7 +18,6 @@ namespace Xharness.Jenkins {
public bool? Ignored;
public bool EnableSGenConc;
public bool UseThumb;
- public MonoNativeFlavor MonoNativeFlavor;
public MonoNativeLinkMode MonoNativeLinkMode;
public IEnumerable Candidates;
}
diff --git a/tests/xharness/Jenkins/TestVariationsFactory.cs b/tests/xharness/Jenkins/TestVariationsFactory.cs
index 1f815eefd9..7f6a5007f1 100644
--- a/tests/xharness/Jenkins/TestVariationsFactory.cs
+++ b/tests/xharness/Jenkins/TestVariationsFactory.cs
@@ -29,19 +29,6 @@ namespace Xharness.Jenkins {
{
// This function returns additional test configurations (in addition to the default one) for the specific test
- MonoNativeFlavor flavor;
- switch (test.TestName) {
- case "mono-native-compat":
- flavor = MonoNativeFlavor.Compat;
- break;
- case "mono-native-unified":
- flavor = MonoNativeFlavor.Unified;
- break;
- default:
- flavor = MonoNativeFlavor.None;
- break;
- }
-
// 32-bit interpreter doesn't work yet: https://github.com/mono/mono/issues/9871
var supports_interpreter = test.Platform != TestPlatform.iOS_Unified32;
var supports_dynamic_registrar_on_device = test.Platform == TestPlatform.iOS_Unified64 || test.Platform == TestPlatform.tvOS;
@@ -54,17 +41,17 @@ namespace Xharness.Jenkins {
/* we don't add --assembly-build-target=@all=staticobject because that's the default in all our test projects */
if (supports_debug) {
- yield return new TestData { Variation = "AssemblyBuildTarget: dylib (debug)", MTouchExtraArgs = $"--assembly-build-target=@all=dynamiclibrary {test.TestProject.MTouchExtraArgs}", Debug = true, Profiling = false, MonoNativeLinkMode = MonoNativeLinkMode.Dynamic, MonoNativeFlavor = flavor };
- yield return new TestData { Variation = "AssemblyBuildTarget: SDK framework (debug)", MTouchExtraArgs = $"--assembly-build-target=@sdk=framework=Xamarin.Sdk --assembly-build-target=@all=staticobject {test.TestProject.MTouchExtraArgs}", Debug = true, Profiling = false, MonoNativeLinkMode = MonoNativeLinkMode.Static, MonoNativeFlavor = flavor };
- yield return new TestData { Variation = "AssemblyBuildTarget: dylib (debug, profiling)", MTouchExtraArgs = $"--assembly-build-target=@all=dynamiclibrary {test.TestProject.MTouchExtraArgs}", Debug = true, Profiling = true, MonoNativeLinkMode = MonoNativeLinkMode.Dynamic, MonoNativeFlavor = flavor };
- yield return new TestData { Variation = "AssemblyBuildTarget: SDK framework (debug, profiling)", MTouchExtraArgs = $"--assembly-build-target=@sdk=framework=Xamarin.Sdk --assembly-build-target=@all=staticobject {test.TestProject.MTouchExtraArgs}", Debug = true, Profiling = true, MonoNativeLinkMode = MonoNativeLinkMode.Static, MonoNativeFlavor = flavor };
+ yield return new TestData { Variation = "AssemblyBuildTarget: dylib (debug)", MTouchExtraArgs = $"--assembly-build-target=@all=dynamiclibrary {test.TestProject.MTouchExtraArgs}", Debug = true, Profiling = false, MonoNativeLinkMode = MonoNativeLinkMode.Dynamic };
+ yield return new TestData { Variation = "AssemblyBuildTarget: SDK framework (debug)", MTouchExtraArgs = $"--assembly-build-target=@sdk=framework=Xamarin.Sdk --assembly-build-target=@all=staticobject {test.TestProject.MTouchExtraArgs}", Debug = true, Profiling = false, MonoNativeLinkMode = MonoNativeLinkMode.Static };
+ yield return new TestData { Variation = "AssemblyBuildTarget: dylib (debug, profiling)", MTouchExtraArgs = $"--assembly-build-target=@all=dynamiclibrary {test.TestProject.MTouchExtraArgs}", Debug = true, Profiling = true, MonoNativeLinkMode = MonoNativeLinkMode.Dynamic };
+ yield return new TestData { Variation = "AssemblyBuildTarget: SDK framework (debug, profiling)", MTouchExtraArgs = $"--assembly-build-target=@sdk=framework=Xamarin.Sdk --assembly-build-target=@all=staticobject {test.TestProject.MTouchExtraArgs}", Debug = true, Profiling = true, MonoNativeLinkMode = MonoNativeLinkMode.Static };
}
if (test.ProjectConfiguration.Contains ("Debug"))
yield return new TestData { Variation = "Release", MTouchExtraArgs = test.TestProject.MTouchExtraArgs, Debug = false, Profiling = false, MonoNativeLinkMode = MonoNativeLinkMode.Static };
if (test.Platform == TestPlatform.iOS_Unified32)
yield return new TestData { Variation = "Release: UseThumb", MTouchExtraArgs = test.TestProject.MTouchExtraArgs, Debug = false, Profiling = false, MonoNativeLinkMode = MonoNativeLinkMode.Static, UseThumb = true };
- yield return new TestData { Variation = "AssemblyBuildTarget: SDK framework (release)", MTouchExtraArgs = $"--assembly-build-target=@sdk=framework=Xamarin.Sdk --assembly-build-target=@all=staticobject {test.TestProject.MTouchExtraArgs}", Debug = false, Profiling = false, MonoNativeLinkMode = MonoNativeLinkMode.Static, MonoNativeFlavor = flavor };
+ yield return new TestData { Variation = "AssemblyBuildTarget: SDK framework (release)", MTouchExtraArgs = $"--assembly-build-target=@sdk=framework=Xamarin.Sdk --assembly-build-target=@all=staticobject {test.TestProject.MTouchExtraArgs}", Debug = false, Profiling = false, MonoNativeLinkMode = MonoNativeLinkMode.Static };
switch (test.TestName) {
case "monotouch-test":
@@ -203,11 +190,11 @@ namespace Xharness.Jenkins {
}
}
clone.Xml.SetNode (isMac ? "Profiling" : "MTouchProfiling", profiling ? "True" : "False", task.ProjectPlatform, configuration);
- if (test_data.MonoNativeFlavor != MonoNativeFlavor.None) {
+ if (test_data.MonoNativeLinkMode != MonoNativeLinkMode.None) {
var mono_native_link = test_data.MonoNativeLinkMode;
if (!canSymlink && mono_native_link == MonoNativeLinkMode.Symlink)
mono_native_link = MonoNativeLinkMode.Static;
- MonoNativeHelper.AddProjectDefines (clone.Xml, test_data.MonoNativeFlavor, mono_native_link, task.ProjectPlatform, configuration);
+ MonoNativeHelper.AddProjectDefines (clone.Xml, mono_native_link);
}
if (test_data.EnableSGenConc)
clone.Xml.SetNode ("MtouchEnableSGenConc", "true", task.ProjectPlatform, configuration);
diff --git a/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/MonoNativeInfo.cs b/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/MonoNativeInfo.cs
index 9c3961b3ed..93c712da52 100644
--- a/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/MonoNativeInfo.cs
+++ b/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/MonoNativeInfo.cs
@@ -48,64 +48,23 @@ namespace Microsoft.DotNet.XHarness.iOS.Shared {
public static class MonoNativeHelper
{
- public static void AddProjectDefines (
- XmlDocument project, MonoNativeFlavor flavor, MonoNativeLinkMode link,
- string platform, string config)
- {
- AddProjectDefines (project, flavor, platform, config);
- AddProjectDefines (project, link, platform, config);
- }
-
- public static void AddProjectDefines (
- XmlDocument project, MonoNativeFlavor flavor,
- string platform = null, string config = null)
- {
- switch (flavor) {
- case MonoNativeFlavor.Compat:
- if (platform != null)
- project.AddAdditionalDefines ("MONO_NATIVE_COMPAT", platform, config);
- else
- project.AddAdditionalDefines ("MONO_NATIVE_COMPAT");
- break;
- case MonoNativeFlavor.Unified:
- if (platform != null)
- project.AddAdditionalDefines ("MONO_NATIVE_UNIFIED", platform, config);
- else
- project.AddAdditionalDefines ("MONO_NATIVE_UNIFIED");
- break;
- default:
- throw new Exception ($"Unknown MonoNativeFlavor: {flavor}");
- }
- }
-
- public static void AddProjectDefines (
- XmlDocument project, MonoNativeLinkMode link,
- string platform, string config)
+ public static void AddProjectDefines (XmlDocument project, MonoNativeLinkMode link)
{
switch (link) {
case MonoNativeLinkMode.Static:
- project.AddAdditionalDefines ("MONO_NATIVE_STATIC", platform, config);
- project.RemoveDefines ("MONO_NATIVE_DYNAMIC; MONO_NATIVE_SYMLINK", platform, config);
+ project.AddTopLevelProperty ("MonoNativeMode", "MONO_NATIVE_STATIC");;
break;
case MonoNativeLinkMode.Dynamic:
- project.AddAdditionalDefines ("MONO_NATIVE_DYNAMIC", platform, config);
- project.RemoveDefines ("MONO_NATIVE_STATIC; MONO_NATIVE_SYMLINK", platform, config);
+ project.AddTopLevelProperty ("MonoNativeMode", "MONO_NATIVE_DYNAMIC");
break;
case MonoNativeLinkMode.Symlink:
- project.AddAdditionalDefines ("MONO_NATIVE_SYMLINK", platform, config);
- project.RemoveDefines ("MONO_NATIVE_MONO_NATIVE_STATIC; MONO_NATIVE_DYNAMIC", platform, config);
+ project.AddTopLevelProperty ("MonoNativeMode", "MONO_NATIVE_SYMLINK");
break;
default:
throw new Exception ($"Unknown MonoNativeLinkMode: {link}");
}
}
- public static void RemoveSymlinkMode (XmlDocument project)
- {
- AddProjectDefines (project, MonoNativeLinkMode.Static, "iPhone", "Debug");
- AddProjectDefines (project, MonoNativeLinkMode.Static, "iPhoneSimulator", "Debug");
- }
-
public static string GetMinimumOSVersion (DevicePlatform platform, MonoNativeFlavor flavor)
{
switch (flavor) {
@@ -168,9 +127,8 @@ namespace Microsoft.DotNet.XHarness.iOS.Shared {
var xml = File.ReadAllText (TemplatePath);
inputProject.LoadXmlWithoutNetworkAccess (xml);
- inputProject.SetOutputPath ("bin\\$(Platform)\\$(Configuration)" + FlavorSuffix);
- inputProject.SetIntermediateOutputPath ("obj\\$(Platform)\\$(Configuration)" + FlavorSuffix);
inputProject.SetAssemblyName (inputProject.GetAssemblyName () + FlavorSuffix);
+ inputProject.AddAdditionalDefines (Flavor == MonoNativeFlavor.Compat ? "MONO_NATIVE_COMPAT" : "MONO_NATIVE_UNIFIED");
inputProject.ResolveAllPaths (TemplatePath);
var template_info_plist = inputProject.GetInfoPListInclude ().Replace ('\\', '/');
@@ -178,16 +136,9 @@ namespace Microsoft.DotNet.XHarness.iOS.Shared {
SetInfoPListMinimumOSVersion (template_info_plist, target_info_plist);
inputProject.FixInfoPListInclude (FlavorSuffix, newName: target_info_plist);
- AddProjectDefines (inputProject);
-
inputProject.Save (ProjectPath, log);
}
- public void AddProjectDefines (XmlDocument project)
- {
- MonoNativeHelper.AddProjectDefines (project, Flavor);
- }
-
public XmlDocument SetInfoPListMinimumOSVersion (string template_plist, string target_plist)
{
var template_info_plist = template_plist;
diff --git a/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/ProjectFileExtensions.cs b/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/ProjectFileExtensions.cs
index a169842f7e..f27915c5c1 100644
--- a/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/ProjectFileExtensions.cs
+++ b/tests/xharness/Microsoft.DotNet.XHarness.iOS.Shared/Utilities/ProjectFileExtensions.cs
@@ -817,6 +817,15 @@ namespace Microsoft.DotNet.XHarness.iOS.Shared.Utilities {
throw new Exception ("Could not find where to add a new DefineConstants node");
}
+ public static void AddTopLevelProperty (this XmlDocument csproj, string property, string value)
+ {
+ var propertyGroup = csproj.SelectNodes ("//*[local-name() = 'PropertyGroup' and not(@Condition)]") [0];
+
+ var propertyNode = csproj.CreateElement (property, csproj.GetNamespace ());
+ propertyNode.InnerText = value;
+ propertyGroup.AppendChild (propertyNode);
+ }
+
public static void SetNode (this XmlDocument csproj, string node, string value)
{
var nodes = csproj.SelectNodes ("/*/*/*[local-name() = '" + node + "']");