X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/746d9f705cc69e46256eb4e2d5f8006ab0dbd4d5..980c7d5a11260a0502b12f14f1ee62aff51a8e6f:/tools/cmake/MakeJava.cmake diff --git a/tools/cmake/MakeJava.cmake b/tools/cmake/MakeJava.cmake index 10acb49fe7..cdebc74d1a 100644 --- a/tools/cmake/MakeJava.cmake +++ b/tools/cmake/MakeJava.cmake @@ -52,11 +52,9 @@ endif() ## Files to include in simgrid.jar ## set(SIMGRID_JAR "${CMAKE_BINARY_DIR}/simgrid.jar") -set(SIMGRID_FULL_JAR "${CMAKE_BINARY_DIR}/simgrid_full.jar") set(MANIFEST_IN_FILE "${CMAKE_HOME_DIRECTORY}/src/bindings/java/MANIFEST.MF.in") set(MANIFEST_FILE "${CMAKE_BINARY_DIR}/src/bindings/java/MANIFEST.MF") - set(LIBSIMGRID_SO libsimgrid${CMAKE_SHARED_LIBRARY_SUFFIX}) set(LIBSIMGRID_JAVA_SO @@ -64,54 +62,71 @@ set(LIBSIMGRID_JAVA_SO set(LIBSURF_JAVA_SO ${CMAKE_SHARED_LIBRARY_PREFIX}surf-java${CMAKE_SHARED_LIBRARY_SUFFIX}) -## Don't strip libraries if not in release mode -## -if(release) - set(STRIP_COMMAND "${CMAKE_STRIP}") -else() - set(STRIP_COMMAND "true") -endif() - ## Here is how to build simgrid.jar ## if(CMAKE_VERSION VERSION_LESS "2.8.12") set(CMAKE_JAVA_TARGET_OUTPUT_NAME simgrid) - add_jar(simgrid-java_pre_jar ${JMSG_JAVA_SRC}) + add_jar(simgrid-java_jar ${JMSG_JAVA_SRC}) else() - add_jar(simgrid-java_pre_jar ${JMSG_JAVA_SRC} OUTPUT_NAME simgrid) + add_jar(simgrid-java_jar ${JMSG_JAVA_SRC} OUTPUT_NAME simgrid) endif() -set(JAVA_BUNDLE "${CMAKE_HOME_DIRECTORY}/tools/cmake/Scripts/java_bundle.sh") -set(JAVA_BUNDLE_SO_FILES - ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO} - ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO} - ${CMAKE_BINARY_DIR}/lib/${LIBSURF_JAVA_SO} - ) -set(JAVA_BUNDLE_TXT_FILES - ${CMAKE_HOME_DIRECTORY}/COPYING - ${CMAKE_HOME_DIRECTORY}/ChangeLog - ${CMAKE_HOME_DIRECTORY}/ChangeLog.SimGrid-java - ${CMAKE_HOME_DIRECTORY}/LICENSE-LGPL-2.1 - ) add_custom_command( - COMMENT "Finalize simgrid.jar..." - OUTPUT ${SIMGRID_JAR}_finalized - DEPENDS simgrid simgrid-java simgrid-java_pre_jar - ${SIMGRID_JAR} ${MANIFEST_IN_FILE} - ${JAVA_BUNDLE_SO_FILES} ${JAVA_BUNDLE_TXT_FILES} - COMMAND ${JAVA_BUNDLE} "${SIMGRID_JAR}" "${Java_JAVA_EXECUTABLE}" "${STRIP_COMMAND}" -so ${JAVA_BUNDLE_SO_FILES} -txt ${JAVA_BUNDLE_TXT_FILES} + 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}/ChangeLog.SimGrid-java + ${CMAKE_HOME_DIRECTORY}/LICENSE-LGPL-2.1 + + COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_JAR} -C ${CMAKE_HOME_DIRECTORY} COPYING ChangeLog ChangeLog.SimGrid-java 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_ARCHIVE} -uvmf ${MANIFEST_FILE} ${SIMGRID_JAR} - COMMAND ${CMAKE_COMMAND} -E copy ${SIMGRID_JAR} ${SIMGRID_FULL_JAR} - COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_FULL_JAR} "NATIVE" - COMMAND ${CMAKE_COMMAND} -E remove ${SIMGRID_JAR}_finalized - COMMAND ${CMAKE_COMMAND} -E touch ${SIMGRID_JAR}_finalized - COMMAND ${Java_JAVADOC_EXECUTABLE} -quiet -d doc/javadoc ${CMAKE_HOME_DIRECTORY}/src/bindings/java/org/simgrid/*.java ${CMAKE_HOME_DIRECTORY}/src/bindings/java/org/simgrid/*/*.java - COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_FULL_JAR} doc/javadoc + + COMMAND ${Java_JAVADOC_EXECUTABLE} -quiet -d doc/javadoc -sourcepath ${CMAKE_HOME_DIRECTORY}/src/bindings/java/ org.simgrid.msg org.simgrid.surf org.simgrid.trace + COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_JAR} doc/javadoc ) -add_custom_target(simgrid-java_jar ALL DEPENDS ${SIMGRID_JAR}_finalized) + +### +### Pack the java libraries into the jarfile if asked to do so +### + +if(enable_lib_in_jar) + + set(JAVA_NATIVE_PATH NATIVE/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}) + if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^i[3-6]86$") + set(JAVA_NATIVE_PATH NATIVE/${CMAKE_SYSTEM_NAME}/x86) + endif() + if( (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64") OR + (${CMAKE_SYSTEM_PROCESSOR} MATCHES "AMD64") ) + set(JAVA_NATIVE_PATH NATIVE/${CMAKE_SYSTEM_NAME}/amd64) + endif() + + add_custom_command( + TARGET simgrid-java_jar POST_BUILD + COMMENT "Add the native libs into simgrid.jar..." + DEPENDS simgrid-java + ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO} + ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO} + ${CMAKE_BINARY_DIR}/lib/${LIBSURF_JAVA_SO} + + 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 copy ${CMAKE_BINARY_DIR}/lib/${LIBSURF_JAVA_SO} ${JAVA_NATIVE_PATH} + + COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_JAR} NATIVE + COMMAND ${CMAKE_COMMAND} -E remove_directory NATIVE + + COMMAND ${CMAKE_COMMAND} -E echo "-- Cmake put the native code in ${JAVA_NATIVE_PATH}" + COMMAND "${Java_JAVA_EXECUTABLE}" -classpath "${SIMGRID_JAR}" org.simgrid.NativeLib + ) +endif(enable_lib_in_jar) include_directories(${JNI_INCLUDE_DIRS} ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2}) @@ -122,14 +137,6 @@ if(enable_maintainer_mode) set_source_files_properties(${JSURF_SWIG_SRC} PROPERTIES CPLUSPLUS 1) swig_add_module(surf-java java ${JSURF_SWIG_SRC} ${JSURF_JAVA_C_SRC}) - - if(NOT "${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_BINARY_DIR}") - add_custom_command(TARGET surf-java POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/surfJAVA_wrap.cxx" "${CMAKE_HOME_DIRECTORY}/src/bindings/java/org/simgrid/surf/surfJAVA_wrap.cxx" - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/src/bindings/java/org/simgrid/surf/surfJAVA_wrap.h" "${CMAKE_HOME_DIRECTORY}/src/bindings/java/org/simgrid/surf/surfJAVA_wrap.h" - ) - endif() - swig_link_libraries(surf-java simgrid) else() add_library(surf-java SHARED ${JSURF_C_SRC}) @@ -140,12 +147,11 @@ set_target_properties(surf-java PROPERTIES SKIP_BUILD_RPATH ON) set_target_properties(simgrid-java PROPERTIES SKIP_BUILD_RPATH ON) add_dependencies(simgrid-java surf-java) -add_dependencies(simgrid-java_pre_jar surf-java) +add_dependencies(simgrid-java_jar surf-java) if(WIN32) set_target_properties(surf-java PROPERTIES - LINK_FLAGS "-Wl,--subsystem,windows,--kill-at" - PREFIX "") + LINK_FLAGS "-Wl,--subsystem,windows,--kill-at") if(PEXPORTS_PATH) add_custom_command(TARGET surf-java POST_BUILD COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/lib/surf-java.dll > ${CMAKE_BINARY_DIR}/lib/surf-java.def)