From: Martin Quinson Date: Mon, 21 Sep 2015 23:54:22 +0000 (+0200) Subject: Further simplify the full.jar generation (the hard portability way) X-Git-Tag: v3_12~139 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/1ea2b84113444364446ce170cb57f8f9bda67be2 Further simplify the full.jar generation (the hard portability way) Don't run the jar at build time to ensure that the java searches the libs where the cmake puts them. It was nice but it's hard to get that script running on windows. Instead, manually determine in both systems (java and cmake) where the libs should be. Of course both definitions should match. - Allows to remove the java_bundle.sh pimple (that breaks on windows) - Users compiling simgrid will use the installed libs instead - None of the solutions will work for users using a faulty jar - Our testing infrastructure will catch the glitches: Each system displays the libs location in the build logs. --- diff --git a/src/bindings/java/org/simgrid/NativeLib.java b/src/bindings/java/org/simgrid/NativeLib.java index 226c3fb0b8..0fdf5fcb95 100644 --- a/src/bindings/java/org/simgrid/NativeLib.java +++ b/src/bindings/java/org/simgrid/NativeLib.java @@ -118,11 +118,7 @@ public final class NativeLib { public static void main(String[] args) { - if (args.length >= 1 && args[0].equals("--quiet")) - /* be careful, this execution path is used in tools/cmake/scripts/java_bundle.sh to determine where to put the libs */ - System.out.println(getPath()); - else - System.out.println("This java library will try to load the native code under the following name:\n" +getPath()); + System.out.println("This jarfile searches the native code under: " +getPath()); } } diff --git a/tools/cmake/DefinePackages.cmake b/tools/cmake/DefinePackages.cmake index 5397b2e51f..6e3f670be9 100644 --- a/tools/cmake/DefinePackages.cmake +++ b/tools/cmake/DefinePackages.cmake @@ -1210,7 +1210,6 @@ set(CMAKE_SOURCE_FILES tools/cmake/scripts/Makefile.default tools/cmake/scripts/SimGrid.packproj tools/cmake/scripts/generate_memcheck_tests.pl - tools/cmake/scripts/java_bundle.sh tools/cmake/scripts/my_valgrind.pl tools/cmake/scripts/postinstall.sh tools/cmake/scripts/preinstall.sh diff --git a/tools/cmake/MakeJava.cmake b/tools/cmake/MakeJava.cmake index 899907a7e7..3a7b5ee3b9 100644 --- a/tools/cmake/MakeJava.cmake +++ b/tools/cmake/MakeJava.cmake @@ -56,7 +56,6 @@ 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 @@ -73,18 +72,15 @@ else() add_jar(simgrid-java_pre_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} - ) 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} + ${SIMGRID_JAR} + ${MANIFEST_IN_FILE} + ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO} + ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO} + ${CMAKE_BINARY_DIR}/lib/${LIBSURF_JAVA_SO} ${CMAKE_HOME_DIRECTORY}/COPYING ${CMAKE_HOME_DIRECTORY}/ChangeLog ${CMAKE_HOME_DIRECTORY}/ChangeLog.SimGrid-java @@ -98,11 +94,18 @@ add_custom_command( COMMAND ${JAVA_ARCHIVE} -uvmf ${MANIFEST_FILE} ${SIMGRID_JAR} COMMAND ${CMAKE_COMMAND} -E copy ${SIMGRID_JAR} ${SIMGRID_FULL_JAR} - COMMAND sh ${JAVA_BUNDLE} "${Java_JAVA_EXECUTABLE}" "${SIMGRID_JAR}" ${JAVA_BUNDLE_SO_FILES} - COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_FULL_JAR} "NATIVE" + COMMAND ${CMAKE_COMMAND} -E make_directory NATIVE/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO} NATIVE/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO} NATIVE/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/lib/${LIBSURF_JAVA_SO} NATIVE/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR} + + COMMAND ${JAVA_ARCHIVE} -uvf ${SIMGRID_FULL_JAR} NATIVE 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 ${CMAKE_COMMAND} -E echo "-- Cmake put the native code in NATIVE/${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}" + COMMAND "${Java_JAVA_EXECUTABLE}" -classpath "${SIMGRID_JAR}" org.simgrid.NativeLib + COMMAND ${CMAKE_COMMAND} -E remove ${SIMGRID_JAR}_finalized COMMAND ${CMAKE_COMMAND} -E touch ${SIMGRID_JAR}_finalized ) diff --git a/tools/cmake/scripts/java_bundle.sh b/tools/cmake/scripts/java_bundle.sh deleted file mode 100755 index d531058d99..0000000000 --- a/tools/cmake/scripts/java_bundle.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -set -e -set -x - -if [ $# -lt 2 ]; then - cat >&2 <