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: 9 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -172,9 +172,16 @@ JRE_DLL_CONFIG=bin/$(CONFIGURATION)/Java.Runtime.Environment.dll.config
$(JRE_DLL_CONFIG): src/Java.Runtime.Environment/Java.Runtime.Environment.csproj
$(MSBUILD) $(MSBUILD_FLAGS) $<

run-test-jnimarshal: bin/Test$(CONFIGURATION)/Java.Interop.Export-Tests.dll bin/Test$(CONFIGURATION)/$(JAVA_INTEROP_LIB) $(JRE_DLL_CONFIG)
define run-jnimarshalmethod-gen
MONO_TRACE_LISTENER=Console.Out \
$(RUNTIME) bin/$(CONFIGURATION)/jnimarshalmethod-gen.exe -v --jvm "$(JI_JVM_PATH)" -L "$(JI_MONO_LIB_PATH)mono/4.5" -L "$(JI_MONO_LIB_PATH)mono/4.5/Facades" "$<"
$(RUNTIME) bin/$(CONFIGURATION)/jnimarshalmethod-gen.exe -v --jvm "$(JI_JVM_PATH)" -L "$(JI_MONO_LIB_PATH)mono/4.5" -L "$(JI_MONO_LIB_PATH)mono/4.5/Facades" $(2) $(1)
endef

run-test-jnimarshal: bin/Test$(CONFIGURATION)/Java.Interop.Export-Tests.dll bin/Test$(CONFIGURATION)/$(JAVA_INTEROP_LIB) $(JRE_DLL_CONFIG)
mkdir -p test-jni-output
$(call run-jnimarshalmethod-gen,"$<",-f -o test-jni-output --keeptemp)
(test -f test-jni-output/$(notdir $<) && test -f test-jni-output/Java.Interop.Export-Tests-JniMarshalMethods.dll) || { echo "jnimarshalmethod-gen did not create the expected assemblies in the test-jni-output directory"; exit 1; }
$(call run-jnimarshalmethod-gen,"$<")
$(call RUN_TEST,$<)

# $(call GEN_CORE_OUTPUT, outdir, suffix, extra)
Expand Down
12 changes: 7 additions & 5 deletions tools/jnimarshalmethod-gen/App.cs
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,8 @@ void CreateMarshalMethodAssembly (string path)

var baseName = Path.GetFileNameWithoutExtension (path);
var assemblyName = new AssemblyName (baseName + "-JniMarshalMethods");
var destPath = assemblyName.Name + ".dll";
var fileName = assemblyName.Name + ".dll";
var destDir = string.IsNullOrEmpty (outDirectory) ? Path.GetDirectoryName (path) : outDirectory;
var builder = CreateExportedMemberBuilder ();
var matchType = typeNameRegexes.Count > 0;

Expand All @@ -297,9 +298,9 @@ void CreateMarshalMethodAssembly (string path)
var da = AppDomain.CurrentDomain.DefineDynamicAssembly (
assemblyName,
AssemblyBuilderAccess.Save,
Path.GetDirectoryName (path));
destDir);

var dm = da.DefineDynamicModule ("<default>", destPath);
var dm = da.DefineDynamicModule ("<default>", fileName);

var ad = resolver.GetAssembly (path);

Expand Down Expand Up @@ -428,12 +429,13 @@ void CreateMarshalMethodAssembly (string path)
foreach (var tb in definedTypes)
tb.Value.CreateType ();

da.Save (destPath);
da.Save (fileName);

if (Verbose)
ColorWriteLine ($"Marshal method assembly '{assemblyName}' created", ConsoleColor.Cyan);

var dstAssembly = resolver.GetAssembly (destPath);
resolver.SearchDirectories.Add (destDir);
var dstAssembly = resolver.GetAssembly (fileName);

if (!string.IsNullOrEmpty (outDirectory))
path = Path.Combine (outDirectory, Path.GetFileName (path));
Expand Down