add_jar(simgrid-java_jar ${JMSG_JAVA_SRC} OUTPUT_NAME simgrid)
endif()
-add_custom_command(
- TARGET simgrid-java_jar POST_BUILD
- COMMENT "Add the documentation into simgrid.jar..."
- DEPENDS ${MANIFEST_IN_FILE}
- ${CMAKE_HOME_DIRECTORY}/COPYING
- ${CMAKE_HOME_DIRECTORY}/ChangeLog
- ${CMAKE_HOME_DIRECTORY}/NEWS
- ${CMAKE_HOME_DIRECTORY}/ChangeLog.SimGrid-java
- ${CMAKE_HOME_DIRECTORY}/LICENSE-LGPL-2.1
-
- COMMAND ${CMAKE_COMMAND} -E copy ${MANIFEST_IN_FILE} ${MANIFEST_FILE}
- COMMAND ${CMAKE_COMMAND} -E echo "Specification-Version: \\\"${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}.${SIMGRID_VERSION_PATCH}\\\"" >> ${MANIFEST_FILE}
- COMMAND ${CMAKE_COMMAND} -E echo "Implementation-Version: \\\"${GIT_VERSION}\\\"" >> ${MANIFEST_FILE}
-
- COMMAND ${Java_JAVADOC_EXECUTABLE} -quiet -d doc/javadoc -sourcepath ${CMAKE_HOME_DIRECTORY}/src/bindings/java/ org.simgrid.msg org.simgrid.trace
-
- COMMAND ${JAVA_ARCHIVE} -uvmf ${MANIFEST_FILE} ${SIMGRID_JAR} doc/javadoc
- COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_JAR} -C ${CMAKE_HOME_DIRECTORY} COPYING -C ${CMAKE_HOME_DIRECTORY} ChangeLog -C ${CMAKE_HOME_DIRECTORY} LICENSE-LGPL-2.1 -C ${CMAKE_HOME_DIRECTORY} NEWS
+if (enable_documentation)
+ add_custom_command(
+ TARGET simgrid-java_jar POST_BUILD
+ COMMENT "Add the documentation into simgrid.jar..."
+ DEPENDS ${MANIFEST_IN_FILE}
+ ${CMAKE_HOME_DIRECTORY}/COPYING
+ ${CMAKE_HOME_DIRECTORY}/ChangeLog
+ ${CMAKE_HOME_DIRECTORY}/NEWS
+ ${CMAKE_HOME_DIRECTORY}/ChangeLog.SimGrid-java
+ ${CMAKE_HOME_DIRECTORY}/LICENSE-LGPL-2.1
+
+ COMMAND ${CMAKE_COMMAND} -E copy ${MANIFEST_IN_FILE} ${MANIFEST_FILE}
+ COMMAND ${CMAKE_COMMAND} -E echo "Specification-Version: \\\"${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}.${SIMGRID_VERSION_PATCH}\\\"" >> ${MANIFEST_FILE}
+ COMMAND ${CMAKE_COMMAND} -E echo "Implementation-Version: \\\"${GIT_VERSION}\\\"" >> ${MANIFEST_FILE}
+
+ COMMAND ${Java_JAVADOC_EXECUTABLE} -quiet -d doc/javadoc -sourcepath ${CMAKE_HOME_DIRECTORY}/src/bindings/java/ org.simgrid.msg org.simgrid.trace
+
+ COMMAND ${JAVA_ARCHIVE} -uvmf ${MANIFEST_FILE} ${SIMGRID_JAR} doc/javadoc
+ COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_JAR} -C ${CMAKE_HOME_DIRECTORY} COPYING -C ${CMAKE_HOME_DIRECTORY} ChangeLog -C ${CMAKE_HOME_DIRECTORY} LICENSE-LGPL-2.1 -C ${CMAKE_HOME_DIRECTORY} NEWS
)
+endif()
###
### Pack the java libraries into the jarfile if asked to do so
set(JAVA_NATIVE_PATH NATIVE/${SG_SYSTEM_NAME}/arm) # Default arm (soft-float ABI)
endif()
+ # Find how to copy
+ set(SHEXE sh)
+ if(WIN32)
+ set(SHEXE sh.exe)
+ endif()
+
+ # Find what to copy
+ set(JAVALIBS ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO} ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO})
+ if (HAVE_BOOST_CONTEXT)
+ set(JAVALIBS ${JAVALIBS} ${Boost_CONTEXT_LIBRARY_RELEASE})
+ endif()
+ if(MINGW)
+ find_library(WINPTHREAD_DLL
+ NAME winpthread winpthread-1
+ PATHS C:\\MinGW C:\\MinGW64 C:\\MinGW\\bin C:\\MinGW64\\bin C:\\msys64\\mingw32\\bin C:\\msys64\\mingw32 C:\\msys\\mingw32\\bin C:\\msys\\mingw32 C:\\msys64\\mingw64\\bin C:\\msys64\\mingw64 C:\\msys\\mingw64\\bin C:\\msys\\mingw64
+ )
+ if(${WINPTHREAD_DLL})
+ set(JAVALIBS ${JAVALIBS} ${WINPTHREAD_DLL})
+ endif()
+ endif(MINGW)
+ string(REPLACE ";" " " JAVALIBS "${JAVALIBS}")
+ message("-- [Java] Native Libs: ${JAVALIBS}")
+
add_custom_command(
TARGET simgrid-java_jar POST_BUILD
COMMENT "Add the native libs into simgrid.jar..."
- DEPENDS simgrid simgrid-java
- ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO}
- ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO}
+ DEPENDS simgrid simgrid-java ${JAVALIBS}
- COMMAND ${CMAKE_COMMAND} -E remove_directory NATIVE
- COMMAND ${CMAKE_COMMAND} -E make_directory ${JAVA_NATIVE_PATH}
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO} ${JAVA_NATIVE_PATH}
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO} ${JAVA_NATIVE_PATH}
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${JAVA_NATIVE_PATH}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${JAVA_NATIVE_PATH}
+
+ COMMAND echo cp ${JAVALIBS} ${JAVA_NATIVE_PATH} # Just display what's going on
+ # So, first of all, I'm sorry for the next few lines. Here is what's going on.
+ # I need to copy some files, depending on the environment.
+ # I cannot use several POST_BUILD commands because cmake does
+ # force them to run sequentially, so it fails if we build with -j
+ # So I add some content to the JAVALIBS cmake variable, and copy them in one shoot.
+ # But cmake list variables are ; separated, not space separated.
+ # So I string(REPLACE a bit above to change ; into spaces.
+ # But if I do so, cmake still passes the space-separated list as a single argument to cp.
+ # So I have to fire a sh -c, just to correctly parse the cp parameters.
+ # Yup. That's the ways it goes. cmake is so lovely, that's wonderful.
+ COMMAND ${SHEXE} -c "cp ${JAVALIBS} ${JAVA_NATIVE_PATH}" # cp is less portable, but cmake cannot copy several files at once
## strip seems to fail on Mac on binaries that are already stripped.
## It then spits: "symbols referenced by indirect symbol table entries that can't be stripped"
#COMMAND ${STRIP_COMMAND} ${JAVA_NATIVE_PATH}/${LIBSIMGRID_SO} || true
#COMMAND ${STRIP_COMMAND} ${JAVA_NATIVE_PATH}/${LIBSIMGRID_JAVA_SO} || true
- COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_JAR} NATIVE
+ COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_JAR} ${JAVA_NATIVE_PATH}
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${JAVA_NATIVE_PATH}
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 (HAVE_BOOST_CONTEXT)
- add_custom_command(
- TARGET simgrid-java_jar POST_BUILD
- COMMENT "Add the boost_context lib into simgrid.jar..."
- COMMAND ${CMAKE_COMMAND} -E copy ${Boost_CONTEXT_LIBRARY_RELEASE} ${JAVA_NATIVE_PATH}
- COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_JAR} NATIVE
- )
- endif()
-
- 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})
set_target_properties(simgrid-java PROPERTIES SKIP_BUILD_RPATH ON)
+add_dependencies(simgrid-java_jar simgrid-java)
+add_dependencies(simgrid-java_jar simgrid)
+