1 cmake_minimum_required(VERSION 2.6)
2 project(simgrid-java C)
3 include(FindSimGrid.cmake)
6 ###############################
7 # Test the build dependencies #
8 ###############################
14 endif(JAVA_INCLUDE_PATH)
15 if(JAVA_COMPILE AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2)
17 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${JAVA_INCLUDE_PATH} ")
18 if(NOT JAVA_INCLUDE_PATH STREQUAL JAVA_INCLUDE_PATH2)
19 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${JAVA_INCLUDE_PATH2} ")
20 endif(NOT JAVA_INCLUDE_PATH STREQUAL JAVA_INCLUDE_PATH2)
21 else(JAVA_COMPILE AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2)
23 endif(JAVA_COMPILE AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2)
26 ###############################
27 # Declare our package content #
28 ###############################
31 src/smx_context_java.h
32 src/smx_context_java.c
43 src/jmsg_application_handler.c
44 src/jmsg_application_handler.h
48 org/simgrid/msg/ApplicationHandler.java
49 org/simgrid/msg/Host.java
50 org/simgrid/msg/HostFailureException.java
51 org/simgrid/msg/HostNotFoundException.java
52 org/simgrid/msg/JniException.java
53 org/simgrid/msg/Msg.java
54 org/simgrid/msg/MsgException.java
55 org/simgrid/msg/MsgNative.java
56 org/simgrid/msg/NativeException.java
57 org/simgrid/msg/Process.java
58 org/simgrid/msg/ProcessNotFoundException.java
59 org/simgrid/msg/Sem.java
60 org/simgrid/msg/Task.java
61 org/simgrid/msg/TaskCancelledException.java
62 org/simgrid/msg/TimeoutException.java
63 org/simgrid/msg/TransferFailureException.java
66 file(GLOB_RECURSE examples_sources
70 "examples/java/runtest"
76 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${HAVE_GRAS_H} -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 ")
78 add_library(simgrid-java SHARED ${JMSG_C_SRC})
79 set_target_properties(simgrid-java PROPERTIES VERSION ${soversion})
80 target_link_libraries(simgrid-java ${HAVE_SIMGRID_LIB})
82 set(JAVA_FILES ${JMSG_JAVA_SRC})
83 set(JAVA_CLASSES ${JAVA_FILES})
85 string(REPLACE "org/" "${CMAKE_HOME_DIRECTORY}/org/"
86 JAVA_FILES "${JAVA_FILES}")
88 string(REPLACE "org/simgrid/msg" "${CMAKE_BINARY_DIR}/classes/simgrid/msg"
89 JAVA_CLASSES "${JAVA_CLASSES}")
90 string(REPLACE ".java" ".class;"
91 JAVA_CLASSES "${JAVA_CLASSES}")
95 OUTPUT ${CMAKE_BINARY_DIR}/classes/
96 COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/classes/")
99 # compile all .java files with javac to .class
101 OUTPUT ${JAVA_CLASSES}
102 DEPENDS ${JAVA_FILES} ${CMAKE_BINARY_DIR}/classes/
103 COMMAND ${JAVA_COMPILE} -d ${CMAKE_BINARY_DIR}/classes/
104 -cp ${CMAKE_BINARY_DIR}/classes/
106 COMMENT "Compiling java sources of core library..."
109 ADD_CUSTOM_TARGET(simgrid_jar ALL
110 DEPENDS ${CMAKE_BINARY_DIR}/share/simgrid.jar)
113 OUTPUT ${CMAKE_BINARY_DIR}/share/simgrid.jar
114 DEPENDS ${JAVA_CLASSES}
115 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/classes
116 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/share
117 COMMAND ${JAVA_ARCHIVE} -cvf ${CMAKE_BINARY_DIR}/share/simgrid.jar .
118 COMMENT "Building simgrid.jar..."
122 OUTPUT ${CMAKE_BINARY_DIR}/examples/basic/BasicTest.class
123 ${CMAKE_BINARY_DIR}/examples/basic/FinalizeTask.class
124 ${CMAKE_BINARY_DIR}/examples/basic/Forwarder.class
125 ${CMAKE_BINARY_DIR}/examples/basic/Slave.class
126 ${CMAKE_BINARY_DIR}/examples/basic/Master.class
127 ${CMAKE_BINARY_DIR}/examples/pingPong/PingPongTest.class
128 ${CMAKE_BINARY_DIR}/examples/pingPong/Sender.class
129 ${CMAKE_BINARY_DIR}/examples/pingPong/PingPongTask.class
130 ${CMAKE_BINARY_DIR}/examples/pingPong/Receiver.class
131 ${CMAKE_BINARY_DIR}/examples/commTime/FinalizeTask.class
132 ${CMAKE_BINARY_DIR}/examples/commTime/CommTimeTest.class
133 ${CMAKE_BINARY_DIR}/examples/commTime/Slave.class
134 ${CMAKE_BINARY_DIR}/examples/commTime/Master.class
135 ${CMAKE_BINARY_DIR}/examples/suspend/SuspendTest.class
136 ${CMAKE_BINARY_DIR}/examples/suspend/LazyGuy.class
137 ${CMAKE_BINARY_DIR}/examples/suspend/DreamMaster.class
140 ${CMAKE_BINARY_DIR}/share/simgrid.jar
141 ${CMAKE_HOME_DIRECTORY}/examples/basic/*.java
142 ${CMAKE_HOME_DIRECTORY}/examples/pingPong/*.java
143 ${CMAKE_HOME_DIRECTORY}/examples/commTime/*.java
144 ${CMAKE_HOME_DIRECTORY}/examples/suspend/*.java
146 COMMENT "Build examples for java"
148 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/basic
149 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/ping_pong
150 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/comm_time
151 COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/examples/suspend
153 COMMAND ${JAVA_COMPILE} -d ${CMAKE_BINARY_DIR}/examples/basic -cp ${CMAKE_BINARY_DIR}/share/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/basic/*.java
154 COMMAND ${JAVA_COMPILE} -d ${CMAKE_BINARY_DIR}/examples/ping_pong -cp ${CMAKE_BINARY_DIR}/share/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/pingPong/*.java
155 COMMAND ${JAVA_COMPILE} -d ${CMAKE_BINARY_DIR}/examples/comm_time -cp ${CMAKE_BINARY_DIR}/share/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/commTime/*.java
156 COMMAND ${JAVA_COMPILE} -d ${CMAKE_BINARY_DIR}/examples/suspend -cp ${CMAKE_BINARY_DIR}/share/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/suspend/*.java
159 ADD_CUSTOM_TARGET(examples ALL
160 DEPENDS ${CMAKE_BINARY_DIR}/examples/basic/BasicTest.class
161 ${CMAKE_BINARY_DIR}/examples/basic/FinalizeTask.class
162 ${CMAKE_BINARY_DIR}/examples/basic/Forwarder.class
163 ${CMAKE_BINARY_DIR}/examples/basic/Slave.class
164 ${CMAKE_BINARY_DIR}/examples/basic/Master.class
165 ${CMAKE_BINARY_DIR}/examples/ping_pong/PingPongTest.class
166 ${CMAKE_BINARY_DIR}/examples/ping_pong/Sender.class
167 ${CMAKE_BINARY_DIR}/examples/ping_pong/PingPongTask.class
168 ${CMAKE_BINARY_DIR}/examples/ping_pong/Receiver.class
169 ${CMAKE_BINARY_DIR}/examples/comm_time/FinalizeTask.class
170 ${CMAKE_BINARY_DIR}/examples/comm_time/CommTimeTest.class
171 ${CMAKE_BINARY_DIR}/examples/comm_time/Slave.class
172 ${CMAKE_BINARY_DIR}/examples/comm_time/Master.class
173 ${CMAKE_BINARY_DIR}/examples/suspend/SuspendTest.class
174 ${CMAKE_BINARY_DIR}/examples/suspend/LazyGuy.class
175 ${CMAKE_BINARY_DIR}/examples/suspend/DreamMaster.class
176 COMMENT Compiling the Java examples
179 #####################
180 # Declare our tests #
181 #####################
184 set(osname ${CMAKE_SYSTEM_NAME})
185 set(cpu ${CMAKE_SYSTEM_PROCESSOR})
186 set(DISTRIB2 ${CMAKE_SYSTEM_VERSION})
188 SET(SITE "${osname}_${DISTRIB2}_${cpu}")
189 SET(CTEST_SITE "${osname}_${DISTRIB2}_${cpu}")
190 SET(CTEST_PROJECT_NAME "${PROJECT_NAME}")
191 SET(CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE "3000000")
192 SET(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE "3000000")
196 ADD_TEST(java-basic java -cp ${CMAKE_BINARY_DIR}/examples/basic:${CMAKE_BINARY_DIR}/share/simgrid.jar BasicTest examples/platform.xml ${CMAKE_HOME_DIRECTORY}/examples/basic/basic_deployment.xml)
197 ADD_TEST(java-pingpong java -cp ${CMAKE_BINARY_DIR}/examples/pingpong:${CMAKE_BINARY_DIR}/share/simgrid.jar PingpongTest examples/platform.xml ${CMAKE_HOME_DIRECTORY}/examples/pingpong/pingpong_deployment.xml)
198 ADD_TEST(java-pingpong java -cp ${CMAKE_BINARY_DIR}/examples/pingpong:${CMAKE_BINARY_DIR}/share/simgrid.jar PingpongTest examples/platform.xml ${CMAKE_HOME_DIRECTORY}/examples/pingpong/pingpong_deployment.xml)
199 #ADD_TEST(java-comm_time ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_java.sh ${CMAKE_HOME_DIRECTORY}/examples/java/comm_time CommTimeTest ${simgrid_BINARY_DIR})
200 #ADD_TEST(java-suspend ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_java.sh ${CMAKE_HOME_DIRECTORY}/examples/java/suspend SuspendTest ${simgrid_BINARY_DIR})
202 ######################
203 # Install some stuff #
204 ######################
205 install(FILES ${CMAKE_BINARY_DIR}/share/simgrid.jar
206 DESTINATION $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/share/)
208 add_custom_target(uninstall
209 COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_INSTALL_PREFIX}/share/simgrid.jar
210 COMMAND ${CMAKE_COMMAND} -E echo "uninstall binding java ok"
213 install(TARGETS simgrid-java
214 DESTINATION $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/)