Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion mk/xamarin.mk
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ifdef ENABLE_XAMARIN
NEEDED_MACCORE_VERSION := 9a5e6f02f305d1b580229b37c7775c4897738f4d
NEEDED_MACCORE_VERSION := 190c67d8551def7bef9aa89c3100805ca57761ab
NEEDED_MACCORE_BRANCH := master

MACCORE_DIRECTORY := maccore
Expand Down
29 changes: 28 additions & 1 deletion tools/mmp/Tuning.cs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ static Pipeline CreatePipeline (LinkerOptions options)
{
var pipeline = new Pipeline ();

pipeline.AppendStep (new LoadReferencesStep ());
pipeline.AppendStep (options.LinkMode == LinkMode.None ? new LoadOptionalReferencesStep () : new LoadReferencesStep ());

if (options.I18nAssemblies != I18nAssemblies.None)
pipeline.AppendStep (new LoadI18nAssemblies (options.I18nAssemblies));
Expand Down Expand Up @@ -240,4 +240,31 @@ protected override void ProcessAssembly (AssemblyDefinition assembly)
base.ProcessAssembly (assembly);
}
}

class LoadOptionalReferencesStep : LoadReferencesStep
{
HashSet<AssemblyNameDefinition> _references = new HashSet<AssemblyNameDefinition> ();

protected override void ProcessAssembly (AssemblyDefinition assembly)
{
ProcessReferences (assembly);
}

void ProcessReferences (AssemblyDefinition assembly)
{
if (_references.Contains (assembly.Name))
return;

_references.Add (assembly.Name);

foreach (AssemblyNameReference reference in assembly.MainModule.AssemblyReferences) {
try {
ProcessReferences (Context.Resolve (reference));
} catch (AssemblyResolutionException fnfe) {
ErrorHelper.Warning (2013, fnfe, "Failed to resolve the reference to \"{0}\", referenced in \"{1}\". The app will not include the referenced assembly, and may fail at runtime.", fnfe.AssemblyReference.FullName, assembly.Name.FullName);
}
}
}
}

}
1 change: 1 addition & 0 deletions tools/mmp/error.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ namespace Xamarin.Bundler {
// MM2010 Unknown HttpMessageHandler `{0}`. Valid values are HttpClientHandler (default), CFNetworkHandler or NSUrlSessionHandler
// MM2011 Unknown TLSProvider `{0}. Valid values are default, legacy or appletls
// MM2012 Only first {0} of {1} "Referenced by" warnings shown. ** This message related to 2009 **
// Warning MM2013 Failed to resolve the reference to "{0}", referenced in "{1}". The app will not include the referenced assembly, and may fail at runtime.
// MM4xxx code generation
// MM40xx driver.m
// MM4001 The main template could not be expansed to `{0}`.
Expand Down
1 change: 1 addition & 0 deletions tools/mtouch/error.cs
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,7 @@ namespace Xamarin.Bundler {
// MT2010 Unknown HttpMessageHandler `{0}`. Valid values are HttpClientHandler (default), CFNetworkHandler or NSUrlSessionHandler
// MT2011 Unknown TlsProvider `{0}`. Valid values are default, legacy or appletls.
// MT2012 ** reserved Xamarin.Mac **
// MT2013 ** reserved Xamarin.Mac **
// MT3xxx AOT
// MT30xx AOT (general) errors
// MT3001 Could not AOT the assembly '{0}'
Expand Down