Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Delete error in windows.
[simgrid.git] / buildtools / Cmake / src / CMakeJarAndClass.txt
index 4f317d7..f49e6d0 100644 (file)
@@ -1,63 +1,58 @@
-       foreach(file ${JMSG_JAVA_SRC})
-               set(java_src_to_compile "${java_src_to_compile}${file}\t")      
-       endforeach(file ${JMSG_JAVA_SRC})
-       string(REPLACE ".java" ".class" java_output "${JMSG_JAVA_SRC}")  
+set(JAVA_FILES ${JMSG_JAVA_SRC})
+set(JAVA_CLASSES ${JAVA_FILES})
+
+string(REPLACE "src/java/" "${PROJECT_DIRECTORY}/src/java/"
+               JAVA_FILES "${JAVA_FILES}")
+
+string(REPLACE "src/java/simgrid/msg" "${CMAKE_CURRENT_BINARY_DIR}/classes/simgrid/msg"
+               JAVA_CLASSES "${JAVA_CLASSES}")
+string(REPLACE ".java" ".class;" 
+               JAVA_CLASSES "${JAVA_CLASSES}")
+              
+
+add_custom_command(
+  OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/classes/
+  COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/classes/")
+  
+ADD_CUSTOM_COMMAND(
+  TARGET clean
+  COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/classes/)
+
+# compile all .java files with javac to .class
+ADD_CUSTOM_COMMAND(
+  OUTPUT ${JAVA_CLASSES}
+  DEPENDS ${JAVA_FILES} ${CMAKE_CURRENT_BINARY_DIR}/classes/
+  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 ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar
+  DEPENDS ${JAVA_CLASSES}
+  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes  
+  COMMAND ${JAVA_ARCHIVE} -cvf ${CMAKE_CURRENT_BINARY_DIR}/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 ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/basic/*.java
+)
        
-       # build .jar file from .class files
-       ADD_CUSTOM_TARGET(simgrid.jar
-       COMMAND rm -rf ${PROJECT_DIRECTORY}/src/.classes
-       COMMAND mkdir -p ${PROJECT_DIRECTORY}/src/.classes
-       COMMAND mkdir -p ${PROJECT_DIRECTORY}/src/.classes/surf
-       COMMAND cp ${PROJECT_DIRECTORY}/src/surf/simgrid.dtd ${PROJECT_DIRECTORY}/src/.classes/surf/simgrid.dtd
-       COMMAND ${JAVA_COMPILE} -d ${PROJECT_DIRECTORY}/src/.classes -cp ${PROJECT_DIRECTORY}/src/.classes ${java_src_to_compile}
-       )
+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 ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/ping_pong/*.java
+)
        
-       ADD_CUSTOM_COMMAND(
-       TARGET simgrid
-       POST_BUILD
-       COMMAND make simgrid.jar
-       )
+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 ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/comm_time/*.java
+)
        
-       ADD_CUSTOM_COMMAND(
-       TARGET simgrid.jar
-       POST_BUILD 
-       COMMAND ${CMAKE_COMMAND}
-       ARGS -E chdir ${PROJECT_DIRECTORY}
-       ${JAVA_ARCHIVE} -cvf ${PROJECT_DIRECTORY}/src/simgrid.jar -C ${PROJECT_DIRECTORY}/src/.classes .
-       )
-       
-       ADD_CUSTOM_COMMAND(
-       TARGET simgrid.jar
-       POST_BUILD 
-       COMMAND rm -f ${PROJECT_DIRECTORY}/examples/java/basic/*.class
-       COMMAND ${JAVA_COMPILE}
-       ARGS -d ${PROJECT_DIRECTORY}/examples/java/basic -cp ${PROJECT_DIRECTORY}/src/simgrid.jar
-       ${PROJECT_DIRECTORY}/examples/java/basic/*.java
-       )
-       
-       ADD_CUSTOM_COMMAND(
-       TARGET simgrid.jar
-       POST_BUILD
-       COMMAND rm -f ${PROJECT_DIRECTORY}/examples/java/ping_pong/*.class
-       COMMAND ${JAVA_COMPILE}
-       ARGS -d ${PROJECT_DIRECTORY}/examples/java/ping_pong -cp ${PROJECT_DIRECTORY}/src/simgrid.jar
-       ${PROJECT_DIRECTORY}/examples/java/ping_pong/*.java
-       )
-       
-       ADD_CUSTOM_COMMAND(
-       TARGET simgrid.jar
-       POST_BUILD 
-       COMMAND rm -f ${PROJECT_DIRECTORY}/examples/java/comm_time/*.class
-       COMMAND ${JAVA_COMPILE}
-       ARGS -d ${PROJECT_DIRECTORY}/examples/java/comm_time -cp ${PROJECT_DIRECTORY}/src/simgrid.jar
-       ${PROJECT_DIRECTORY}/examples/java/comm_time/*.java
-       )
-       
-       ADD_CUSTOM_COMMAND(
-       TARGET simgrid.jar
-       POST_BUILD 
-       COMMAND rm -f ${PROJECT_DIRECTORY}/examples/java/suspend/*.class
-       COMMAND ${JAVA_COMPILE}
-       ARGS -d ${PROJECT_DIRECTORY}/examples/java/suspend -cp ${PROJECT_DIRECTORY}/src/simgrid.jar
-       ${PROJECT_DIRECTORY}/examples/java/suspend/*.java
-       )
\ No newline at end of file
+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 ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar ${PROJECT_DIRECTORY}/examples/java/suspend/*.java
+)