Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
also include winpthread.dll in the jarfile
authorMartin Quinson <martin.quinson@loria.fr>
Fri, 2 Oct 2015 06:21:24 +0000 (08:21 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Fri, 2 Oct 2015 06:21:24 +0000 (08:21 +0200)
src/bindings/java/org/simgrid/msg/Msg.java
src/bindings/java/org/simgrid/surf/SurfJNI.java
src/bindings/java/surf.i
tools/cmake/Java.cmake

index 8153a42..c442da4 100644 (file)
@@ -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;
index aad944c..ec066f3 100644 (file)
@@ -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(
index 7e0c774..13d23a9 100644 (file)
@@ -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(
index 006213d..7bebd68 100644 (file)
@@ -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})