cmake_minimum_required(VERSION 2.6) project(simgrid-java C) set(CMAKE_C_FLAGS "" CACHE TYPE INTERNAL FORCE) set(CMAKE_EXE_LINKER_FLAGS "" CACHE TYPE INTERNAL FORCE) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_HOME_DIRECTORY}/lib") set(soversion 1) ############################### # Test the build dependencies # ############################### include(FindSimGrid.cmake) include(FindJavaSG.cmake) ############################### # Declare our package content # ############################### set(JMSG_C_SRC src/smx_context_java.h src/smx_context_java.c src/jxbt_utilities.c src/jxbt_utilities.h src/jmsg.c src/jmsg.h src/jmsg_host.c src/jmsg_host.h src/jmsg_process.c src/jmsg_process.h src/jmsg_task.c src/jmsg_task.h src/jmsg_application_handler.c src/jmsg_application_handler.h ) set(JMSG_JAVA_SRC org/simgrid/msg/ApplicationHandler.java org/simgrid/msg/Host.java org/simgrid/msg/HostFailureException.java org/simgrid/msg/HostNotFoundException.java org/simgrid/msg/JniException.java org/simgrid/msg/Msg.java org/simgrid/msg/MsgException.java org/simgrid/msg/MsgNative.java org/simgrid/msg/NativeException.java org/simgrid/msg/Process.java org/simgrid/msg/ProcessNotFoundException.java org/simgrid/msg/Sem.java org/simgrid/msg/Task.java org/simgrid/msg/TaskCancelledException.java org/simgrid/msg/TimeoutException.java org/simgrid/msg/TransferFailureException.java ) set(JAVA_EXAMPLES examples/mutualExclusion/centralized/MutexCentral.java examples/mutualExclusion/centralized/GrantTask.java examples/mutualExclusion/centralized/Coordinator.java examples/mutualExclusion/centralized/ReleaseTask.java examples/mutualExclusion/centralized/Node.java examples/mutualExclusion/centralized/RequestTask.java examples/basic/FinalizeTask.java examples/basic/Forwarder.java examples/basic/Master.java examples/basic/BasicTest.java examples/basic/Slave.java examples/commTime/FinalizeTask.java examples/commTime/Master.java examples/commTime/Slave.java examples/commTime/CommTimeTest.java examples/pingPong/PingPongTask.java examples/pingPong/Sender.java examples/pingPong/Receiver.java examples/pingPong/PingPongTest.java ) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wno-unused-function -Wno-unused-parameter -Wno-strict-aliasing -Wno-format-nonliteral -Werror ") set(INCLUDE_PATH "-I${CMAKE_HOME_DIRECTORY}/src -I$ENV{SIMGRID_ROOT}/include -I$ENV{SIMGRID_ROOT}/src -I$ENV{SIMGRID_ROOT}/src/include") set(LIB_PATH "-L$ENV{SIMGRID_ROOT}/lib") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${INCLUDE_PATH} ${LIB_PATH}") string(REPLACE "org/" "${CMAKE_HOME_DIRECTORY}/org/" JAVA_FILES "${JMSG_JAVA_SRC}") string(REPLACE "org/" "${CMAKE_HOME_DIRECTORY}/classes/org/" JMSG_JAVA_SRC_CLASS "${JMSG_JAVA_SRC}") string(REPLACE ".java" ".class" JMSG_JAVA_SRC_CLASS "${JMSG_JAVA_SRC_CLASS}") string(REPLACE "examples/" "${CMAKE_HOME_DIRECTORY}/examples/" JAVA_EXAMPLES_CLASS "${JAVA_EXAMPLES}") string(REPLACE ".java" ".class" JAVA_EXAMPLES_CLASS "${JAVA_EXAMPLES_CLASS}") # TARGET SG_java add_library(SG_java SHARED ${JMSG_C_SRC}) target_link_libraries(SG_java -lsimgrid) set_target_properties(SG_java PROPERTIES VERSION ${soversion}) # TARGET 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/ ${JAVA_FILES} COMMENT "Compiling java sources of core library..." ) add_custom_target(java_classes ALL DEPENDS ${JMSG_JAVA_SRC_CLASS} ) # TARGET simgrid_jar add_custom_target(simgrid_jar ALL COMMAND ${JAVA_ARCHIVE} -cvf ${CMAKE_HOME_DIRECTORY}/simgrid.jar . COMMENT "Building simgrid.jar..." WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/classes ) # TARGET simgrid_java_examples add_custom_command( COMMENT "Build examples for java" OUTPUT ${JAVA_EXAMPLES_CLASS} COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/basic/*.java COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/pingPong/*.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/mutualExclusion/centralized/*.java ) add_custom_target(simgrid_java_examples ALL DEPENDS ${JAVA_EXAMPLES_CLASS} ) # Declare dependencies add_dependencies(simgrid_jar java_classes) add_dependencies(simgrid_java_examples simgrid_jar SG_java) SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_HOME_DIRECTORY}/simgrid.jar ) ##################### # Declare our tests # ##################### INCLUDE(CTest) ENABLE_TESTING() ADD_TEST(java-basic ${CMAKE_HOME_DIRECTORY}/test_java.sh ${CMAKE_HOME_DIRECTORY}/examples basic/BasicTest ${CMAKE_HOME_DIRECTORY} ${CMAKE_HOME_DIRECTORY}/examples/basic/) ADD_TEST(java-pingpong ${CMAKE_HOME_DIRECTORY}/test_java.sh ${CMAKE_HOME_DIRECTORY}/examples pingPong/PingPongTest ${CMAKE_HOME_DIRECTORY} ${CMAKE_HOME_DIRECTORY}/examples/pingPong/)