Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add some functions.
[simgrid.git] / CMakeLists.txt
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")
6
7
8 set(soversion 1)
9 ###############################
10 # Test the build dependencies #
11 ###############################
12 include(FindSimGrid.cmake)
13 include(FindJavaSG.cmake)
14
15 ###############################
16 # Declare our package content #
17 ###############################
18 set(JMSG_C_SRC
19         src/smx_context_java.h
20         src/smx_context_java.c
21         src/jxbt_utilities.c
22         src/jxbt_utilities.h
23         src/jmsg.c 
24         src/jmsg.h
25         src/jmsg_host.c
26         src/jmsg_host.h
27         src/jmsg_process.c
28         src/jmsg_process.h
29         src/jmsg_task.c
30         src/jmsg_task.h
31         src/jmsg_application_handler.c
32         src/jmsg_application_handler.h
33 )
34
35 set(JMSG_JAVA_SRC
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   
52 )
53
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 ")
55
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")
58
59 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${INCLUDE_PATH} ${LIB_PATH}")
60
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})
64
65 set(JAVA_FILES ${JMSG_JAVA_SRC})
66 set(JAVA_CLASSES ${JAVA_FILES})
67
68 string(REPLACE "org/" "${CMAKE_HOME_DIRECTORY}/org/"
69                JAVA_FILES "${JAVA_FILES}")
70
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}")         
75
76 add_custom_command(
77   OUTPUT  ${CMAKE_HOME_DIRECTORY}/classes/
78   COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_HOME_DIRECTORY}/classes/"
79   )
80   
81 # compile all .java files with javac to .class
82 ADD_CUSTOM_COMMAND(
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/
87                           ${JAVA_FILES}
88   COMMENT "Compiling java sources of core library..."
89 )
90
91 ADD_CUSTOM_COMMAND(
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..."
97 )
98
99 ADD_CUSTOM_COMMAND(
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
114                         
115         DEPENDS SG_java
116             ${CMAKE_HOME_DIRECTORY}/simgrid.jar
117                         
118         COMMENT "Build examples for java"       
119         
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
123 )
124
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
139                                         
140 )
141
142 #####################
143 # Declare our tests #
144 #####################
145 INCLUDE(CTest)
146 ENABLE_TESTING()
147
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/)