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
11 changes: 11 additions & 0 deletions build-tools/scripts/RunTests.targets
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
<_ApkTestProject Include="$(_TopDir)\tests\BCL-Tests\Xamarin.Android.Bcl-Tests\Xamarin.Android.Bcl-Tests.csproj" />
<_ApkTestProject Include="$(_TopDir)\tests\Xamarin.Forms-Performance-Integration\Droid\Xamarin.Forms.Performance.Integration.Droid.csproj" />
<_ApkTestProjectAot Include="$(_TopDir)\src\Mono.Android\Test\Mono.Android-Tests.csproj" />
<_ApkTestProjectBundle Include="$(_TopDir)\src\Mono.Android\Test\Mono.Android-Tests.csproj" />
</ItemGroup>
<Target Name="RunNUnitTests">
<SetEnvironmentVariable Name="USE_MSBUILD" Value="0" Condition=" '$(USE_MSBUILD)' == '' " />
Expand Down Expand Up @@ -95,6 +96,16 @@
Condition=" '$(Configuration)' == 'Release' "
Properties="AotAssemblies=True"
/>
<Exec
Command="$(_XABuild) %(_ApkTestProjectBundle.Identity) /t:SignAndroidPackage $(_XABuildProperties) /p:BundleAssemblies=True /p:EmbedAssembliesIntoApk=True"
Condition=" '$(Configuration)' == 'Release' "
/>
<MSBuild
ContinueOnError="ErrorAndContinue"
Projects="$(_TopDir)\tests\RunApkTests.targets"
Condition=" '$(Configuration)' == 'Release' "
Properties="BundleAssemblies=True"
/>
</Target>
<Target Name="RunPerformanceTests">
<MSBuild Projects="$(MSBuildThisFileDirectory)..\timing\timing.csproj" Targets="MSBuildTiming" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
Expand Down Expand Up @@ -156,14 +157,21 @@ bool DoExecute ()
return false;
}

Log.LogDebugMessage ("[mkbundle] modifying mono_mkbundle_init");
// make some changes in the mkbundle output so that it does not require libmonodroid.so
var mkbundleOutput = File.ReadAllText (Path.Combine (outpath, "temp.c"));
mkbundleOutput = mkbundleOutput.Replace ("void mono_mkbundle_init ()", "void mono_mkbundle_init (void (register_bundled_assemblies_func)(const MonoBundledAssembly **), void (register_config_for_assembly_func)(const char *, const char *))")
var mkbundleOutput = new StringBuilder (File.ReadAllText (Path.Combine (outpath, "temp.c")));

mkbundleOutput.Replace ("mono_jit_set_aot_mode", "mono_jit_set_aot_mode_ptr")
.Replace ("void mono_mkbundle_init ()", "void mono_mkbundle_init (void (register_bundled_assemblies_func)(const MonoBundledAssembly **), void (register_config_for_assembly_func)(const char *, const char *), void (mono_jit_set_aot_mode_func) (int mode))")
.Replace ("mono_register_config_for_assembly (\"", "register_config_for_assembly_func (\"")
.Replace ("install_dll_config_files (void)", "install_dll_config_files (void (register_config_for_assembly_func)(const char *, const char *))")
.Replace ("install_dll_config_files ()", "install_dll_config_files (register_config_for_assembly_func)")
.Replace ("mono_register_bundled_assemblies(", "register_bundled_assemblies_func(");
File.WriteAllText (Path.Combine (outpath, "temp.c"), mkbundleOutput);
.Replace ("mono_register_bundled_assemblies(", "register_bundled_assemblies_func(")
.Replace ("int nbundles;", "int nbundles;\n\n\tmono_jit_set_aot_mode_ptr = mono_jit_set_aot_mode_func;");

mkbundleOutput.Insert (0, "void (*mono_jit_set_aot_mode_ptr) (int mode);\n");

File.WriteAllText (Path.Combine (outpath, "temp.c"), mkbundleOutput.ToString ());

// then compile temp.c into temp.o and ...

Expand Down
4 changes: 2 additions & 2 deletions src/monodroid/jni/monodroid-glue.c
Original file line number Diff line number Diff line change
Expand Up @@ -682,7 +682,7 @@ get_libmonosgen_path ()
return libmonoso;
}

typedef void* (*mono_mkbundle_init_ptr) (void (*)(const MonoBundledAssembly **), void (*)(const char* assembly_name, const char* config_xml));
typedef void* (*mono_mkbundle_init_ptr) (void (*)(const MonoBundledAssembly **), void (*)(const char* assembly_name, const char* config_xml),void (*) (int mode));
mono_mkbundle_init_ptr mono_mkbundle_init;

static void
Expand Down Expand Up @@ -2633,7 +2633,7 @@ mono_runtime_init (char *runtime_args)
register_gc_hooks ();

if (mono_mkbundle_init)
mono_mkbundle_init (mono.mono_register_bundled_assemblies, mono.mono_register_config_for_assembly);
mono_mkbundle_init (mono.mono_register_bundled_assemblies, mono.mono_register_config_for_assembly, mono.mono_jit_set_aot_mode);

/*
* Assembly preload hooks are invoked in _reverse_ registration order.
Expand Down