Skip to content

Commit 9084234

Browse files
committed
[mono][librarymode] Bundle runtimeconfig.bin
1 parent c1924b2 commit 9084234

File tree

5 files changed

+42
-9
lines changed

5 files changed

+42
-9
lines changed

Diff for: src/mono/msbuild/android/build/AndroidBuild.targets

+2-1
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,8 @@
247247
<Target Name="_AndroidGenerateRuntimeConfig"
248248
Inputs="$(_AndroidRuntimeConfigFilePath)"
249249
Outputs="$(_ParsedRuntimeConfigFilePath)"
250-
Condition="Exists('$(_AndroidRuntimeConfigFilePath)')">
250+
Condition="Exists('$(_AndroidRuntimeConfigFilePath)')"
251+
BeforeTargets="_GenerateBundle">
251252
<ItemGroup>
252253
<_RuntimeConfigReservedProperties Include="RUNTIME_IDENTIFIER"/>
253254
<_RuntimeConfigReservedProperties Include="APP_CONTEXT_BASE_DIRECTORY"/>

Diff for: src/mono/msbuild/apple/build/AppleBuild.targets

+2-1
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,8 @@
274274
<Target Name="_AppleGenerateRuntimeConfig"
275275
Inputs="$(_AppleRuntimeConfigFilePath)"
276276
Outputs="$(_ParsedRuntimeConfigFilePath)"
277-
Condition="Exists('$(_AppleRuntimeConfigFilePath)')">
277+
Condition="Exists('$(_AppleRuntimeConfigFilePath)')"
278+
BeforeTargets="_GenerateBundle">
278279
<ItemGroup>
279280
<_RuntimeConfigReservedProperties Include="RUNTIME_IDENTIFIER"/>
280281
<_RuntimeConfigReservedProperties Include="APP_CONTEXT_BASE_DIRECTORY"/>

Diff for: src/mono/msbuild/common/LibraryBuilder.targets

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
<ItemGroup>
5252
<_AssembliesToBundle Remove="@(_AssembliesToBundle)" />
5353
<_AssembliesToBundle Include="@(_AssembliesToBundleInternal)" />
54+
<_AssembliesToBundle Include="$(_ParsedRuntimeConfigFilePath)" />
5455
</ItemGroup>
5556

5657
<GetFileHash Files="@(_AssembliesToBundle)">

Diff for: src/tasks/LibraryBuilder/Templates/autoinit.c

+36-7
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,33 @@
1818

1919
#include "library-builder.h"
2020

21+
#if defined(BUNDLED_ASSEMBLIES)
22+
23+
static void
24+
cleanup_runtime_config (MonovmRuntimeConfigArguments *args, void *user_data)
25+
{
26+
free (args);
27+
free (user_data);
28+
}
29+
30+
static void
31+
initialize_runtimeconfig ()
32+
{
33+
MonovmRuntimeConfigArguments *arg = (MonovmRuntimeConfigArguments *)malloc (sizeof (MonovmRuntimeConfigArguments));
34+
if (!arg)
35+
LOG_ERROR ("Out of memory.\n");
36+
37+
arg->kind = 1;
38+
const char *data;
39+
int data_len;
40+
mono_get_bundled_assembly ("runtimeconfig.bin", &data, &data_len);
41+
arg->runtimeconfig.data.data = data;
42+
arg->runtimeconfig.data.data_len = data_len;
43+
monovm_runtimeconfig_initialize (arg, cleanup_runtime_config, NULL);
44+
}
45+
46+
#else
47+
2148
static void
2249
cleanup_runtime_config (MonovmRuntimeConfigArguments *args, void *user_data)
2350
{
@@ -54,6 +81,8 @@ initialize_runtimeconfig (const char *bundle_path)
5481
}
5582
}
5683

84+
#endif // BUNDLED_ASSEMBLIES
85+
5786
static void
5887
initialize_appctx_env_variables (const char *bundle_path)
5988
{
@@ -110,6 +139,13 @@ free_aot_data (MonoAssembly *assembly, int size, void *user_data, void *handle)
110139
static void
111140
runtime_init_callback ()
112141
{
142+
register_aot_modules ();
143+
144+
#if defined(BUNDLED_ASSEMBLIES)
145+
mono_register_assemblies_bundle ();
146+
mono_register_bundle ();
147+
#endif
148+
113149
const char *assemblies_location = getenv ("%ASSEMBLIES_LOCATION%");
114150
if (!assemblies_location || assemblies_location[0] == '\0')
115151
assemblies_location = "./";
@@ -123,13 +159,6 @@ runtime_init_callback ()
123159

124160
initialize_appctx_env_variables (bundle_path);
125161

126-
register_aot_modules ();
127-
128-
#if defined(BUNDLED_ASSEMBLIES)
129-
mono_register_assemblies_bundle ();
130-
mono_register_bundle ();
131-
#endif
132-
133162
mono_set_assemblies_path (bundle_path);
134163

135164
mono_jit_set_aot_only (true);

Diff for: src/tasks/LibraryBuilder/Templates/library-builder.h

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737

3838
void register_aot_modules (void);
3939
#if defined(BUNDLED_ASSEMBLIES)
40+
void mono_get_bundled_assembly (const char *name, const unsigned char **out_data, unsigned int *out_size);
4041
void mono_register_assemblies_bundle (void);
4142
void mono_register_bundle (void);
4243
#endif // BUNDLED_ASSEMBLIES

0 commit comments

Comments
 (0)