1 cmake_minimum_required(VERSION 2.6)
2 project(simgrid-java C)
3 set(CMAKE_C_FLAGS "" CACHE TYPE INTERNAL FORCE)
4 set(CMAKE_EXE_LINKER_FLAGS "" CACHE TYPE INTERNAL FORCE)
5 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_HOME_DIRECTORY}/lib")
9 ###############################
10 # Test the build dependencies #
11 ###############################
12 include(FindSimGrid.cmake)
13 include(FindJavaSG.cmake)
15 ###############################
16 # Declare our package content #
17 ###############################
19 src/smx_context_java.h
20 src/smx_context_java.c
31 src/jmsg_application_handler.c
32 src/jmsg_application_handler.h
36 org/simgrid/msg/ApplicationHandler.java
37 org/simgrid/msg/Host.java
38 org/simgrid/msg/HostFailureException.java
39 org/simgrid/msg/HostNotFoundException.java
40 org/simgrid/msg/JniException.java
41 org/simgrid/msg/Msg.java
42 org/simgrid/msg/MsgException.java
43 org/simgrid/msg/MsgNative.java
44 org/simgrid/msg/NativeException.java
45 org/simgrid/msg/Process.java
46 org/simgrid/msg/ProcessNotFoundException.java
47 org/simgrid/msg/Sem.java
48 org/simgrid/msg/Task.java
49 org/simgrid/msg/TaskCancelledException.java
50 org/simgrid/msg/TimeoutException.java
51 org/simgrid/msg/TransferFailureException.java
54 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 ")
56 set(INCLUDE_PATH "-I${CMAKE_HOME_DIRECTORY}/src -I$ENV{SIMGRID_ROOT}/include -I$ENV{SIMGRID_ROOT}/src -I$ENV{SIMGRID_ROOT}/src/include")
57 set(LIB_PATH "-L$ENV{SIMGRID_ROOT}/lib")
59 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${INCLUDE_PATH} ${LIB_PATH}")
61 add_library(SG_java SHARED ${JMSG_C_SRC})
62 target_link_libraries(SG_java -lsimgrid)
63 set_target_properties(SG_java PROPERTIES VERSION ${soversion})
65 set(JAVA_FILES ${JMSG_JAVA_SRC})
66 set(JAVA_CLASSES ${JAVA_FILES})
68 string(REPLACE "org/" "${CMAKE_HOME_DIRECTORY}/org/"
69 JAVA_FILES "${JAVA_FILES}")
71 string(REPLACE "org/simgrid/msg" "${CMAKE_BINARY_DIR}/classes/simgrid/msg"
72 JAVA_CLASSES "${JAVA_CLASSES}")
73 string(REPLACE ".java" ".class;"
74 JAVA_CLASSES "${JAVA_CLASSES}")
77 OUTPUT ${CMAKE_HOME_DIRECTORY}/classes/
78 COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_HOME_DIRECTORY}/classes/"
81 # compile all .java files with javac to .class
83 OUTPUT ${JAVA_CLASSES}
84 DEPENDS ${JMSG_JAVA_SRC} ${CMAKE_HOME_DIRECTORY}/classes/
85 COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/classes/
86 -cp ${CMAKE_HOME_DIRECTORY}/classes/
88 COMMENT "Compiling java sources of core library..."
92 OUTPUT ${CMAKE_HOME_DIRECTORY}/simgrid.jar
93 DEPENDS ${JAVA_CLASSES}
94 WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/classes
95 COMMAND ${JAVA_ARCHIVE} -cvf ${CMAKE_HOME_DIRECTORY}/simgrid.jar .
96 COMMENT "Building simgrid.jar..."
100 OUTPUT ${CMAKE_HOME_DIRECTORY}/examples/basic/BasicTest.class
101 ${CMAKE_HOME_DIRECTORY}/examples/basic/FinalizeTask.class
102 ${CMAKE_HOME_DIRECTORY}/examples/basic/Forwarder.class
103 ${CMAKE_HOME_DIRECTORY}/examples/basic/Slave.class
104 ${CMAKE_HOME_DIRECTORY}/examples/basic/Master.class
105 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/PingPongTest.class
106 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/Sender.class
107 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/PingPongTask.class
108 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/Receiver.class
109 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/FinalizeTask.class
110 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/CommTimeTest.class
111 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/Slave.class
112 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/Master.class
113 ${CMAKE_HOME_DIRECTORY}/lib/libsimgrid.so
116 ${CMAKE_HOME_DIRECTORY}/simgrid.jar
118 COMMENT "Build examples for java"
120 COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/basic/*.java
121 COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/pingPong/*.java
122 COMMAND ${JAVA_COMPILE} -d ${CMAKE_HOME_DIRECTORY}/examples -cp ${CMAKE_HOME_DIRECTORY}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/pingPong/*.java
125 ADD_CUSTOM_TARGET(simgrid_java_examples ALL
126 DEPENDS ${CMAKE_HOME_DIRECTORY}/examples/basic/BasicTest.class
127 ${CMAKE_HOME_DIRECTORY}/examples/basic/FinalizeTask.class
128 ${CMAKE_HOME_DIRECTORY}/examples/basic/Forwarder.class
129 ${CMAKE_HOME_DIRECTORY}/examples/basic/Slave.class
130 ${CMAKE_HOME_DIRECTORY}/examples/basic/Master.class
131 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/PingPongTest.class
132 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/Sender.class
133 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/PingPongTask.class
134 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/Receiver.class
135 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/FinalizeTask.class
136 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/CommTimeTest.class
137 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/Slave.class
138 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/Master.class
142 #####################
143 # Declare our tests #
144 #####################
148 ADD_TEST(java-basic ${CMAKE_HOME_DIRECTORY}/test_java.sh ${CMAKE_HOME_DIRECTORY}/examples basic/BasicTest ${CMAKE_HOME_DIRECTORY} ${CMAKE_HOME_DIRECTORY}/examples/basic/)
149 ADD_TEST(java-pingpong ${CMAKE_HOME_DIRECTORY}/test_java.sh ${CMAKE_HOME_DIRECTORY}/examples pingPong/PingPongTest ${CMAKE_HOME_DIRECTORY} ${CMAKE_HOME_DIRECTORY}/examples/pingPong/)