[dotnet] Parse the -gcc_flags and -link_flags mtouch/mmp arguments and pass them to the native linker. (#13521)
This commit is contained in:
Родитель
bc65a52227
Коммит
b8e9c61409
|
@ -1058,7 +1058,7 @@
|
|||
EntitlementsInExecutable="$(_CompiledEntitlements)"
|
||||
FrameworkRPath="$(_EmbeddedFrameworksRPath)"
|
||||
Frameworks="@(_NativeExecutableFrameworks);@(_BindingLibraryFrameworks)"
|
||||
LinkerFlags="@(_AssemblyLinkerFlags);@(_ReferencesLinkerFlags);@(_MainLinkerFlags)"
|
||||
LinkerFlags="@(_AssemblyLinkerFlags);@(_ReferencesLinkerFlags);@(_MainLinkerFlags);@(_CustomLinkFlags)"
|
||||
LinkWithLibraries="@(_XamarinMainLibraries);@(_BindingLibraryLinkWith);@(_MainLinkWith)"
|
||||
MinimumOSVersion="$(_MinimumOSVersion)"
|
||||
NativeReferences="@(_FileNativeReference);@(_FrameworkNativeReference)"
|
||||
|
|
|
@ -1106,6 +1106,15 @@ namespace Xamarin.Localization.MSBuild {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Could not parse the custom linker argument(s) '-{0}': {1}.
|
||||
/// </summary>
|
||||
public static string E0189 {
|
||||
get {
|
||||
return ResourceManager.GetString("E0189", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Could not resolve host IPs for WiFi debugger settings.
|
||||
/// .
|
||||
|
|
|
@ -888,6 +888,10 @@
|
|||
<value>Could not map the Mac Catalyst version {0} to a corresponding macOS version. Valid Mac Catalyst versions are: {1}</value>
|
||||
</data>
|
||||
|
||||
<data name="E0189" xml:space="preserve">
|
||||
<value>Could not parse the custom linker argument(s) '-{0}': {1}</value>
|
||||
</data>
|
||||
|
||||
<data name="E7001" xml:space="preserve">
|
||||
<value>Could not resolve host IPs for WiFi debugger settings.
|
||||
</value>
|
||||
|
|
|
@ -3,6 +3,9 @@ using System.Collections.Generic;
|
|||
using Microsoft.Build.Utilities;
|
||||
using Microsoft.Build.Framework;
|
||||
|
||||
using Xamarin.Localization.MSBuild;
|
||||
using Xamarin.Utils;
|
||||
|
||||
namespace Xamarin.MacDev.Tasks {
|
||||
public abstract class ParseBundlerArgumentsTaskBase : XamarinTask {
|
||||
public string ExtraArgs { get; set; }
|
||||
|
@ -22,6 +25,9 @@ namespace Xamarin.MacDev.Tasks {
|
|||
[Output]
|
||||
public string CustomBundleName { get; set; }
|
||||
|
||||
[Output]
|
||||
public ITaskItem[] CustomLinkFlags { get; set; }
|
||||
|
||||
[Output]
|
||||
public string NoSymbolStrip { get; set; }
|
||||
|
||||
|
@ -55,6 +61,7 @@ namespace Xamarin.MacDev.Tasks {
|
|||
if (!string.IsNullOrEmpty (ExtraArgs)) {
|
||||
var args = CommandLineArgumentBuilder.Parse (ExtraArgs);
|
||||
List<string> xml = null;
|
||||
List<string> customLinkFlags = null;
|
||||
var envVariables = new List<ITaskItem> ();
|
||||
var dlsyms = new List<ITaskItem> ();
|
||||
|
||||
|
@ -149,6 +156,16 @@ namespace Xamarin.MacDev.Tasks {
|
|||
// Output is EnableAssemblyILStripping so we enable if --nostrip=false and disable if true
|
||||
NoStrip = ParseBool (value) ? "false" : "true";
|
||||
break;
|
||||
case "gcc_flags": // mtouch uses gcc_flags
|
||||
case "link_flags": // mmp uses link_flags
|
||||
if (!StringUtils.TryParseArguments (value, out var lf, out var ex)) {
|
||||
Log.LogError (MSBStrings.E0189 /* Could not parse the custom linker argument(s) '-{0}': {1} */, $"-{name}={value}", ex.Message);
|
||||
continue;
|
||||
}
|
||||
if (customLinkFlags is null)
|
||||
customLinkFlags = new List<string> ();
|
||||
customLinkFlags.AddRange (lf);
|
||||
break;
|
||||
default:
|
||||
Log.LogMessage (MessageImportance.Low, "Skipping unknown argument '{0}' with value '{1}'", name, value);
|
||||
break;
|
||||
|
@ -164,6 +181,15 @@ namespace Xamarin.MacDev.Tasks {
|
|||
XmlDefinitions = defs.ToArray ();
|
||||
}
|
||||
|
||||
if (customLinkFlags is not null) {
|
||||
var defs = new List<ITaskItem> ();
|
||||
if (CustomLinkFlags is not null)
|
||||
defs.AddRange (CustomLinkFlags);
|
||||
foreach (var lf in customLinkFlags)
|
||||
defs.Add (new TaskItem (lf));
|
||||
CustomLinkFlags = defs.ToArray ();
|
||||
}
|
||||
|
||||
if (envVariables.Count > 0) {
|
||||
if (EnvironmentVariables != null)
|
||||
envVariables.AddRange (EnvironmentVariables);
|
||||
|
|
|
@ -1658,6 +1658,7 @@ Copyright (C) 2018 Microsoft. All rights reserved.
|
|||
Verbosity="$(_BundlerVerbosity)"
|
||||
>
|
||||
<Output TaskParameter="CustomBundleName" PropertyName="_CustomBundleName" />
|
||||
<Output TaskParameter="CustomLinkFlags" ItemName="_CustomLinkFlags" />
|
||||
<Output TaskParameter="DlSym" ItemName="_BundlerDlsym" />
|
||||
<Output TaskParameter="EnvironmentVariables" ItemName="_BundlerEnvironmentVariables" />
|
||||
<Output TaskParameter="MarshalManagedExceptionMode" PropertyName="_MarshalManagedExceptionMode" />
|
||||
|
|
Загрузка…
Ссылка в новой задаче