From 21936948bbb07105db3981441b7726a75ee4cdf5 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Tue, 24 Jul 2018 14:05:07 -0400 Subject: [PATCH] [msbuild] Xcode10 changed the copySceneKitAssets command-line arguments (#4469) Fixes https://github.com/xamarin/xamarin-macios/issues/4467 --- .../Xamarin.Mac.Common.targets | 1 + .../PlatformUtils.cs | 27 +++++++++++++++++++ .../Tasks/ACToolTaskBase.cs | 27 +++---------------- .../Tasks/CompileSceneKitAssetsTaskBase.cs | 16 ++++++++++- .../Xamarin.MacDev.Tasks.Core.csproj | 1 + .../Xamarin.iOS.Common.targets | 2 ++ 6 files changed, 50 insertions(+), 24 deletions(-) create mode 100644 msbuild/Xamarin.MacDev.Tasks.Core/PlatformUtils.cs diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets index b9f436d984..86229f5e0b 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets @@ -599,6 +599,7 @@ Copyright (C) 2014 Xamarin. All rights reserved. IntermediateOutputPath="$(IntermediateOutputPath)" ProjectDir="$(MSBuildProjectDirectory)" ResourcePrefix="$(XamMacResourcePrefix)" + SdkPlatform="MacOSX" SdkDevPath="$(_SdkDevPath)" SdkRoot="$(_SdkRoot)" SdkVersion="$(MacOSXSdkVersion)"> diff --git a/msbuild/Xamarin.MacDev.Tasks.Core/PlatformUtils.cs b/msbuild/Xamarin.MacDev.Tasks.Core/PlatformUtils.cs new file mode 100644 index 0000000000..d64ddbc360 --- /dev/null +++ b/msbuild/Xamarin.MacDev.Tasks.Core/PlatformUtils.cs @@ -0,0 +1,27 @@ +namespace Xamarin.MacDev.Tasks +{ + public static class PlatformUtils + { + public static string GetTargetPlatform (string sdkPlatform, bool isWatchApp) + { + switch (sdkPlatform) { + case "iPhoneSimulator": + return isWatchApp ? "watchsimulator" : "iphonesimulator"; + case "iPhoneOS": + return isWatchApp ? "watchos" : "iphoneos"; + case "MacOSX": + return "macosx"; + case "WatchSimulator": + return "watchsimulator"; + case "WatchOS": + return "watchos"; + case "AppleTVSimulator": + return "appletvsimulator"; + case "AppleTVOS": + return "appletvos"; + } + + return null; + } + } +} diff --git a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ACToolTaskBase.cs b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ACToolTaskBase.cs index b7e6734d0e..c0f80b2c55 100644 --- a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ACToolTaskBase.cs +++ b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/ACToolTaskBase.cs @@ -178,29 +178,10 @@ namespace Xamarin.MacDev.Tasks args.Add ("--minimum-deployment-target", minimumDeploymentTarget); - switch (SdkPlatform) { - case "iPhoneSimulator": - args.Add ("--platform", IsWatchApp ? "watchsimulator" : "iphonesimulator"); - break; - case "iPhoneOS": - args.Add ("--platform", IsWatchApp ? "watchos" : "iphoneos"); - break; - case "MacOSX": - args.Add ("--platform", "macosx"); - break; - case "WatchSimulator": - args.Add ("--platform", "watchsimulator"); - break; - case "WatchOS": - args.Add ("--platform", "watchos"); - break; - case "AppleTVSimulator": - args.Add ("--platform", "appletvsimulator"); - break; - case "AppleTVOS": - args.Add ("--platform", "appletvos"); - break; - } + var platform = PlatformUtils.GetTargetPlatform (SdkPlatform, IsWatchApp); + + if (platform != null) + args.Add ("--platform", platform); } IEnumerable GetCompiledBundleResources (PDictionary output, string intermediateBundleDir) diff --git a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/CompileSceneKitAssetsTaskBase.cs b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/CompileSceneKitAssetsTaskBase.cs index f0d99d650f..b0a6535d42 100644 --- a/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/CompileSceneKitAssetsTaskBase.cs +++ b/msbuild/Xamarin.MacDev.Tasks.Core/Tasks/CompileSceneKitAssetsTaskBase.cs @@ -21,6 +21,8 @@ namespace Xamarin.MacDev.Tasks [Required] public string IntermediateOutputPath { get; set; } + public bool IsWatchApp { get; set; } + [Required] public string ProjectDir { get; set; } @@ -33,6 +35,9 @@ namespace Xamarin.MacDev.Tasks [Required] public string SdkDevPath { get; set; } + [Required] + public string SdkPlatform { get; set; } + [Required] public string SdkRoot { get; set; } @@ -106,7 +111,16 @@ namespace Xamarin.MacDev.Tasks args.Add ("-o"); args.AddQuoted (Path.GetFullPath (output)); args.AddQuotedFormat ("--sdk-root={0}", SdkRoot); - args.AddQuotedFormat ("--target-version-{0}={1}", OperatingSystem, SdkVersion); + + if (AppleSdkSettings.XcodeVersion.Major >= 10) { + var platform = PlatformUtils.GetTargetPlatform (SdkPlatform, IsWatchApp); + if (platform != null) + args.Add ("--target-platform", platform); + + args.AddQuotedFormat ("--target-version={0}", SdkVersion); + } else { + args.AddQuotedFormat ("--target-version-{0}={1}", OperatingSystem, SdkVersion); + } args.AddQuotedFormat ("--target-build-dir={0}", Path.GetFullPath (intermediate)); var startInfo = GetProcessStartInfo (environment, GetFullPathToTool (), args.ToString ()); diff --git a/msbuild/Xamarin.MacDev.Tasks.Core/Xamarin.MacDev.Tasks.Core.csproj b/msbuild/Xamarin.MacDev.Tasks.Core/Xamarin.MacDev.Tasks.Core.csproj index 632c63ccce..cacfe91b17 100644 --- a/msbuild/Xamarin.MacDev.Tasks.Core/Xamarin.MacDev.Tasks.Core.csproj +++ b/msbuild/Xamarin.MacDev.Tasks.Core/Xamarin.MacDev.Tasks.Core.csproj @@ -54,6 +54,7 @@ + diff --git a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets index 6e262031e3..ead4741549 100644 --- a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets +++ b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets @@ -1285,6 +1285,8 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved. IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)" ProjectDir="$(MSBuildProjectDirectory)" ResourcePrefix="$(IPhoneResourcePrefix)" + IsWatchApp="$(IsWatchApp)" + SdkPlatform="$(_SdkPlatform)" SdkDevPath="$(_SdkDevPath)" SdkRoot="$(_SdkRoot)" SdkVersion="$(MtouchSdkVersion)">