From d5da0b1cbb3bbd66e62160fe10d55046b1773b6e Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Fri, 2 Oct 2015 08:21:24 +0200 Subject: [PATCH] also include winpthread.dll in the jarfile --- src/bindings/java/org/simgrid/msg/Msg.java | 9 +++++++++ .../java/org/simgrid/surf/SurfJNI.java | 3 +++ src/bindings/java/surf.i | 3 +++ tools/cmake/Java.cmake | 18 ++++++++++++++++++ 4 files changed, 33 insertions(+) diff --git a/src/bindings/java/org/simgrid/msg/Msg.java b/src/bindings/java/org/simgrid/msg/Msg.java index 8153a4241d..c442da4260 100644 --- a/src/bindings/java/org/simgrid/msg/Msg.java +++ b/src/bindings/java/org/simgrid/msg/Msg.java @@ -16,6 +16,15 @@ public final class Msg { public static void nativeInit() { if (isNativeInited) return; + try { + NativeLib.nativeInit("winpthread"); + } catch (Exception e) { + if (System.getProperty("os.name").toLowerCase().startsWith("win")) { + System.err.println("Cannot load winpthread.dll:"); + e.printStackTrace(); + } + } + NativeLib.nativeInit("simgrid"); NativeLib.nativeInit("simgrid-java"); isNativeInited = true; diff --git a/src/bindings/java/org/simgrid/surf/SurfJNI.java b/src/bindings/java/org/simgrid/surf/SurfJNI.java index aad944caa0..ec066f3e1a 100644 --- a/src/bindings/java/org/simgrid/surf/SurfJNI.java +++ b/src/bindings/java/org/simgrid/surf/SurfJNI.java @@ -13,6 +13,9 @@ import org.simgrid.NativeLib; public class SurfJNI { static { + try { + NativeLib.nativeInit("winpthread"); + } catch (Exception e) {} NativeLib.nativeInit("simgrid"); NativeLib.nativeInit("surf-java"); Runtime.getRuntime().addShutdownHook( diff --git a/src/bindings/java/surf.i b/src/bindings/java/surf.i index 7e0c774a9c..13d23a93ca 100644 --- a/src/bindings/java/surf.i +++ b/src/bindings/java/surf.i @@ -16,6 +16,9 @@ import org.simgrid.NativeLib; %} %pragma(java) jniclasscode=%{ static { + try { + NativeLib.nativeInit("winpthread"); + } catch (Exception e) {} NativeLib.nativeInit("simgrid"); NativeLib.nativeInit("surf-java"); Runtime.getRuntime().addShutdownHook( diff --git a/tools/cmake/Java.cmake b/tools/cmake/Java.cmake index 006213d698..7bebd68289 100644 --- a/tools/cmake/Java.cmake +++ b/tools/cmake/Java.cmake @@ -124,6 +124,24 @@ if(enable_lib_in_jar) COMMAND ${CMAKE_COMMAND} -E echo "-- Cmake put the native code in ${JAVA_NATIVE_PATH}" COMMAND "${Java_JAVA_EXECUTABLE}" -classpath "${SIMGRID_JAR}" org.simgrid.NativeLib ) + if(MINGW) + find_library(WINPTHREAD_DLL + NAME winpthread winpthread-1 + PATHS C:\MinGW C:\MinGW64 C:\MinGW\bin C:\MinGW64\bin + ) + add_custom_command( + TARGET simgrid-java_jar POST_BUILD + COMMENT "Add the MinGW libs into simgrid.jar..." + DEPENDS ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO} + + COMMAND ${CMAKE_COMMAND} -E remove_directory NATIVE + COMMAND ${CMAKE_COMMAND} -E make_directory ${JAVA_NATIVE_PATH} + COMMAND ${CMAKE_COMMAND} -E copy ${WINPTHREAD_DLL} ${JAVA_NATIVE_PATH} + + COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_JAR} NATIVE + COMMAND ${CMAKE_COMMAND} -E remove_directory NATIVE + ) + endif(MINGW) endif(enable_lib_in_jar) include_directories(${JNI_INCLUDE_DIRS} ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2}) -- 2.20.1