From 9ba23946d14b0171571dbcdf7575f6bc7742e3c7 Mon Sep 17 00:00:00 2001 From: Chris Hamons Date: Mon, 12 Mar 2018 14:57:32 -0500 Subject: [PATCH] Revert "[macOS][msbuild] Fix binding projects under Full to resolve to correct libs (#3672)" This reverts commit d5b50765f5997f3bf23f8cea8fda3c0733b1e7bc. --- .../Xamarin.Mac.Common.props | 38 ---------- .../Xamarin.Mac.Common.targets | 58 ++++++++++++++-- .../Xamarin.Mac.ObjCBinding.CSharp.props | 19 +++++ .../Xamarin.Mac.ObjCBinding.CSharp.targets | 18 +++-- .../Xamarin.Mac.ObjCBinding.Common.props | 17 +---- .../Xamarin.Mac.ObjCBinding.Common.targets | 10 ++- .../Xamarin.Mac.TargetFrameworkFix.targets | 39 ----------- .../Xamarin.Mac.Tasks.csproj | 6 -- .../Xamarin.Mac.msbuild.targets | 9 ++- .../Xamarin.Mac.xbuild.targets | 22 ------ tests/bindings-test/ApiDefinition.cs | 6 +- tests/bindings-test/ApiProtocol.cs | 6 +- tests/common/mac/ProjectTestHelpers.cs | 6 +- tests/mmptest/mmptest.csproj | 1 - tests/mmptest/src/BindingProjectTests.cs | 69 ------------------- tests/mmptest/src/MMPTest.cs | 26 +++++++ tests/mmptest/src/NativeReferencesTests.cs | 16 ++--- tests/test-libraries/testgenerator.cs | 6 +- 18 files changed, 141 insertions(+), 231 deletions(-) delete mode 100644 msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.TargetFrameworkFix.targets delete mode 100644 msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.xbuild.targets delete mode 100644 tests/mmptest/src/BindingProjectTests.cs diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.props b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.props index db23a7978d..407a278184 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.props +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.props @@ -12,8 +12,6 @@ Copyright (C) 2013-2014 Xamarin. All rights reserved. *********************************************************************************************** --> - true - - /Library/Frameworks/Xamarin.Mac.framework/Versions/Current - - - - - - Modern - $(XamarinMacFrameworkRoot)/lib/mono/Xamarin.Mac - - - - - Full - $(XamarinMacFrameworkRoot)/lib/mono/4.5 - - - - - System - $(XamarinMacFrameworkRoot)/lib/mono/4.5 - - - - - - $(XamarinMacFrameworkRoot)/lib/reference/full;$(XamarinMacFrameworkRoot)/lib/mono;$(AssemblySearchPaths) - False - - - - - $([System.String]::Copy('$(AssemblySearchPaths)').Replace('{GAC}','')) - $(AssemblySearchPaths.Split(';')) - - diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets index d363c9fdfe..dd5549d900 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets @@ -14,9 +14,6 @@ Copyright (C) 2014 Xamarin. All rights reserved. *********************************************************************************************** --> - - @@ -63,6 +60,57 @@ Copyright (C) 2014 Xamarin. All rights reserved. + + /Library/Frameworks/Xamarin.Mac.framework/Versions/Current + + + + + + Modern + $(XamarinMacFrameworkRoot)/lib/mono/Xamarin.Mac + + + + + Full + $(XamarinMacFrameworkRoot)/lib/mono/4.5 + + + + + System + $(XamarinMacFrameworkRoot)/lib/mono/4.5 + + + + + + $(XamarinMacFrameworkRoot)/lib/reference/full;$(XamarinMacFrameworkRoot)/lib/mono;$(AssemblySearchPaths) + False + + + + + $([System.String]::Copy('$(AssemblySearchPaths)').Replace('{GAC}','')) + $(AssemblySearchPaths.Split(';')) + + + + + + + + + $(MacBclPath);@(DesignTimeFacadeDirectories) + + + + + $(TargetFrameworkDirectory);$(MacBclPath) + + + <_CanOutputAppBundle>False <_CanOutputAppBundle Condition="'$(OutputType)' == 'Exe' Or '$(IsAppExtension)' == 'true'">true @@ -651,8 +699,8 @@ Copyright (C) 2014 Xamarin. All rights reserved. /> - + diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.CSharp.props b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.CSharp.props index df5fd0b85f..47f4dfb1d5 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.CSharp.props +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.CSharp.props @@ -19,6 +19,25 @@ Copyright (C) 2014 Xamarin Inc. All rights reserved. + + /Library/Frameworks/Xamarin.Mac.framework/Versions/Current + + + + + v2.0 + Xamarin.Mac + + $(XamarinMacFrameworkRoot)/lib/mono/Xamarin.Mac/Xamarin.Mac.dll + $(XamarinMacFrameworkRoot)/lib/mono/4.5/Xamarin.Mac.dll + $(XamarinMacFrameworkRoot)/bin/ + bgen + bmac-mobile-mono + True + + __UNIFIED__;__MACOS__;$(DefineConstants) + + diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.CSharp.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.CSharp.targets index a6b2f5e96e..cc41cb8061 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.CSharp.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.CSharp.targets @@ -24,14 +24,18 @@ Copyright (C) 2014 Xamarin Inc. All rights reserved. - + - - <_GeneratedSourcesFileList>$(GeneratedSourcesDir)sources.list + true + false + + + + <_GeneratedSourcesFileList>$(GeneratedSourcesDir)\sources.list @@ -42,6 +46,11 @@ Copyright (C) 2014 Xamarin Inc. All rights reserved. + + + - - <_XamarinCommonBindingPropsHasBeenImported>true - - - - - - $(MacBclPath)/Xamarin.Mac.dll - $(XamarinMacFrameworkRoot)/bin/ - bgen - bmac-mobile-mono - True - - __UNIFIED__;__MACOS__;$(DefineConstants) + <_XamarinCommonPropsHasBeenImported>true diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.Common.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.Common.targets index 43fa989245..371f1d147c 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.Common.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.ObjCBinding.Common.targets @@ -20,16 +20,14 @@ Copyright (C) 2014 Xamarin Inc. All rights reserved. + Condition="'$(_XamarinCommonPropsHasBeenImported)' != 'true'" /> - - - + + /Library/Frameworks/Xamarin.Mac.framework/Versions/Current + diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.TargetFrameworkFix.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.TargetFrameworkFix.targets deleted file mode 100644 index 4879285e53..0000000000 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.TargetFrameworkFix.targets +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - $(MacBclPath);@(DesignTimeFacadeDirectories) - - - - - $(TargetFrameworkDirectory);$(MacBclPath) - - - - - - - - diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Tasks.csproj b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Tasks.csproj index 2d53532bff..8aa5e85b83 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Tasks.csproj +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Tasks.csproj @@ -80,12 +80,6 @@ PreserveNewest - - PreserveNewest - - - PreserveNewest - PreserveNewest diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.msbuild.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.msbuild.targets index 4fdb4a1b58..1a2a5f497b 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.msbuild.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.msbuild.targets @@ -22,7 +22,12 @@ Copyright (c) 2017 Microsoft Corp. (www.microsoft.com) $(MacBclPath) - - + + + + + + + diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.xbuild.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.xbuild.targets deleted file mode 100644 index 29e645566f..0000000000 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.xbuild.targets +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - diff --git a/tests/bindings-test/ApiDefinition.cs b/tests/bindings-test/ApiDefinition.cs index 54c509aff8..e92457191c 100644 --- a/tests/bindings-test/ApiDefinition.cs +++ b/tests/bindings-test/ApiDefinition.cs @@ -1,4 +1,7 @@ using System; +#if !__WATCHOS__ +using System.Drawing; +#endif #if __UNIFIED__ using ObjCRuntime; @@ -9,9 +12,6 @@ using AppKit; using UIKit; #endif #else -#if !__WATCHOS__ -using System.Drawing; -#endif using MonoTouch.ObjCRuntime; using MonoTouch.Foundation; using MonoTouch.UIKit; diff --git a/tests/bindings-test/ApiProtocol.cs b/tests/bindings-test/ApiProtocol.cs index a4106599ef..74889872ef 100644 --- a/tests/bindings-test/ApiProtocol.cs +++ b/tests/bindings-test/ApiProtocol.cs @@ -1,4 +1,7 @@ using System; +#if !__WATCHOS__ +using System.Drawing; +#endif #if __UNIFIED__ using ObjCRuntime; @@ -9,9 +12,6 @@ using AppKit; using UIKit; #endif #else -#if !__WATCHOS__ -using System.Drawing; -#endif using MonoTouch.ObjCRuntime; using MonoTouch.Foundation; using MonoTouch.UIKit; diff --git a/tests/common/mac/ProjectTestHelpers.cs b/tests/common/mac/ProjectTestHelpers.cs index 17c17901dd..6d6b9c976d 100644 --- a/tests/common/mac/ProjectTestHelpers.cs +++ b/tests/common/mac/ProjectTestHelpers.cs @@ -155,7 +155,6 @@ namespace Xamarin.MMP.Tests public string SystemMonoVersion { get; set; } = ""; public string TargetFrameworkVersion { get; set; } = ""; public Dictionary PlistReplaceStrings { get; set; } = new Dictionary(); - public Tuple CustomProjectReplacement { get; set; } = null; // Binding project specific public string APIDefinitionConfig { get; set; } @@ -272,15 +271,12 @@ namespace Xamarin.MMP.Tests static string ProjectTextReplacement (UnifiedTestConfig config, string text) { - text = text.Replace ("%CODE%", config.CSProjConfig) + return text.Replace ("%CODE%", config.CSProjConfig) .Replace ("%REFERENCES%", config.References) .Replace ("%REFERENCES_BEFORE_PLATFORM%", config.ReferencesBeforePlatform) .Replace ("%NAME%", config.AssemblyName ?? Path.GetFileNameWithoutExtension (config.ProjectName)) .Replace ("%ITEMGROUP%", config.ItemGroup) .Replace ("%TARGET_FRAMEWORK_VERSION%", config.TargetFrameworkVersion); - if (config.CustomProjectReplacement != null) - text = text.Replace (config.CustomProjectReplacement.Item1, config.CustomProjectReplacement.Item2); - return text; } public static string RunEXEAndVerifyGUID (string tmpDir, Guid guid, string path) diff --git a/tests/mmptest/mmptest.csproj b/tests/mmptest/mmptest.csproj index 4e78f23a1d..1851fde91c 100644 --- a/tests/mmptest/mmptest.csproj +++ b/tests/mmptest/mmptest.csproj @@ -103,7 +103,6 @@ StringUtils.cs - diff --git a/tests/mmptest/src/BindingProjectTests.cs b/tests/mmptest/src/BindingProjectTests.cs deleted file mode 100644 index 2438ba020f..0000000000 --- a/tests/mmptest/src/BindingProjectTests.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using System.Text; -using NUnit.Framework; - -namespace Xamarin.MMP.Tests -{ - public class BindingProjectTests - { - static string BindingName (bool full) => full ? "XM45Binding" : "MobileBinding"; - - static void BuildLinkedTestProjects (string tmpDir, bool full = false, bool removeTFI = false) - { - string bindingName = BindingName (full); - TI.UnifiedTestConfig test = new TI.UnifiedTestConfig (tmpDir) { - ProjectName = bindingName + ".csproj", - ItemGroup = MMPTests.CreateSingleNativeRef (Path.GetFullPath (MMPTests.SimpleDylibPath), "Dynamic"), - StructsAndEnumsConfig = "public class UnifiedWithDepNativeRefLibTestClass {}" - }; - - if (removeTFI) - test.CustomProjectReplacement = new Tuple (@"v4.5", ""); - - string projectPath = TI.GenerateBindingLibraryProject (test); - TI.BuildProject (projectPath, true); - - string referenceCode = string.Format (@"{1}", bindingName, Path.Combine (tmpDir, "bin/Debug", bindingName + ".dll")); - - test = new TI.UnifiedTestConfig (tmpDir) { - References = referenceCode, - TestCode = "System.Console.WriteLine (typeof (ExampleBinding.UnifiedWithDepNativeRefLibTestClass));", - XM45 = full - }; - TI.TestUnifiedExecutable (test); - } - - [Test] - public void ShouldRemovePackagedLibrary_OnceInBundle () - { - MMPTests.RunMMPTest (tmpDir => { - BuildLinkedTestProjects (tmpDir); - - string libPath = Path.Combine (tmpDir, "bin/Debug/UnifiedExample.app/Contents/MonoBundle/MobileBinding.dll"); - Assert.True (File.Exists (libPath)); - string monoDisResults = TI.RunAndAssert ("/Library/Frameworks/Mono.framework/Commands/monodis", "--presources " + libPath, "monodis"); - Assert.IsFalse (monoDisResults.Contains ("SimpleClassDylib.dylib")); - }); - } - - [TestCase (false, false)] - [TestCase (true, false)] - [TestCase (true, true)] - public void ShouldBuildWithoutErrors_AndLinkCorrectFramework (bool full, bool removeTFI) - { - MMPTests.RunMMPTest (tmpDir => { - BuildLinkedTestProjects (tmpDir, full, removeTFI); - - string libPath = Path.Combine (tmpDir, $"bin/Debug/{(full ? "XM45Example.app" : "UnifiedExample.app")}/Contents/MonoBundle/{BindingName (full)}.dll"); - Assert.True (File.Exists (libPath)); - string results = TI.RunAndAssert ("/Library/Frameworks/Mono.framework/Commands/monop", "--refs -r:" + libPath, "monop"); - string mscorlibLine = results.Split (new char[] { '\n' }).First (x => x.Contains ("mscorlib")); - - string expectedVersion = full ? "4.0.0.0" : "2.0.5.0"; - Assert.True (mscorlibLine.Contains (expectedVersion), $"{mscorlibLine} did not contain expected version {expectedVersion}"); - }); - } - } -} diff --git a/tests/mmptest/src/MMPTest.cs b/tests/mmptest/src/MMPTest.cs index bdf2b74e06..1915bce3d2 100644 --- a/tests/mmptest/src/MMPTest.cs +++ b/tests/mmptest/src/MMPTest.cs @@ -560,6 +560,32 @@ namespace Xamarin.MMP.Tests } }); } + + public void UnifiedWithDepNativeRefLib_ShouldHaveItRemoved_OnceInBundle () + { + RunMMPTest (tmpDir => + { + TI.UnifiedTestConfig test = new TI.UnifiedTestConfig (tmpDir) + { + ProjectName = "MobileBinding.csproj", + ItemGroup = string.Format (NativeReferenceTemplate, Path.GetFullPath (SimpleDylibPath), "Dynamic"), + StructsAndEnumsConfig = "public class UnifiedWithDepNativeRefLibTestClass {}" + }; + + string projectPath = TI.GenerateBindingLibraryProject (test); + TI.BuildProject (projectPath, true); + + string referenceCode = string.Format (@"{0}", Path.Combine (tmpDir, "bin/Debug", "MobileBinding.dll")); + + test = new TI.UnifiedTestConfig (tmpDir) { References = referenceCode, TestCode = "System.Console.WriteLine (typeof (ExampleBinding.UnifiedWithDepNativeRefLibTestClass));" }; + TI.TestUnifiedExecutable (test); + + string libPath = Path.Combine (tmpDir, "bin/Debug/UnifiedExample.app/Contents/MonoBundle/MobileBinding.dll"); + Assert.True (File.Exists (libPath)); + string monoDisResults = TI.RunAndAssert ("/Library/Frameworks/Mono.framework/Commands/monodis", new StringBuilder ("--presources " + libPath), "monodis"); + Assert.IsFalse (monoDisResults.Contains ("SimpleClassDylib.dylib")); + }); + } public const string BundleResourceTemplate = ""; diff --git a/tests/mmptest/src/NativeReferencesTests.cs b/tests/mmptest/src/NativeReferencesTests.cs index da5f35a082..06364b4ce1 100644 --- a/tests/mmptest/src/NativeReferencesTests.cs +++ b/tests/mmptest/src/NativeReferencesTests.cs @@ -10,10 +10,10 @@ using System.Reflection; namespace Xamarin.MMP.Tests { public partial class MMPTests { - public const string ItemGroupTemplate = @"{0}"; - public const string NativeReferenceTemplate = @"False{1}"; + const string ItemGroupTemplate = @"{0}"; + const string NativeReferenceTemplate = @"False{1}"; - public static string SimpleDylibPath { + public string SimpleDylibPath { get { string rootDir = TI.FindRootDirectory (); string buildLibPath = Path.Combine (rootDir, "../tests/mac-binding-project/bin/SimpleClassDylib.dylib"); @@ -22,7 +22,7 @@ namespace Xamarin.MMP.Tests } } - public static string SimpleStaticPath { + public string SimpleStaticPath { get { string rootDir = TI.FindRootDirectory (); string buildLibPath = Path.Combine (rootDir, "../tests/mac-binding-project/bin/SimpleClassStatic.a"); @@ -31,7 +31,7 @@ namespace Xamarin.MMP.Tests } } - public static string MobileStaticBindingPath { + public string MobileStaticBindingPath { get { string rootDir = TI.FindRootDirectory (); string buildLibPath = Path.Combine (rootDir, "../tests/mac-binding-project/bin/Mobile-static/MobileBinding.dll"); @@ -40,9 +40,9 @@ namespace Xamarin.MMP.Tests } } - public static string CreateNativeRefInclude (string path, string kind) => string.Format (NativeReferenceTemplate, path, kind); - public static string CreateItemGroup (IEnumerable elements) => string.Format (ItemGroupTemplate, string.Concat (elements)); - public static string CreateSingleNativeRef (string path, string kind) => CreateItemGroup (CreateNativeRefInclude (path, kind).FromSingleItem ()); + string CreateNativeRefInclude (string path, string kind) => string.Format (NativeReferenceTemplate, path, kind); + string CreateItemGroup (IEnumerable elements) => string.Format (ItemGroupTemplate, string.Concat (elements)); + string CreateSingleNativeRef (string path, string kind) => CreateItemGroup (CreateNativeRefInclude (path, kind).FromSingleItem ()); string CreateCopyOfSimpleClassInTestDir (string tmpDir, string fileName = "SimpleClassDylib.dylib") { diff --git a/tests/test-libraries/testgenerator.cs b/tests/test-libraries/testgenerator.cs index e2beb5d9d9..e7ca4cd7e4 100644 --- a/tests/test-libraries/testgenerator.cs +++ b/tests/test-libraries/testgenerator.cs @@ -352,6 +352,9 @@ static class C { WriteFrameworkDefines (w); w.AppendLine (@" using System; +#if !__WATCHOS__ +using System.Drawing; +#endif #if __UNIFIED__ using AVFoundation; @@ -374,9 +377,6 @@ using Security; using UIKit; #endif #else -#if !__WATCHOS__ -using System.Drawing; -#endif using MonoTouch.ObjCRuntime; using MonoTouch.Foundation; using MonoTouch.UIKit;