Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[win+java] sort out the linker flags that we pass
authorMartin Quinson <martin.quinson@loria.fr>
Mon, 5 Oct 2015 21:59:46 +0000 (23:59 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Mon, 5 Oct 2015 21:59:46 +0000 (23:59 +0200)
tools/cmake/GCCFlags.cmake
tools/cmake/Java.cmake

index 6b41adf..936283a 100644 (file)
@@ -168,12 +168,13 @@ if(NOT $ENV{LDFLAGS} STREQUAL "")
   set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} $ENV{LDFLAGS}")
 endif()
 
-# We don't want to ship libgcc_s_seh-1.dll nor libstdc++-6.dll
-#  This will probably be troublesome if someone wants to use the lib in
-#  its own project, but we only want to have java working on Windows.
 if(MINGW)
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc")
+  # http://stackoverflow.com/questions/10452262/create-64-bit-jni-under-windows
+  # We don't want to ship libgcc_s_seh-1.dll nor libstdc++-6.dll
+  set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS}   -static-libgcc")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++")
-  set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS} -static-libgcc -s")
-  set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS} -static-libgcc -static-libstdc++ -s")
+  
+  # JNI searches for stdcalls
+  set(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS}   -Wl,--add-stdcall-alias")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--add-stdcall-alias")
 endif()
index 8b00711..4b8f501 100644 (file)
@@ -38,12 +38,15 @@ if(WIN32)
   exec_program("java -d32 -version"
                 OUTPUT_VARIABLE IS_32_BITS_JVM)
   STRING( FIND ${IS_32_BITS_JVM} "Error" POSITION )
-  if(${POSITION} GREATER -1)
-    message("POTENTIAL ERROR: Java JVM needs to be 32 bits to be able to run with Simgrid on Windows for now")
+  if(NOT ${POSITION} GREATER -1)
+    message(fatal_error "SimGrid can only use Java 64 bits")
   endif()
 
-  set_target_properties(simgrid-java PROPERTIES
-    LINK_FLAGS "-Wl,--subsystem,windows,--kill-at")
+# Already passed to all targets in GCCFlags.cmake
+#  set_target_properties(simgrid-java PROPERTIES
+#    LINK_FLAGS "-Wl,--subsystem,windows,--kill-at")
+#  set_target_properties(surf-java PROPERTIES
+#    LINK_FLAGS "-Wl,--subsystem,windows,--kill-at")
 endif()
 
 # Rules to build simgrid.jar
@@ -179,7 +182,3 @@ set_target_properties(simgrid-java PROPERTIES SKIP_BUILD_RPATH ON)
 add_dependencies(simgrid-java surf-java)
 add_dependencies(simgrid-java_jar surf-java)
 
-if(WIN32)
-  set_target_properties(surf-java PROPERTIES
-    LINK_FLAGS "-Wl,--subsystem,windows,--kill-at")
-endif()