Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Build libSG_java.
[simgrid.git] / buildtools / Cmake / MakeLib.cmake
index bce4151..09cd281 100644 (file)
@@ -23,6 +23,30 @@ if(enable_smpi)
   endif()
 endif()
 
+if(enable_java)
+  add_library(SG_java SHARED ${JMSG_C_SRC})
+  set_target_properties(SG_java PROPERTIES VERSION ${libSG_java_version})
+  get_target_property(COMMON_INCLUDES SG_java INCLUDE_DIRECTORIES)
+  set_target_properties(SG_java PROPERTIES
+    INCLUDE_DIRECTORIES "${COMMON_INCLUDES};${JNI_INCLUDE_DIRS}")
+  add_dependencies(SG_java simgrid)
+
+  if(WIN32)
+    get_target_property(SIMGRID_LIB_NAME_NAME SG_java LIBRARY_OUTPUT_NAME)
+    set_target_properties(SG_java PROPERTIES
+      LINK_FLAGS "-Wl,--subsystem,windows,--kill-at ${SIMGRID_LIB_NAME}"
+      PREFIX "")
+    find_path(PEXPORTS_PATH NAMES pexports.exe PATHS NO_DEFAULT_PATHS)
+    message(STATUS "pexports: ${PEXPORTS_PATH}")
+    if(PEXPORTS_PATH)
+      add_custom_command(TARGET SG_java POST_BUILD
+        COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/SG_java.dll > ${CMAKE_BINARY_DIR}/SG_java.def)
+    endif(PEXPORTS_PATH)
+  else()
+    target_link_libraries(SG_java simgrid)
+  endif()
+endif()
+
 add_dependencies(simgrid maintainer_files)
 
 # if supernovaeing, we need some depends to make sure that the source gets generated