Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[dotnet] Use the type_map_path arg #18175

Merged
merged 1 commit into from
May 1, 2023
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
5 changes: 3 additions & 2 deletions tools/common/Application.cs
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ public bool IsDefaultMarshalManagedExceptionMode {
public bool EnableBitCode { get { return BitCodeMode != BitCodeMode.None; } }

public bool SkipMarkingNSObjectsInUserAssemblies { get; set; }
public string ClassMapPath = "";

// assembly_build_targets describes what kind of native code each assembly should be compiled into for mobile targets (iOS, tvOS, watchOS).
// An assembly can be compiled into: static object (.o), dynamic library (.dylib) or a framework (.framework).
Expand Down Expand Up @@ -1028,9 +1029,9 @@ public void RunRegistrar ()
#endif
var registrar = new Registrar.StaticRegistrar (this);
if (RootAssemblies.Count == 1)
registrar.GenerateSingleAssembly (resolver, resolvedAssemblies.Values, Path.ChangeExtension (registrar_m, "h"), registrar_m, Path.GetFileNameWithoutExtension (RootAssembly), out var _);
registrar.GenerateSingleAssembly (resolver, resolvedAssemblies.Values, Path.ChangeExtension (registrar_m, "h"), registrar_m, Path.GetFileNameWithoutExtension (RootAssembly), out var _, ClassMapPath);
else
registrar.Generate (resolver, resolvedAssemblies.Values, Path.ChangeExtension (registrar_m, "h"), registrar_m, out var _);
registrar.Generate (resolver, resolvedAssemblies.Values, Path.ChangeExtension (registrar_m, "h"), registrar_m, out var _, ClassMapPath);
}

public IEnumerable<Abi> Abis {
Expand Down
1 change: 1 addition & 0 deletions tools/common/Driver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ static bool ParseOptions (Application app, Mono.Options.OptionSet options, strin
options.Add ("skip-marking-nsobjects-in-user-assemblies:", "Don't mark NSObject (and any subclass of NSObject) in user assemblies in the linker. This may break your app, use at own risk.", v => {
app.SkipMarkingNSObjectsInUserAssemblies = ParseBool (v, "--skip-marking-nsobjects-in-user-assemblies");
});
options.Add ("class-map-path=", "Sets the path for an output path to generate a class map XML file used to optimize class handle access when the static registrar has been used.", v => { app.ClassMapPath = v; });


// Keep the ResponseFileSource option at the end.
Expand Down
8 changes: 4 additions & 4 deletions tools/common/StaticRegistrar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5145,18 +5145,18 @@ public void GeneratePInvokeWrapper (PInvokeWrapperGenerator state, MethodDefinit
pinfo.EntryPoint = wrapperName;
}

public void GenerateSingleAssembly (PlatformResolver resolver, IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, string assembly, out string initialization_method, string type_map_path = null)
public void GenerateSingleAssembly (PlatformResolver resolver, IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, string assembly, out string initialization_method, string type_map_path)
{
single_assembly = assembly;
Generate (resolver, assemblies, header_path, source_path, out initialization_method, type_map_path);
}

public void Generate (IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, out string initialization_method, string type_map_path = null)
public void Generate (IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, out string initialization_method, string type_map_path)
{
Generate (null, assemblies, header_path, source_path, out initialization_method, type_map_path);
}

public void Generate (PlatformResolver resolver, IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, out string initialization_method, string type_map_path = null)
public void Generate (PlatformResolver resolver, IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, out string initialization_method, string type_map_path)
{
this.resolver = resolver;

Expand All @@ -5173,7 +5173,7 @@ public void Generate (PlatformResolver resolver, IEnumerable<AssemblyDefinition>
Generate (header_path, source_path, out initialization_method, type_map_path);
}

void Generate (string header_path, string source_path, out string initialization_method, string type_map_path = null)
void Generate (string header_path, string source_path, out string initialization_method, string type_map_path)
{
var sb = new AutoIndentStringBuilder ();
header = new AutoIndentStringBuilder ();
Expand Down
2 changes: 1 addition & 1 deletion tools/dotnet-linker/Steps/RegistrarStep.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ protected override void TryEndProcess ()
if (Annotations.GetAction (assembly) != Mono.Linker.AssemblyAction.Delete)
bundled_assemblies.Add (assembly);
}
Configuration.Target.StaticRegistrar.Generate (bundled_assemblies, header, code, out var initialization_method);
Configuration.Target.StaticRegistrar.Generate (bundled_assemblies, header, code, out var initialization_method, app.ClassMapPath);

var items = new List<MSBuildItem> ();
foreach (var abi in Configuration.Abis) {
Expand Down
2 changes: 1 addition & 1 deletion tools/mmp/driver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -794,7 +794,7 @@ static void Compile ()
if (App.Registrar == RegistrarMode.Static) {
registrarPath = Path.Combine (App.Cache.Location, "registrar.m");
var registrarH = Path.Combine (App.Cache.Location, "registrar.h");
BuildTarget.StaticRegistrar.Generate (BuildTarget.Resolver.ResolverCache.Values, registrarH, registrarPath, out initialization_method);
BuildTarget.StaticRegistrar.Generate (BuildTarget.Resolver.ResolverCache.Values, registrarH, registrarPath, out initialization_method, App.ClassMapPath);

var platform_assembly = BuildTarget.Resolver.ResolverCache.First ((v) => v.Value.Name.Name == BuildTarget.StaticRegistrar.PlatformAssembly).Value;
Frameworks.Gather (App, platform_assembly, BuildTarget.Frameworks, BuildTarget.WeakFrameworks);
Expand Down
2 changes: 1 addition & 1 deletion tools/mtouch/BuildTasks.mtouch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ public override IEnumerable<string> Outputs {

protected override void Execute ()
{
Target.StaticRegistrar.Generate (Target.Assemblies.Select ((a) => a.AssemblyDefinition), RegistrarHeaderPath, RegistrarCodePath, out var initialization_name);
Target.StaticRegistrar.Generate (Target.Assemblies.Select ((a) => a.AssemblyDefinition), RegistrarHeaderPath, RegistrarCodePath, out var initialization_name, Target.App.ClassMapPath);
RegistrationMethods.Add (initialization_name);
}
}
Expand Down