From 9de545ad66d38a56d1c8ca193f5c5ab129a5f0ec Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Wed, 27 Nov 2013 16:37:49 +0100 Subject: [PATCH] Isolate generation of the NATIVE path for the jar file. Now it can be obtained by running: java -classpath simgrid.jar org.simgrid.msg.NativeLib Use it also when finalizing the jar file. --- buildtools/Cmake/DefinePackages.cmake | 4 +- buildtools/Cmake/MakeJava.cmake | 43 ++++--------- buildtools/Cmake/Scripts/java_bundle.sh | 60 +++++++++++++++++++ src/bindings/java/org/simgrid/msg/Msg.java | 14 +---- .../java/org/simgrid/msg/NativeLib.java | 28 +++++++++ 5 files changed, 105 insertions(+), 44 deletions(-) create mode 100755 buildtools/Cmake/Scripts/java_bundle.sh create mode 100644 src/bindings/java/org/simgrid/msg/NativeLib.java diff --git a/buildtools/Cmake/DefinePackages.cmake b/buildtools/Cmake/DefinePackages.cmake index 9e7f0d76bf..b2d079e437 100644 --- a/buildtools/Cmake/DefinePackages.cmake +++ b/buildtools/Cmake/DefinePackages.cmake @@ -470,12 +470,13 @@ set(JMSG_JAVA_SRC src/bindings/java/org/simgrid/msg/Msg.java src/bindings/java/org/simgrid/msg/MsgException.java src/bindings/java/org/simgrid/msg/Mutex.java - src/bindings/java/org/simgrid/msg/Semaphore.java src/bindings/java/org/simgrid/msg/NativeException.java + src/bindings/java/org/simgrid/msg/NativeLib.java src/bindings/java/org/simgrid/msg/Process.java src/bindings/java/org/simgrid/msg/ProcessKilledError.java src/bindings/java/org/simgrid/msg/ProcessNotFoundException.java src/bindings/java/org/simgrid/msg/RngStream.java + src/bindings/java/org/simgrid/msg/Semaphore.java src/bindings/java/org/simgrid/msg/Task.java src/bindings/java/org/simgrid/msg/TaskCancelledException.java src/bindings/java/org/simgrid/msg/TimeoutException.java @@ -1021,6 +1022,7 @@ set(CMAKE_SOURCE_FILES buildtools/Cmake/Scripts/SimGrid.packproj buildtools/Cmake/Scripts/generate_memcheck_tests.pl buildtools/Cmake/Scripts/generate_new_tests.pl + buildtools/Cmake/Scripts/java_bundle.sh buildtools/Cmake/Scripts/my_valgrind.pl buildtools/Cmake/Scripts/postinstall.sh buildtools/Cmake/Scripts/preinstall.sh diff --git a/buildtools/Cmake/MakeJava.cmake b/buildtools/Cmake/MakeJava.cmake index 7db344a2c3..9f957f250e 100644 --- a/buildtools/Cmake/MakeJava.cmake +++ b/buildtools/Cmake/MakeJava.cmake @@ -65,20 +65,6 @@ set(LIBSIMGRID_SO set(LIBSIMGRID_JAVA_SO ${CMAKE_SHARED_LIBRARY_PREFIX}simgrid-java${CMAKE_SHARED_LIBRARY_SUFFIX}) -## Name of the "NATIVE" folder in simgrid.jar -## -if(CMAKE_SYSTEM_PROCESSOR MATCHES ".86") - if(${ARCH_32_BITS}) - set(JSG_BUNDLE "NATIVE/${CMAKE_SYSTEM_NAME}/i386/") - else() - set(JSG_BUNDLE "NATIVE/${CMAKE_SYSTEM_NAME}/amd64/") - endif() -else() - message(WARNING "Unknown system type. Processor: ${CMAKE_SYSTEM_PROCESSOR}; System: ${CMAKE_SYSTEM_NAME}") - set(JSG_BUNDLE "NATIVE/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}/") -endif() -message("-- [Java] Native libraries bundled into: ${JSG_BUNDLE}") - ## Don't strip libraries if not in release mode ## if(release) @@ -96,27 +82,24 @@ else() add_jar(simgrid-java_pre_jar ${JMSG_JAVA_SRC} OUTPUT_NAME simgrid) endif() +set(JAVA_BUNDLE "${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Scripts/java_bundle.sh") +set(JAVA_BUNDLE_SO_FILES + ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO} + ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_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} - ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO} - ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO} - ${CMAKE_HOME_DIRECTORY}/COPYING - ${CMAKE_HOME_DIRECTORY}/ChangeLog - ${CMAKE_HOME_DIRECTORY}/ChangeLog.SimGrid-java - ${CMAKE_HOME_DIRECTORY}/LICENSE-LGPL-2.1 - COMMAND ${CMAKE_COMMAND} -E remove_directory "NATIVE" - COMMAND ${CMAKE_COMMAND} -E make_directory "${JSG_BUNDLE}" - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO}" "${JSG_BUNDLE}" - COMMAND ${STRIP_COMMAND} -S "${JSG_BUNDLE}/${LIBSIMGRID_SO}" - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO}" "${JSG_BUNDLE}" - COMMAND ${STRIP_COMMAND} -S "${JSG_BUNDLE}/${LIBSIMGRID_JAVA_SO}" - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_HOME_DIRECTORY}/COPYING" "${JSG_BUNDLE}" - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_HOME_DIRECTORY}/ChangeLog" "${JSG_BUNDLE}" - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_HOME_DIRECTORY}/ChangeLog.SimGrid-java" "${JSG_BUNDLE}" - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_HOME_DIRECTORY}/LICENSE-LGPL-2.1" "${JSG_BUNDLE}" + ${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} 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} diff --git a/buildtools/Cmake/Scripts/java_bundle.sh b/buildtools/Cmake/Scripts/java_bundle.sh new file mode 100755 index 0000000000..1c232b82a0 --- /dev/null +++ b/buildtools/Cmake/Scripts/java_bundle.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +set -e +#set -x + +if [ $# -lt 3 ]; then + cat >&2 <&2 <&2 <