set(SIMGRID_JAVA_VERSION_MAJOR "3")
set(SIMGRID_JAVA_VERSION_MINOR "7")
set(SIMGRID_JAVA_VERSION_PATCH "1")
-set(DIST_NAME ${PROJECT_NAME}-${SIMGRID_JAVA_VERSION_MAJOR}.${SIMGRID_JAVA_VERSION_MINOR})
+set(DIST_NAME ${PROJECT_NAME}-${SIMGRID_JAVA_VERSION_MAJOR}.${SIMGRID_JAVA_VERSION_MINOR}.${SIMGRID_JAVA_VERSION_PATCH})
########
## GCC #
include(FindSimGrid.cmake)
include(FindJavaSG.cmake)
+# Check for option tracing in SimGrid
+include(CheckLibraryExists)
+CHECK_LIBRARY_EXISTS(${SIMGRID_LIB} TRACE_start "" HAVE_TRACING)
+if(NOT HAVE_TRACING)
+ message(STATUS "Warning: SimGrid-java must be linked with library Simgrid included trace option to enable tracing.")
+ message(STATUS "Warning: See http://simgrid.gforge.inria.fr/simgrid/3.8/doc/tracing.html to see how compile SimGrid library with this option.")
+endif(NOT HAVE_TRACING)
+
###############################
# Declare our package content #
###############################
set(JMSG_C_SRC
+ ${CMAKE_HOME_DIRECTORY}/src/smx_context_cojava.h
+ ${CMAKE_HOME_DIRECTORY}/src/smx_context_cojava.c
+ ${CMAKE_HOME_DIRECTORY}/src/jmsg_file.c
+ ${CMAKE_HOME_DIRECTORY}/src/jmsg_file.h
${CMAKE_HOME_DIRECTORY}/src/smx_context_java.h
${CMAKE_HOME_DIRECTORY}/src/smx_context_java.c
${CMAKE_HOME_DIRECTORY}/src/jxbt_utilities.c
${CMAKE_HOME_DIRECTORY}/src/jmsg_rngstream.h
)
+set(JTRACE_C_SRC
+ src/jtrace.c
+ src/jtrace.h
+)
+
set(JMSG_JAVA_SRC
${CMAKE_HOME_DIRECTORY}/org/simgrid/msg/Host.java
${CMAKE_HOME_DIRECTORY}/org/simgrid/msg/HostFailureException.java
- ${CMAKE_HOME_DIRECTORY}/org/simgrid/msg/HostNotFoundException.java
+ ${CMAKE_HOME_DIRECTORY}/org/simgrid/msg/HostNotFoundException.java
+ ${CMAKE_HOME_DIRECTORY}/org/simgrid/msg/File.java
${CMAKE_HOME_DIRECTORY}/org/simgrid/msg/JniException.java
${CMAKE_HOME_DIRECTORY}/org/simgrid/msg/Msg.java
${CMAKE_HOME_DIRECTORY}/org/simgrid/msg/MsgException.java
${CMAKE_HOME_DIRECTORY}/org/simgrid/msg/Comm.java
${CMAKE_HOME_DIRECTORY}/org/simgrid/msg/RngStream.java
)
+set(JTRACE_JAVA_SRC
+ org/simgrid/trace/Trace.java
+)
set(JAVA_EXAMPLES
${CMAKE_HOME_DIRECTORY}/examples/async/AsyncTest.java
${CMAKE_HOME_DIRECTORY}/examples/commTime/Master.java
${CMAKE_HOME_DIRECTORY}/examples/commTime/Slave.java
${CMAKE_HOME_DIRECTORY}/examples/commTime/CommTimeTest.java
+ ${CMAKE_HOME_DIRECTORY}/examples/io/IO.java
+ ${CMAKE_HOME_DIRECTORY}/examples/io/Node.java
${CMAKE_HOME_DIRECTORY}/examples/masterslave/FinalizeTask.java
${CMAKE_HOME_DIRECTORY}/examples/masterslave/Forwarder.java
${CMAKE_HOME_DIRECTORY}/examples/masterslave/Master.java
${CMAKE_HOME_DIRECTORY}/examples/startKillTime/Master.java
${CMAKE_HOME_DIRECTORY}/examples/startKillTime/Slave.java
${CMAKE_HOME_DIRECTORY}/examples/startKillTime/StartKillTime.java
+ ${CMAKE_HOME_DIRECTORY}/examples/tracing/PingPongTask.java
${CMAKE_HOME_DIRECTORY}/examples/suspend/DreamMaster.java
${CMAKE_HOME_DIRECTORY}/examples/suspend/LazyGuy.java
${CMAKE_HOME_DIRECTORY}/examples/suspend/Suspend.java
+ ${CMAKE_HOME_DIRECTORY}/examples/tracing/Sender.java
+ ${CMAKE_HOME_DIRECTORY}/examples/tracing/Receiver.java
+ ${CMAKE_HOME_DIRECTORY}/examples/tracing/TracingTest.java
+
)
set(CMAKE_SRC
${CMAKE_HOME_DIRECTORY}/ChangeLog
${CMAKE_HOME_DIRECTORY}/CMakeLists.txt
+ ${CMAKE_HOME_DIRECTORY}/doxygen_postprocesser.pl
${CMAKE_HOME_DIRECTORY}/FindJavaSG.cmake
${CMAKE_HOME_DIRECTORY}/FindSimGrid.cmake
+ ${CMAKE_HOME_DIRECTORY}/GenerateDoc.cmake
+ ${CMAKE_HOME_DIRECTORY}/README
+)
+
+set(CMAKE_DOC_SRC
+ ${CMAKE_HOME_DIRECTORY}/doc/Doxyfile.in
+ ${CMAKE_HOME_DIRECTORY}/doc/footer.html.in
+ ${CMAKE_HOME_DIRECTORY}/doc/index.doc
+ ${CMAKE_HOME_DIRECTORY}/doc/install.doc
)
set(XML_FILES
${CMAKE_HOME_DIRECTORY}/examples/startKillTime/deployment_start.xml
${CMAKE_HOME_DIRECTORY}/examples/startKillTime/deployment_start_kill.xml
${CMAKE_HOME_DIRECTORY}/examples/startKillTime/deployment.xml
+ ${CMAKE_HOME_DIRECTORY}/examples/io/storage.xml
+ ${CMAKE_HOME_DIRECTORY}/examples/tracing/tracingPingPongDeployment.xml
+)
+
+set(TESH_FILES
+ ${CMAKE_HOME_DIRECTORY}/examples/master_slave_bypass/bypass.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/bittorrent/bittorrent.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/commTime/commtime.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/async/async.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/migration/migration.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/masterslave/masterslave.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/chord/chord.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/suspend/suspend.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/master_slave_kill/kill.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/mutualExclusion/mutualexclusion.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/priority/priority.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/pingPong/pingpong.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/startKillTime/startKillTime.tesh
+ ${CMAKE_HOME_DIRECTORY}/examples/tracing/tracingPingPong.tesh
)
set(source_to_pack
${CMAKE_SRC}
${JMSG_C_SRC}
+ ${JTRACE_C_SRC}
${JMSG_JAVA_SRC}
+ ${JTRACE_JAVA_SRC}
${JAVA_EXAMPLES}
${XML_FILES}
+ ${CMAKE_DOC_SRC}
+ ${TESH_FILES}
)
string(REPLACE "org/" "classes/org/" JMSG_JAVA_SRC_CLASS "${JMSG_JAVA_SRC}")
string(REPLACE ".java" ".class" JMSG_JAVA_SRC_CLASS "${JMSG_JAVA_SRC_CLASS}")
+
+string(REPLACE "org/" "classes/org/" JTRACE_JAVA_SRC_CLASS "${JTRACE_JAVA_SRC}")
+string(REPLACE ".java" ".class" JTRACE_JAVA_SRC_CLASS "${JTRACE_JAVA_SRC_CLASS}")
+
string(REPLACE ".java" ".class" JAVA_EXAMPLES_CLASS "${JAVA_EXAMPLES}")
#########
set_target_properties(SG_java PROPERTIES LINK_FLAGS "-L${SIMGRID_LIB_PATH}")
endif(WIN32)
+if(HAVE_TRACING)
+# SG_java_tracing
+add_library(SG_java_tracing SHARED ${JTRACE_C_SRC})
+ if(WIN32)
+ set_target_properties(SG_java_tracing PROPERTIES LINK_FLAGS "-Wl,--subsystem,windows,--kill-at ${SIMGRID_LIB}" PREFIX "")
+ find_path(PEXPORTS_PATH NAMES pexports.exe PATHS NO_DEFAULT_PATHS)
+ message(STATUS "pexports: ${PEXPORTS_PATH}")
+ if(PEXPORTS_PATH)
+ add_custom_command(TARGET SG_java_tracing POST_BUILD
+ COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/SG_java_tracing.dll > ${CMAKE_BINARY_DIR}/SG_java_tracing.def)
+ endif(PEXPORTS_PATH)
+ else(WIN32)
+ target_link_libraries(SG_java_tracing pcre pthread simgrid)
+ set_target_properties(SG_java_tracing PROPERTIES LINK_FLAGS "-L${SIMGRID_LIB_PATH}")
+ endif(WIN32)
+endif(HAVE_TRACING)
+
# java_classes
add_custom_command(
OUTPUT ${JMSG_JAVA_SRC_CLASS}
DEPENDS ${JMSG_JAVA_SRC}
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_HOME_DIRECTORY}/classes/"
COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/classes/
- -cp ${CMAKE_HOME_DIRECTORY}/classes/ ${JMSG_JAVA_SRC}
+ -cp ${CMAKE_HOME_DIRECTORY}/classes/ ${JMSG_JAVA_SRC}
COMMENT "Compiling java sources of core library..."
)
add_custom_target(java_classes ALL
DEPENDS ${JMSG_JAVA_SRC_CLASS}
)
+if(HAVE_TRACING)
+ add_custom_command(
+ OUTPUT ${JTRACE_JAVA_SRC_CLASS}
+ DEPENDS ${JTRACE_JAVA_SRC}
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_HOME_DIRECTORY}/classes/"
+ COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/classes/
+ -cp ${CMAKE_HOME_DIRECTORY}/classes/ ${JAVA_FILES_TRACE}
+ COMMENT "Compiling java sources of core libraries..."
+ )
+ add_custom_command(TARGET java_classes
+ DEPENDS ${JTRACE_JAVA_SRC_CLASS}
+ )
+endif(HAVE_TRACING)
+
# simgrid_jar
add_custom_target(simgrid_jar ALL
COMMAND ${JAVA_ARCHIVE} -cvf ${CMAKE_HOME_DIRECTORY}/simgrid.jar .
COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/bittorrent/*.java
COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/chord/*.java
COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/commTime/*.java
+ COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/io/*.java
COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/masterslave/*.java
COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/master_slave_bypass/*.java
COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/master_slave_kill/*.java
COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/startKillTime/*.java
COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/suspend/*.java
)
+if(HAVE_TRACING)
+ add_custom_command(
+ DEPENDS ${JAVA_EXAMPLES}
+ COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/tracing/*.java
+)
+endif(HAVE_TRACING)
add_custom_target(simgrid_java_examples ALL
DEPENDS ${JAVA_EXAMPLES_CLASS}
########################
add_dependencies(simgrid_jar java_classes)
add_dependencies(simgrid_java_examples simgrid_jar SG_java)
+if(HAVE_TRACING)
+ add_dependencies(SG_java_tracing)
+endif(HAVE_TRACING)
#####################
# Declare our tests #
ADD_TEST(suspend ${TESH_BIN_PATH} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY} ${CMAKE_HOME_DIRECTORY}/examples/suspend/suspend.tesh)
#Don't forget to put new test in this list!!!
set(test_list async bittorrent bypass chord commTime kill masterslave migration mutualExclusion pingPong priority startKillTime)
-
+if(HAVE_TRACING)
+ ADD_TEST(tracing ${TESH_BIN_PATH} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY} ${CMAKE_HOME_DIRECTORY}/examples/tracing/tracingPingPong.tesh)
+ set(test_list "${test_list} tracing")
+endif(HAVE_TRACING)
##########################################
# Set the DYLD_LIBRARY_PATH for mac #
##########################################
###########
install(TARGETS SG_java
DESTINATION $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/java/)
+
+if(HAVE_TRACING)
+ install(TARGETS SG_java_tracing
+ DESTINATION $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/java/)
+endif(HAVE_TRACING)
+
install(FILES ${CMAKE_HOME_DIRECTORY}/simgrid.jar
DESTINATION $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/java/)
#########
# Dist #
#########
-
add_custom_target(dist-dir
COMMENT "Generating the distribution directory"
COMMAND test -e ${DIST_NAME}/ && chmod -R a+w ${DIST_NAME}/ || true
COMMAND ${CMAKE_COMMAND} -E remove_directory ${DIST_NAME}/
COMMAND ${CMAKE_COMMAND} -E make_directory ${DIST_NAME}
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${DIST_NAME}/doc/html/
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_HOME_DIRECTORY}/doc/html/ ${DIST_NAME}/doc/html/
)
set(dirs_in_tarball "")