From: Martin Quinson Date: Sun, 27 Sep 2015 11:24:18 +0000 (+0200) Subject: Various cleanups in the generation of simgrid.jar X-Git-Tag: v3_12~118 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/8695eb4cf63ff136fb246e39305887f3c7c334a8?ds=sidebyside Various cleanups in the generation of simgrid.jar - Only generate a simgrid.jar (kill simgrid_full.jar), which may or may not contain the native libs depending on the enable_lib_in_jar cmake option. - Simplify the dependencies by not using temp files and additional dependencies but use add_custom_command(TARGET blah POST-BUILD ...) --- diff --git a/tools/cmake/AddTests.cmake b/tools/cmake/AddTests.cmake index 4cf6fd770b..fc1fe1a1b3 100644 --- a/tools/cmake/AddTests.cmake +++ b/tools/cmake/AddTests.cmake @@ -505,10 +505,10 @@ IF(NOT enable_memcheck) ### JAVA ### IF(enable_java) IF(WIN32) - SET(TESH_CLASSPATH "${CMAKE_BINARY_DIR}/examples/java/\;${CMAKE_BINARY_DIR}/teshsuite/java/\;${SIMGRID_FULL_JAR}") + SET(TESH_CLASSPATH "${CMAKE_BINARY_DIR}/examples/java/\;${CMAKE_BINARY_DIR}/teshsuite/java/\;${SIMGRID_JAR}") STRING(REPLACE "\;" "§" TESH_CLASSPATH "${TESH_CLASSPATH}") ELSE() - SET(TESH_CLASSPATH "${CMAKE_BINARY_DIR}/examples/java/:${CMAKE_BINARY_DIR}/teshsuite/java/:${SIMGRID_FULL_JAR}") + SET(TESH_CLASSPATH "${CMAKE_BINARY_DIR}/examples/java/:${CMAKE_BINARY_DIR}/teshsuite/java/:${SIMGRID_JAR}") ENDIF() ADD_TESH(java-async --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/async/async.tesh) ADD_TESH(java-bittorrent --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/bittorrent/bittorrent.tesh) @@ -539,10 +539,10 @@ IF(NOT enable_memcheck) ### SCALA ### IF(enable_scala) IF(WIN32) - SET(TESH_CLASSPATH "${CMAKE_BINARY_DIR}/examples/scala/\;${SIMGRID_FULL_JAR}\;${SCALA_JARS}") + SET(TESH_CLASSPATH "${CMAKE_BINARY_DIR}/examples/scala/\;${SIMGRID_JAR}\;${SCALA_JARS}") STRING(REPLACE "\;" "§" TESH_CLASSPATH "${TESH_CLASSPATH}") ELSE() - SET(TESH_CLASSPATH "${CMAKE_BINARY_DIR}/examples/scala/:${SIMGRID_FULL_JAR}:${SCALA_JARS}") + SET(TESH_CLASSPATH "${CMAKE_BINARY_DIR}/examples/scala/:${SIMGRID_JAR}:${SCALA_JARS}") ENDIF() ADD_TESH(scala-bypass --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/scala --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/scala ${CMAKE_HOME_DIRECTORY}/examples/scala/master_slave_bypass/bypass.tesh) ADD_TESH(scala-kill --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/scala --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/scala ${CMAKE_HOME_DIRECTORY}/examples/scala/master_slave_kill/kill.tesh) diff --git a/tools/cmake/Distrib.cmake b/tools/cmake/Distrib.cmake index 5d5b40d424..9d3207f7eb 100644 --- a/tools/cmake/Distrib.cmake +++ b/tools/cmake/Distrib.cmake @@ -81,11 +81,7 @@ if(enable_lib_static AND NOT WIN32) endif() if(enable_java) - if(enable_lib_in_jar) - set(SIMGRID_JAR_TO_INSTALL "${SIMGRID_FULL_JAR}") - else() - set(SIMGRID_JAR_TO_INSTALL "${SIMGRID_JAR}") - endif() + set(SIMGRID_JAR_TO_INSTALL "${SIMGRID_JAR}") install(TARGETS simgrid-java DESTINATION $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/) install(FILES ${SIMGRID_JAR_TO_INSTALL} diff --git a/tools/cmake/MakeJava.cmake b/tools/cmake/MakeJava.cmake index c8a52f9ad4..cdebc74d1a 100644 --- a/tools/cmake/MakeJava.cmake +++ b/tools/cmake/MakeJava.cmake @@ -52,7 +52,6 @@ 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") @@ -67,29 +66,15 @@ set(LIBSURF_JAVA_SO ## 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) -endif() - -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) + add_jar(simgrid-java_jar ${JMSG_JAVA_SRC} OUTPUT_NAME simgrid) endif() 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_BINARY_DIR}/lib/${LIBSURF_JAVA_SO} + 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 @@ -102,23 +87,46 @@ add_custom_command( 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 ${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_FULL_JAR} NATIVE 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_FULL_JAR} doc/javadoc - - COMMAND ${CMAKE_COMMAND} -E echo "-- Cmake put the native code in ${JAVA_NATIVE_PATH}" - 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 + 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}) @@ -139,7 +147,7 @@ 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 diff --git a/tools/internal/generate-multi-jar.py b/tools/internal/generate-multi-jar.py index 41ec224c1b..d18f2239f4 100755 --- a/tools/internal/generate-multi-jar.py +++ b/tools/internal/generate-multi-jar.py @@ -14,11 +14,11 @@ import zipfile import tempfile import os, sys, re -dists = ['https://ci.inria.fr/simgrid/job/SimGrid-Multi/build_mode=Debug,label=%s/lastSuccessfulBuild/artifact/build/SimGrid-3.11/simgrid_full.jar'%dist +dists = ['https://ci.inria.fr/simgrid/job/SimGrid-Multi/build_mode=Debug,label=%s/lastSuccessfulBuild/artifact/build/SimGrid-3.11/simgrid.jar'%dist for dist in ["small-debian-32" ,"small-debian-64" ,"small-freebsd-64-clang"]] -dists.append('https://ci.inria.fr/simgrid/job/Simgrid-Mult-Win7/build_mode=Debug,label=windows-64/lastSuccessfulBuild/artifact/build/simgrid_full.jar') +dists.append('https://ci.inria.fr/simgrid/job/Simgrid-Mult-Win7/build_mode=Debug,label=windows-64/lastSuccessfulBuild/artifact/build/simgrid.jar') class SimJar(object): def __init__(self, filename='simgrid.jar'):