[mtouch/mmp] Share code between link contexts.
This commit is contained in:
Родитель
00b1c09acb
Коммит
b4cc60572b
|
@ -0,0 +1,34 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
using Mono.Cecil;
|
||||
using Mono.Linker;
|
||||
|
||||
namespace Xamarin.Tuner
|
||||
{
|
||||
public class DerivedLinkContext : LinkContext
|
||||
{
|
||||
Dictionary<string, MemberReference> required_symbols;
|
||||
List<MethodDefinition> marshal_exception_pinvokes;
|
||||
|
||||
public Dictionary<string, MemberReference> RequiredSymbols {
|
||||
get {
|
||||
if (required_symbols == null)
|
||||
required_symbols = new Dictionary<string, MemberReference> ();
|
||||
return required_symbols;
|
||||
}
|
||||
}
|
||||
|
||||
public List<MethodDefinition> MarshalExceptionPInvokes {
|
||||
get {
|
||||
if (marshal_exception_pinvokes == null)
|
||||
marshal_exception_pinvokes = new List<MethodDefinition> ();
|
||||
return marshal_exception_pinvokes;
|
||||
}
|
||||
}
|
||||
|
||||
public DerivedLinkContext (Pipeline pipeline, AssemblyResolver resolver)
|
||||
: base (pipeline, resolver)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,12 +9,6 @@ using Mono.Linker;
|
|||
using Mono.Linker.Steps;
|
||||
using Mono.Tuner;
|
||||
|
||||
#if MONOMAC
|
||||
using DerivedLinkContext = MonoMac.Tuner.MonoMacLinkContext;
|
||||
#else
|
||||
using DerivedLinkContext = MonoTouch.Tuner.MonoTouchLinkContext;
|
||||
#endif
|
||||
|
||||
namespace Xamarin.Linker.Steps {
|
||||
|
||||
// XML definition files have their limits, i.e. they are good to keep stuff around unconditionnally
|
||||
|
|
|
@ -8,12 +8,7 @@ using Mono.Tuner;
|
|||
|
||||
using Xamarin.Bundler;
|
||||
using Xamarin.Linker;
|
||||
|
||||
#if MONOMAC
|
||||
using DerivedLinkContext = MonoMac.Tuner.MonoMacLinkContext;
|
||||
#else
|
||||
using DerivedLinkContext = MonoTouch.Tuner.MonoTouchLinkContext;
|
||||
#endif
|
||||
using Xamarin.Tuner;
|
||||
|
||||
namespace MonoTouch.Tuner
|
||||
{
|
||||
|
|
|
@ -7,12 +7,6 @@ using Mono.Linker.Steps;
|
|||
using Mono.Tuner;
|
||||
using Xamarin.Linker;
|
||||
|
||||
#if MONOMAC
|
||||
using DerivedLinkContext = MonoMac.Tuner.MonoMacLinkContext;
|
||||
#else
|
||||
using DerivedLinkContext = MonoTouch.Tuner.MonoTouchLinkContext;
|
||||
#endif
|
||||
|
||||
namespace MonoTouch.Tuner {
|
||||
|
||||
//
|
||||
|
|
|
@ -117,6 +117,7 @@ mmp_sources = \
|
|||
$(TOP)/tools/common/Target.cs \
|
||||
$(TOP)/tools/common/Application.cs \
|
||||
$(TOP)/tools/common/Assembly.cs \
|
||||
$(TOP)/tools/common/DerivedLinkContext.cs \
|
||||
$(TOP)/src/Foundation/ConnectAttribute.cs \
|
||||
$(TOP)/src/Foundation/ExportAttribute.cs \
|
||||
$(TOP)/src/ObjCRuntime/ArgumentSemantic.cs \
|
||||
|
|
|
@ -11,6 +11,7 @@ using MonoTouch.Tuner;
|
|||
using Xamarin.Bundler;
|
||||
using Xamarin.Linker;
|
||||
using Xamarin.Linker.Steps;
|
||||
using Xamarin.Tuner;
|
||||
using Xamarin.Utils;
|
||||
|
||||
using Mono.Cecil;
|
||||
|
@ -54,11 +55,9 @@ namespace MonoMac.Tuner {
|
|||
}
|
||||
}
|
||||
|
||||
public class MonoMacLinkContext : LinkContext {
|
||||
public class MonoMacLinkContext : DerivedLinkContext {
|
||||
|
||||
Dictionary<string, List<MethodDefinition>> pinvokes = new Dictionary<string, List<MethodDefinition>> ();
|
||||
public Dictionary<string, MemberReference> RequiredSymbols = new Dictionary<string, MemberReference> ();
|
||||
List<MethodDefinition> marshal_exception_pinvokes;
|
||||
|
||||
public MonoMacLinkContext (Pipeline pipeline, AssemblyResolver resolver) : base (pipeline, resolver)
|
||||
{
|
||||
|
@ -67,14 +66,6 @@ namespace MonoMac.Tuner {
|
|||
public IDictionary<string, List<MethodDefinition>> PInvokeModules {
|
||||
get { return pinvokes; }
|
||||
}
|
||||
|
||||
public List<MethodDefinition> MarshalExceptionPInvokes {
|
||||
get {
|
||||
if (marshal_exception_pinvokes == null)
|
||||
marshal_exception_pinvokes = new List<MethodDefinition> ();
|
||||
return marshal_exception_pinvokes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Linker {
|
||||
|
|
|
@ -292,6 +292,9 @@
|
|||
<Compile Include="..\common\Target.cs">
|
||||
<Link>external\Target.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\common\DerivedLinkContext.cs">
|
||||
<Link>external\DerivedLinkContext.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\..\src\ObjCRuntime\Registrar.core.cs">
|
||||
<Link>external\Registrar.core.cs</Link>
|
||||
</Compile>
|
||||
|
|
|
@ -124,6 +124,7 @@ MTOUCH_SOURCES = \
|
|||
BitcodeConverter.cs \
|
||||
$(TOP)/tools/common/Application.cs \
|
||||
$(TOP)/tools/common/Assembly.cs \
|
||||
$(TOP)/tools/common/DerivedLinkContext.cs \
|
||||
$(TOP)/tools/common/Target.cs \
|
||||
$(TOP)/tools/common/CompilerFlags.cs \
|
||||
$(TOP)/src/Foundation/ExportAttribute.cs \
|
||||
|
|
|
@ -12,6 +12,7 @@ using Mono.Tuner;
|
|||
using Xamarin.Bundler;
|
||||
using Xamarin.Linker;
|
||||
using Xamarin.Linker.Steps;
|
||||
using Xamarin.Tuner;
|
||||
|
||||
namespace MonoTouch.Tuner {
|
||||
|
||||
|
@ -223,26 +224,7 @@ namespace MonoTouch.Tuner {
|
|||
}
|
||||
}
|
||||
|
||||
public class MonoTouchLinkContext : LinkContext {
|
||||
Dictionary<string, MemberReference> required_symbols;
|
||||
List<MethodDefinition> marshal_exception_pinvokes;
|
||||
|
||||
public Dictionary<string, MemberReference> RequiredSymbols {
|
||||
get {
|
||||
if (required_symbols == null)
|
||||
required_symbols = new Dictionary<string, MemberReference> ();
|
||||
return required_symbols;
|
||||
}
|
||||
}
|
||||
|
||||
public List<MethodDefinition> MarshalExceptionPInvokes {
|
||||
get {
|
||||
if (marshal_exception_pinvokes == null)
|
||||
marshal_exception_pinvokes = new List<MethodDefinition> ();
|
||||
return marshal_exception_pinvokes;
|
||||
}
|
||||
}
|
||||
|
||||
public class MonoTouchLinkContext : DerivedLinkContext {
|
||||
public MonoTouchLinkContext (Pipeline pipeline, AssemblyResolver resolver)
|
||||
: base (pipeline, resolver)
|
||||
{
|
||||
|
|
|
@ -262,6 +262,9 @@
|
|||
<Compile Include="..\common\Target.cs">
|
||||
<Link>external\Target.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\common\DerivedLinkContext.cs">
|
||||
<Link>external\DerivedLinkContext.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\common\Frameworks.cs">
|
||||
<Link>external\Frameworks.cs</Link>
|
||||
</Compile>
|
||||
|
|
Загрузка…
Ссылка в новой задаче