Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Disable bogus warning.
[simgrid.git] / tools / cmake / Distrib.cmake
1 #########################################
2 ### Fill in the "make install" target ###
3 #########################################
4
5 # doc
6 install(DIRECTORY "${CMAKE_BINARY_DIR}/doc/html/" DESTINATION doc/simgrid/html/ OPTIONAL)
7
8 # binaries
9 if(enable_smpi)
10   install(PROGRAMS
11     ${CMAKE_BINARY_DIR}/bin/smpicc
12     ${CMAKE_BINARY_DIR}/bin/smpicxx
13     ${CMAKE_BINARY_DIR}/bin/smpirun
14     DESTINATION bin/)
15   if(SMPI_FORTRAN)
16     install(PROGRAMS
17       ${CMAKE_BINARY_DIR}/bin/smpif90
18       ${CMAKE_BINARY_DIR}/bin/smpiff
19       DESTINATION bin/)
20     install(PROGRAMS
21       ${CMAKE_BINARY_DIR}/include/smpi/mpi.mod
22       DESTINATION include/smpi/)
23   endif()
24 endif()
25
26 install(PROGRAMS ${CMAKE_BINARY_DIR}/bin/tesh  DESTINATION bin/)
27
28 install(TARGETS graphicator DESTINATION bin/)
29
30 install(PROGRAMS ${CMAKE_HOME_DIRECTORY}/tools/MSG_visualization/colorize.pl
31   DESTINATION bin/
32   RENAME simgrid-colorizer)
33
34 add_custom_target(simgrid-colorizer ALL
35   COMMENT "Install ${CMAKE_BINARY_DIR}/bin/colorize"
36   COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_HOME_DIRECTORY}/tools/MSG_visualization/colorize.pl ${CMAKE_BINARY_DIR}/bin/colorize)
37
38 install(PROGRAMS ${CMAKE_HOME_DIRECTORY}/tools/simgrid_update_xml.pl
39   DESTINATION bin/
40   RENAME simgrid_update_xml)
41
42 add_custom_target(simgrid_update_xml ALL
43   COMMENT "Install ${CMAKE_BINARY_DIR}/bin/simgrid_update_xml"
44   COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_HOME_DIRECTORY}/tools/simgrid_update_xml.pl ${CMAKE_BINARY_DIR}/bin/simgrid_update_xml)
45
46 install(PROGRAMS ${CMAKE_HOME_DIRECTORY}/tools/simgrid_convert_TI_traces.py
47   DESTINATION bin/
48   RENAME simgrid_convert_TI_traces)
49
50 add_custom_target(simgrid_convert_TI_traces ALL
51     COMMENT "Install ${CMAKE_BINARY_DIR}/bin/simgrid_convert_TI_traces"
52     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_HOME_DIRECTORY}/tools/simgrid_convert_TI_traces.py ${CMAKE_BINARY_DIR}/bin/simgrid_convert_TI_traces)
53
54 # libraries
55 install(TARGETS simgrid DESTINATION lib/)
56
57 if(enable_java)
58   set(SIMGRID_JAR_TO_INSTALL "${SIMGRID_JAR}")
59   install(TARGETS simgrid-java   DESTINATION lib/)
60   install(FILES ${SIMGRID_JAR_TO_INSTALL}
61       DESTINATION java/
62       RENAME simgrid.jar)
63 endif()
64
65 # pkg-config files
66 configure_file("${CMAKE_HOME_DIRECTORY}/tools/pkg-config/simgrid.pc.in"
67   "${PROJECT_BINARY_DIR}/simgrid.pc" @ONLY)
68 install(FILES "${PROJECT_BINARY_DIR}/simgrid.pc" DESTINATION lib/pkgconfig/)
69
70 # include files
71 foreach(file ${headers_to_install}  ${generated_headers_to_install})
72   get_filename_component(location ${file} PATH)
73   string(REPLACE "${CMAKE_CURRENT_BINARY_DIR}/" "" location "${location}")
74   install(FILES ${file} DESTINATION ${location})
75 endforeach()
76
77 # example files
78 foreach(file ${examples_to_install})
79   string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/examples/" "" file ${file})
80   get_filename_component(location ${file} PATH)
81   install(FILES "examples/${file}"
82     DESTINATION doc/simgrid/examples/${location})
83 endforeach(file ${examples_to_install})
84
85 ###########################################
86 ### Fill in the "make uninstall" target ###
87 ###########################################
88
89 add_custom_target(uninstall
90   COMMAND ${CMAKE_COMMAND} -E   remove_directory ${CMAKE_INSTALL_PREFIX}/doc/simgrid
91   COMMAND ${CMAKE_COMMAND} -E   echo "uninstall doc ok"
92   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/lib/libsimgrid*
93   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/lib/lua/5.1/simgrid*
94   COMMAND ${CMAKE_COMMAND} -E   echo "uninstall lib ok"
95   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/bin/smpicc
96   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/bin/smpicxx
97   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/bin/smpiff
98   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/bin/smpif90
99   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/bin/smpirun
100   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/bin/tesh
101   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/bin/simgrid-colorizer
102   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/bin/simgrid_update_xml
103   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/bin/simgrid_convert_TI_traces
104   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/bin/graphicator
105   COMMAND ${CMAKE_COMMAND} -E   echo "uninstall bin ok"
106   COMMAND ${CMAKE_COMMAND} -E   remove_directory ${CMAKE_INSTALL_PREFIX}/include/instr
107   COMMAND ${CMAKE_COMMAND} -E   remove_directory ${CMAKE_INSTALL_PREFIX}/include/msg
108   COMMAND ${CMAKE_COMMAND} -E   remove_directory ${CMAKE_INSTALL_PREFIX}/include/simdag
109   COMMAND ${CMAKE_COMMAND} -E   remove_directory ${CMAKE_INSTALL_PREFIX}/include/smpi
110   COMMAND ${CMAKE_COMMAND} -E   remove_directory ${CMAKE_INSTALL_PREFIX}/include/simix
111   COMMAND ${CMAKE_COMMAND} -E   remove_directory ${CMAKE_INSTALL_PREFIX}/include/surf
112   COMMAND ${CMAKE_COMMAND} -E   remove_directory ${CMAKE_INSTALL_PREFIX}/include/xbt
113   COMMAND ${CMAKE_COMMAND} -E   remove_directory ${CMAKE_INSTALL_PREFIX}/include/mc
114   COMMAND ${CMAKE_COMMAND} -E   remove_directory ${CMAKE_INSTALL_PREFIX}/include/simgrid
115   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/include/simgrid.h
116   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/include/simgrid/config.h
117   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/include/xbt.h
118   COMMAND ${CMAKE_COMMAND} -E   echo "uninstall include ok"
119   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/share/man/man1/simgrid_update_xml.1
120   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/share/man/man1/tesh.1
121   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/share/man/man1/smpicc.1
122   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/share/man/man1/smpicxx.1
123   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/share/man/man1/smpirun.1
124   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/share/man/man1/smpiff.1
125   COMMAND ${CMAKE_COMMAND} -E   remove -f ${CMAKE_INSTALL_PREFIX}/share/man/man1/smpif90.1
126
127
128   COMMAND ${CMAKE_COMMAND} -E   echo "uninstall man ok"
129   WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}")
130
131 if(SIMGRID_HAVE_LUA)
132   add_custom_command(TARGET uninstall
133     COMMAND ${CMAKE_COMMAND} -E echo "uninstall binding lua ok"
134     COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_INSTALL_PREFIX}/lib/lua/5.1/simgrid.${LIB_EXE}
135     WORKING_DIRECTORY "${CMAKE_HOME_DIRECTORY}/")
136 endif()
137
138 ################################################################
139 ## Build a sain "make dist" target to build a source package ###
140 ##   containing only the files that I explicitely state      ###
141 ##   (instead of any cruft laying on my disk as CPack does)  ###
142 ################################################################
143
144 # This is the complete list of what will be added to the source archive
145 set(source_to_pack
146   ${headers_to_install}
147   ${source_of_generated_headers}
148   ${BINDINGS_SRC}
149   ${JEDULE_SRC}
150   ${JMSG_C_SRC}
151   ${JMSG_JAVA_SRC}
152   ${LUA_SRC}
153   ${MC_SRC_BASE}
154   ${MC_SRC}
155   ${MC_SIMGRID_MC_SRC}
156   ${MSG_SRC}
157   ${S4U_SRC}
158   ${NS3_SRC}
159   ${PLUGINS_SRC}
160   ${RNGSTREAM_SRC}
161   ${SIMDAG_SRC}
162   ${SIMGRID_SRC}
163   ${SIMIX_SRC}
164   ${SMPI_SRC}
165   ${SURF_SRC}
166   ${TRACING_SRC}
167   ${XBT_RL_SRC}
168   ${XBT_SRC}
169   ${EXTRA_DIST}
170   ${CMAKE_SOURCE_FILES}
171   ${CMAKEFILES_TXT}
172   ${DOC_FIGS}
173   ${DOC_IMG}
174   ${DOC_SOURCES}
175   ${DOC_TOOLS}
176   ${PLATFORMS_EXAMPLES}
177   ${README_files}
178   ${bin_files}
179   ${examples_src}
180   ${tesh_files}
181   ${teshsuite_src}
182   ${testsuite_src}
183   ${tools_src}
184   ${txt_files}
185   ${xml_files}
186   )
187
188 ##########################################
189 ### Fill in the "make dist-dir" target ###
190 ##########################################
191
192 add_custom_target(dist-dir
193   COMMENT "Generating the distribution directory"
194   COMMAND ${CMAKE_COMMAND} -E remove_directory ${PROJECT_NAME}-${release_version}/
195   COMMAND ${CMAKE_COMMAND} -E remove ${PROJECT_NAME}-${release_version}.tar.gz
196   COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_NAME}-${release_version}
197   COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_NAME}-${release_version}/doc/html/
198   COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/doc/html/ ${PROJECT_NAME}-${release_version}/doc/html/
199   COMMAND rm -f `grep -rl " Reference" ${PROJECT_NAME}-${release_version}/doc/html/` # Doxygen, go away
200   COMMAND rm -f `grep -rl "Member List" ${PROJECT_NAME}-${release_version}/doc/html/` # Doxygen, you're getting annoying
201   )
202 add_dependencies(dist-dir maintainer_files)
203
204 set(dirs_in_tarball "")
205 foreach(file ${source_to_pack})
206   #message(${file})
207   # This damn prefix is still set somewhere (seems to be in subdirs)
208   string(REPLACE "${CMAKE_HOME_DIRECTORY}/" "" file "${file}")
209
210   # Create the directory on need
211   get_filename_component(file_location ${file} PATH)
212   string(REGEX MATCH ";${file_location};" OPERATION "${dirs_in_tarball}")
213   if(NOT OPERATION)
214     set(dirs_in_tarball "${dirs_in_tarball};${file_location};")
215     add_custom_command(
216       TARGET dist-dir
217       COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_NAME}-${release_version}/${file_location}/)
218   endif()
219
220   # Actually copy the file
221   add_custom_command(
222     TARGET dist-dir
223     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_HOME_DIRECTORY}/${file} ${PROJECT_NAME}-${release_version}/${file_location})
224 endforeach(file ${source_to_pack})
225
226 add_custom_command(
227   TARGET dist-dir
228   COMMAND ${CMAKE_COMMAND} -E echo "${GIT_VERSION}" > ${PROJECT_NAME}-${release_version}/.gitversion)
229
230 ##########################################################
231 ### Link all sources to the bindir if srcdir != bindir ###
232 ##########################################################
233 add_custom_target(hardlinks
234    COMMENT "Making the source files available from the bindir"
235 )
236 if (NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
237   foreach(file ${source_to_pack})
238     #message(${file})
239     # This damn prefix is still set somewhere (seems to be in subdirs)
240     string(REPLACE "${CMAKE_HOME_DIRECTORY}/" "" file "${file}")
241
242     # Create the directory on need
243     get_filename_component(file_location ${file} PATH)
244     string(REGEX MATCH ";${file_location};" OPERATION "${dirs_in_bindir}")
245     if(NOT OPERATION)
246       set(dirs_in_tarball "${dirs_in_bindir};${file_location};")
247       add_custom_command(
248         TARGET hardlinks
249         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${file_location}/)
250     endif()
251
252     # Actually copy the file
253     add_custom_command(
254       TARGET hardlinks
255       COMMAND if test -f ${CMAKE_HOME_DIRECTORY}/${file} \; then rm -f ${CMAKE_BINARY_DIR}/${file}\; ln ${CMAKE_HOME_DIRECTORY}/${file} ${CMAKE_BINARY_DIR}/${file_location}\; fi
256     )
257   endforeach(file ${source_to_pack})
258 endif()
259
260
261 ######################################
262 ### Fill in the "make dist" target ###
263 ######################################
264
265 add_custom_target(dist
266   COMMENT "Removing the distribution directory"
267   DEPENDS ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-${release_version}.tar.gz
268   COMMAND ${CMAKE_COMMAND} -E echo ${PROJECT_NAME}-${release_version} > ${CMAKE_BINARY_DIR}/VERSION
269   COMMAND ${CMAKE_COMMAND} -E remove_directory ${PROJECT_NAME}-${release_version}/)
270
271 add_custom_command(
272   OUTPUT ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-${release_version}.tar.gz
273   COMMENT "Compressing the archive from the distribution directory"
274   COMMAND ${CMAKE_COMMAND} -E tar cf ${PROJECT_NAME}-${release_version}.tar ${PROJECT_NAME}-${release_version}/
275   COMMAND gzip -9v ${PROJECT_NAME}-${release_version}.tar
276   COMMAND ${CMAKE_COMMAND} -E remove_directory ${PROJECT_NAME}-${release_version}/)
277 add_dependencies(dist dist-dir)
278
279 if(NOT enable_maintainer_mode)
280   add_custom_target(echo-dist
281     COMMAND ${CMAKE_COMMAND} -E echo "WARNING: ----------------------------------------------------"
282     COMMAND ${CMAKE_COMMAND} -E echo "WARNING: Distrib is generated without option maintainer mode "
283     COMMAND ${CMAKE_COMMAND} -E echo "WARNING: ----------------------------------------------------")
284   add_dependencies(dist echo-dist)
285 endif()
286
287 ###########################################
288 ### Fill in the "make distcheck" target ###
289 ###########################################
290
291 set(CMAKE_BINARY_TEST_DIR ${CMAKE_BINARY_DIR})
292
293 # Allow to test the "make dist"
294 add_custom_target(distcheck
295   COMMAND ${CMAKE_COMMAND} -E echo "XXX compare archive with git repository"
296   COMMAND ${CMAKE_HOME_DIRECTORY}/tools/internal/check_dist_archive -batch ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}.tar.gz
297
298   COMMAND ${CMAKE_COMMAND} -E echo "XXX remove old copy"
299   COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}
300
301   COMMAND ${CMAKE_COMMAND} -E echo "XXX Untar distrib"
302   COMMAND ${CMAKE_COMMAND} -E tar xf ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}.tar.gz ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}
303
304   COMMAND ${CMAKE_COMMAND} -E echo "XXX create build and install subtrees"
305   COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}/_build
306   COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}/_inst
307
308   COMMAND ${CMAKE_COMMAND} -E echo "XXX Configure"
309   COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}/_build
310           ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}/_inst -Denable_lto=OFF ..
311         
312   COMMAND ${CMAKE_COMMAND} -E echo "XXX Build"
313   COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}/_build ${CMAKE_MAKE_PROGRAM} -j 4
314
315   COMMAND ${CMAKE_COMMAND} -E echo "XXX Install"
316   COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}/_build ${CMAKE_MAKE_PROGRAM} install
317
318   COMMAND ${CMAKE_COMMAND} -E echo "XXX Build tests"
319   COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}/_build ${CMAKE_MAKE_PROGRAM} -j 4 tests
320
321   COMMAND ${CMAKE_COMMAND} -E echo "XXX Run tests"
322   COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}/_build ctest --output-on-failure -j 4
323
324   COMMAND ${CMAKE_COMMAND} -E echo "XXX Remove temp directories"
325   COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_TEST_DIR}/${PROJECT_NAME}-${release_version}
326   )
327 add_dependencies(distcheck dist)
328
329 #######################################
330 ### Fill in the "make check" target ###
331 #######################################
332
333 if(enable_memcheck)
334   add_custom_target(check COMMAND ctest -D ExperimentalMemCheck)
335 else()
336   add_custom_target(check COMMAND make test)
337 endif()
338 add_dependencies(check tests)
339
340 #######################################
341 ### Fill in the "make xxx-clean" target ###
342 #######################################
343
344 add_custom_target(maintainer-clean
345   COMMAND ${CMAKE_COMMAND} -E remove -f src/mpif.f90
346   WORKING_DIRECTORY "${CMAKE_HOME_DIRECTORY}")
347
348 include(CPack)