- ADD_CUSTOM_TARGET(java_basic ALL
- COMMAND ${JAVA_COMPILE} -d ${PROJECT_DIRECTORY}/examples/java/basic -cp ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/basic/*.java
- )
-
- ADD_CUSTOM_TARGET(java_ping_pong ALL
- COMMAND ${JAVA_COMPILE} -d ${PROJECT_DIRECTORY}/examples/java/ping_pong -cp ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/ping_pong/*.java
- )
-
- ADD_CUSTOM_TARGET(java_comm_time ALL
- COMMAND ${JAVA_COMPILE} -d ${PROJECT_DIRECTORY}/examples/java/comm_time -cp ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/comm_time/*.java
- )
-
- ADD_CUSTOM_TARGET(java_suspend ALL
- COMMAND ${JAVA_COMPILE} -d ${PROJECT_DIRECTORY}/examples/java/suspend -cp ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/suspend/*.java
- )
-
- add_dependencies(java_basic simgrid.jar)
- add_dependencies(java_ping_pong simgrid.jar)
- add_dependencies(java_comm_time simgrid.jar)
- add_dependencies(java_suspend simgrid.jar)
\ No newline at end of file
+file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/classes/")
+
+# compile all .java files with javac to .class
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${JAVA_CLASSES}
+ DEPENDS ${JAVA_FILES}
+ COMMAND ${JAVA_COMPILE} -d ${CMAKE_CURRENT_BINARY_DIR}/classes/
+ -cp ${CMAKE_CURRENT_BINARY_DIR}/classes/
+ ${JAVA_FILES}
+ COMMENT "Compiling java sources of core library..."
+)
+
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${PROJECT_DIRECTORY}/src/simgrid.jar
+ DEPENDS ${JAVA_CLASSES}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes
+ COMMAND ${JAVA_ARCHIVE} -cvf ${PROJECT_DIRECTORY}/src/simgrid.jar .
+ COMMENT "Building simgrid.jar..."
+)
+
+ADD_CUSTOM_TARGET(java_basic ALL
+ COMMAND ${JAVA_COMPILE} -d ${PROJECT_DIRECTORY}/examples/java/basic -cp ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/basic/*.java
+ DEPENDS ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/basic/*.java
+)
+
+ADD_CUSTOM_TARGET(java_ping_pong ALL
+ COMMAND ${JAVA_COMPILE} -d ${PROJECT_DIRECTORY}/examples/java/ping_pong -cp ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/ping_pong/*.java
+ DEPENDS ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/ping_pong/*.java
+)
+
+ADD_CUSTOM_TARGET(java_comm_time ALL
+ COMMAND ${JAVA_COMPILE} -d ${PROJECT_DIRECTORY}/examples/java/comm_time -cp ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/comm_time/*.java
+ DEPENDS ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/comm_time/*.java
+)
+
+ADD_CUSTOM_TARGET(java_suspend ALL
+ COMMAND ${JAVA_COMPILE} -d ${PROJECT_DIRECTORY}/examples/java/suspend -cp ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/suspend/*.java
+ DEPENDS ${PROJECT_DIRECTORY}/src/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/suspend/*.java
+)