Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
initial (almost working) release of a separate package for the Java bindings of SimGrid
[simgrid.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.6)
2 project(simgrid-java C)
3 include(FindSimGrid.cmake)
4
5 ###############################
6 # Test the build dependencies #
7 ###############################
8 SET(HAVE_JAVA 0)
9 include(FindJava)
10 include(FindJNI)
11 if(JAVA_INCLUDE_PATH)
12         set(HAVE_JNI_H 1)
13 endif(JAVA_INCLUDE_PATH)        
14 if(JAVA_COMPILE AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2)
15         SET(HAVE_JAVA 1)
16         SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${JAVA_INCLUDE_PATH} ")
17         if(NOT JAVA_INCLUDE_PATH STREQUAL JAVA_INCLUDE_PATH2)
18         SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-I${JAVA_INCLUDE_PATH2} ")                   
19         endif(NOT JAVA_INCLUDE_PATH STREQUAL JAVA_INCLUDE_PATH2)
20 else(JAVA_COMPILE AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2) 
21         SET(HAVE_JAVA 0)
22 endif(JAVA_COMPILE AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2)
23
24
25 ###############################
26 # Declare our package content #
27 ###############################
28
29 set(JMSG_C_SRC
30         src/simix/smx_context_java.h
31         src/simix/smx_context_java.c
32         src/java/jxbt_utilities.c
33         src/java/jxbt_utilities.h
34         src/java/jmsg.c 
35         src/java/jmsg.h
36         src/java/jmsg_host.c
37         src/java/jmsg_host.h
38         src/java/jmsg_process.c
39         src/java/jmsg_process.h
40         src/java/jmsg_task.c
41         src/java/jmsg_task.h
42         src/java/jmsg_application_handler.c
43         src/java/jmsg_application_handler.h
44 )
45
46 set(JMSG_JAVA_SRC
47         org/simgrid/msg/ApplicationHandler.java
48         org/simgrid/msg/Host.java
49         org/simgrid/msg/HostFailureException.java       
50         org/simgrid/msg/HostNotFoundException.java      
51         org/simgrid/msg/JniException.java
52         org/simgrid/msg/Msg.java
53         org/simgrid/msg/MsgException.java
54         org/simgrid/msg/MsgNative.java
55         org/simgrid/msg/NativeException.java
56         org/simgrid/msg/Process.java
57         org/simgrid/msg/ProcessNotFoundException.java
58         org/simgrid/msg/Sem.java
59         org/simgrid/msg/Task.java
60         org/simgrid/msg/TaskCancelledException.java
61         org/simgrid/msg/TimeoutException.java
62         org/simgrid/msg/TransferFailureException.java   
63 )
64
65 file(GLOB_RECURSE examples_sources
66         "examples/*.java"
67         "examples/*.xml"
68         "examples/*.txt"
69         "examples/java/runtest"
70 )
71
72 ###############
73 # Build Stuff #
74 ###############
75
76 set(JAVA_FILES ${JMSG_JAVA_SRC})
77 set(JAVA_CLASSES ${JAVA_FILES})
78
79 string(REPLACE "org/" "${CMAKE_HOME_DIRECTORY}/org/"
80                JAVA_FILES "${JAVA_FILES}")
81
82 string(REPLACE "org/simgrid/msg" "${CMAKE_CURRENT_BINARY_DIR}/classes/simgrid/msg"
83                JAVA_CLASSES "${JAVA_CLASSES}")
84 string(REPLACE ".java" ".class;" 
85                JAVA_CLASSES "${JAVA_CLASSES}")
86                
87
88 add_custom_command(
89   OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/classes/
90   COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/classes/")
91   
92 # compile all .java files with javac to .class
93 ADD_CUSTOM_COMMAND(
94   OUTPUT ${JAVA_CLASSES}
95   DEPENDS ${JAVA_FILES} ${CMAKE_CURRENT_BINARY_DIR}/classes/
96   COMMAND ${JAVA_COMPILE} -d ${CMAKE_CURRENT_BINARY_DIR}/classes/
97                           -cp ${CMAKE_CURRENT_BINARY_DIR}/classes/
98                           ${JAVA_FILES}
99   COMMENT "Compiling java sources of core library..."
100 )
101
102 ADD_CUSTOM_TARGET(simgrid_java ALL
103                   DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar)
104
105 ADD_CUSTOM_COMMAND(
106   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar
107   DEPENDS ${JAVA_CLASSES}
108   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/classes  
109   COMMAND ${JAVA_ARCHIVE} -cvf ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar .
110   COMMENT "Building simgrid.jar..."
111 )
112
113 ADD_CUSTOM_COMMAND(
114         OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/examples/basic/BasicTest.class
115                         ${CMAKE_CURRENT_BINARY_DIR}/examples/basic/FinalizeTask.class
116                         ${CMAKE_CURRENT_BINARY_DIR}/examples/basic/Forwarder.class
117                         ${CMAKE_CURRENT_BINARY_DIR}/examples/basic/Slave.class
118                         ${CMAKE_CURRENT_BINARY_DIR}/examples/basic/Master.class
119                         ${CMAKE_CURRENT_BINARY_DIR}/examples/ping_pong/PingPongTest.class
120                         ${CMAKE_CURRENT_BINARY_DIR}/examples/ping_pong/Sender.class
121                         ${CMAKE_CURRENT_BINARY_DIR}/examples/ping_pong/PingPongTask.class
122                         ${CMAKE_CURRENT_BINARY_DIR}/examples/ping_pong/Receiver.class
123                         ${CMAKE_CURRENT_BINARY_DIR}/examples/comm_time/FinalizeTask.class
124                         ${CMAKE_CURRENT_BINARY_DIR}/examples/comm_time/CommTimeTest.class
125                         ${CMAKE_CURRENT_BINARY_DIR}/examples/comm_time/Slave.class
126                         ${CMAKE_CURRENT_BINARY_DIR}/examples/comm_time/Master.class
127                         ${CMAKE_CURRENT_BINARY_DIR}/examples/suspend/SuspendTest.class
128                         ${CMAKE_CURRENT_BINARY_DIR}/examples/suspend/LazyGuy.class
129                         ${CMAKE_CURRENT_BINARY_DIR}/examples/suspend/DreamMaster.class
130                         
131         DEPENDS 
132             ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar
133                         ${CMAKE_HOME_DIRECTORY}/examples/basic/*.java
134                         ${CMAKE_HOME_DIRECTORY}/examples/ping_pong/*.java
135                         ${CMAKE_HOME_DIRECTORY}/examples/comm_time/*.java
136                         ${CMAKE_HOME_DIRECTORY}/examples/suspend/*.java
137                         
138         COMMENT "Build examples for java"       
139         
140         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/examples/basic
141         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/examples/ping_pong
142         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/examples/comm_time
143         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/examples/suspend
144         
145         COMMAND ${JAVA_COMPILE} -d ${CMAKE_CURRENT_BINARY_DIR}/examples/basic -cp ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/basic/*.java  
146         COMMAND ${JAVA_COMPILE} -d ${CMAKE_CURRENT_BINARY_DIR}/examples/ping_pong -cp ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/ping_pong/*.java
147         COMMAND ${JAVA_COMPILE} -d ${CMAKE_CURRENT_BINARY_DIR}/examples/comm_time -cp ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/comm_time/*.java
148         COMMAND ${JAVA_COMPILE} -d ${CMAKE_CURRENT_BINARY_DIR}/examples/suspend -cp ${CMAKE_CURRENT_BINARY_DIR}/simgrid.jar ${CMAKE_HOME_DIRECTORY}/examples/suspend/*.java
149 )
150
151 ADD_CUSTOM_TARGET(simgrid_java_examples ALL
152                   DEPENDS       ${CMAKE_CURRENT_BINARY_DIR}/examples/basic/BasicTest.class
153                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/basic/FinalizeTask.class
154                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/basic/Forwarder.class
155                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/basic/Slave.class
156                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/basic/Master.class
157                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/ping_pong/PingPongTest.class
158                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/ping_pong/Sender.class
159                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/ping_pong/PingPongTask.class
160                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/ping_pong/Receiver.class
161                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/comm_time/FinalizeTask.class
162                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/comm_time/CommTimeTest.class
163                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/comm_time/Slave.class
164                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/comm_time/Master.class
165                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/suspend/SuspendTest.class
166                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/suspend/LazyGuy.class
167                                                         ${CMAKE_CURRENT_BINARY_DIR}/examples/suspend/DreamMaster.class
168 )