set(CMAKE_PROJECT_NAME "${PROJECT_NAME}") set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") set(CPACK_PROJECT_NAME "${PROJECT_NAME}") set(CPACK_PACKAGE_FILE_NAME "simgrid-${release_version}") set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1) set(CPACK_GENERATOR "") #;TGZ;TZ;ZIP set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-src") set(CPACK_SOURCE_GENERATOR "TGZ") set(CPACK_SOURCE_FILES "${to_svg}") set(CPACK_SET_DESTDIR on) set(CMAKE_INSTALL_PREFIX ${prefix} CACHE TYPE INTERNAL FORCE) foreach(file ${script_to_install}) get_filename_component(file_location ${file} PATH) # message(${file_location}) # string(REPLACE "${PROJECT_DIRECTORY}/" "" file_location ${file_location}) install(FILES ${file} DESTINATION "${file_location}") endforeach(file ${EXTRA_DIST}) ###copy doc install(DIRECTORY "${PROJECT_DIRECTORY}/doc/html/" DESTINATION "$ENV{DESTDIR}${prefix}/doc/html/" PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE PATTERN "*.o" EXCLUDE PATTERN "*~" EXCLUDE ) ### scripts set(install_bins ${PROJECT_DIRECTORY}/src/smpi/smpicc ${PROJECT_DIRECTORY}/src/smpi/smpirun ${PROJECT_DIRECTORY}/tools/gras/gras_stub_generator ${PROJECT_DIRECTORY}/tools/tesh/tesh ) # FIXME: the following does not work because these binaries are not known as targets #install(TARGETS smpicc smpirun gras_stub_generator tesh # RUNTIME DESTINATION $ENV{DESTDIR}${prefix}/bin) string(REPLACE ";" "\t" install_libs "${install_libs}") set(uninstall_bins "${install_bins}") string(REPLACE "${PROJECT_DIRECTORY}/src/smpi" "${prefix}/bin" uninstall_bins "${uninstall_bins}") string(REPLACE "${PROJECT_DIRECTORY}/tools/gras" "${prefix}/bin" uninstall_bins "${uninstall_bins}") string(REPLACE "${PROJECT_DIRECTORY}/tools/tesh" "${prefix}/bin" uninstall_bins "${uninstall_bins}") string(REPLACE "${PROJECT_DIRECTORY}/tools/MSG_visualization/colorize.pl" "${prefix}/bin/simgrid-colorizer" uninstall_bins "${uninstall_bins}") string(REPLACE "${PROJECT_DIRECTORY}/src/.libs" "${prefix}/lib" uninstall_libs "${install_libs}") string(REPLACE "./" "${prefix}/" uninstall_HEADERS "${install_HEADERS}") add_custom_target(install-simgrid COMMAND mkdir -p $ENV{DESTDIR}${prefix} COMMAND mkdir -p $ENV{DESTDIR}${prefix}/bin COMMAND mkdir -p $ENV{DESTDIR}${prefix}/lib COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include COMMAND mkdir -p $ENV{DESTDIR}${prefix}/doc COMMAND mkdir -p $ENV{DESTDIR}${prefix}/doc/simgrid COMMAND mkdir -p $ENV{DESTDIR}${prefix}/doc/simgrid/html COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include/xbt COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include/mc COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include/msg COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include/simdag COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include/smpi COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include/surf COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include/gras COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include/amok COMMAND mkdir -p $ENV{DESTDIR}${prefix}/include/instr COMMAND cp ${install_bins} $ENV{DESTDIR}${prefix}/bin COMMAND cp ${PROJECT_DIRECTORY}/tools/MSG_visualization/colorize.pl $ENV{DESTDIR}${prefix}/bin/simgrid-colorizer COMMAND echo "install bin OK" COMMAND cp ${PROJECT_DIRECTORY}/src/.libs/libsimgrid.so.${release_version} $ENV{DESTDIR}${prefix}/lib COMMAND ln -sf $ENV{DESTDIR}${prefix}/lib/libsimgrid.so.${release_version} $ENV{DESTDIR}${prefix}/lib/libsimgrid.so COMMAND cp ${PROJECT_DIRECTORY}/src/.libs/libsimgrid_static.a $ENV{DESTDIR}${prefix}/lib/libsimgrid.a COMMAND cp ${PROJECT_DIRECTORY}/src/.libs/libgras.so.${release_version} $ENV{DESTDIR}${prefix}/lib COMMAND ln -sf $ENV{DESTDIR}${prefix}/lib/libgras.so.${release_version} $ENV{DESTDIR}${prefix}/lib/libgras.so # FIXME: this should be copied only if enable_smpi is true COMMAND cp ${PROJECT_DIRECTORY}/src/.libs/libsmpi.so.${release_version} $ENV{DESTDIR}${prefix}/lib || true COMMAND ln -sf $ENV{DESTDIR}${prefix}/lib/libsmpi.so.${release_version} $ENV{DESTDIR}${prefix}/lib/libsmpi.so COMMAND echo "install lib OK" WORKING_DIRECTORY "${PROJECT_DIRECTORY}/" ) foreach(file ${install_HEADERS}) add_custom_command(TARGET install-simgrid COMMAND cp ${file} $ENV{DESTDIR}${prefix}/${file} WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) endforeach(file ${install_HEADERS}) add_custom_command(TARGET install-simgrid COMMAND echo "install include OK" WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) add_custom_target(uninstall COMMAND rm -rf ${prefix}/doc/simgrid COMMAND echo "uninstall doc ok" COMMAND rm -f ${uninstall_libs} COMMAND echo "uninstall lib ok" COMMAND rm -f ${uninstall_bins} COMMAND rm -f ${prefix}/bin/simgrid_colorizer.pl COMMAND echo "uninstall bin ok" COMMAND rm -f ${uninstall_HEADERS} COMMAND echo "uninstal include ok" COMMAND rm -Rf ${prefix}/include/amok ${prefix}/include/gras ${prefix}/include/instr ${prefix}/include/msg COMMAND rm -Rf ${prefix}/include/simdag ${prefix}/include/smpi ${prefix}/include/surf ${prefix}/include/xbt WORKING_DIRECTORY "${prefix}" ) if(HAVE_JAVA) add_custom_command(TARGET install-simgrid COMMAND mkdir -p $ENV{DESTDIR}${prefix}/share/ COMMAND cp ${PROJECT_DIRECTORY}/src/simgrid.jar $ENV{DESTDIR}${prefix}/share/simgrid.jar COMMAND echo "install binding java OK" WORKING_DIRECTORY "${PROJECT_DIRECTORY}/" ) add_custom_command(TARGET uninstall COMMAND rm -f ${prefix}/share/simgrid.jar COMMAND echo "uninstall binding java" WORKING_DIRECTORY "${PROJECT_DIRECTORY}/" ) endif(HAVE_JAVA) if(HAVE_LUA) add_custom_command(TARGET install-simgrid COMMAND mkdir -p $ENV{DESTDIR}${prefix}/lib/lua/5.1/ COMMAND ln -sf ${prefix}/lib/libsimgrid.so $ENV{DESTDIR}${prefix}/lib/lua/5.1/simgrid.so COMMAND echo "install binding lua OK" WORKING_DIRECTORY "${PROJECT_DIRECTORY}/" ) add_custom_command(TARGET uninstall COMMAND echo "uninstall binding lua" COMMAND rm -f ${prefix}/lib/lua/5.1/simgrid.so WORKING_DIRECTORY "${PROJECT_DIRECTORY}/" ) endif(HAVE_LUA) if(HAVE_RUBY) string(REGEX REPLACE "^.*ruby/" "" install_link_ruby "${RUBY_ARCH_DIR}") add_custom_command(TARGET install-simgrid COMMAND mkdir -p "$ENV{DESTDIR}${prefix}/lib/ruby/${install_link_ruby}/" COMMAND ln -sf ${prefix}/lib/libsimgrid.so $ENV{DESTDIR}${prefix}/lib/ruby/${install_link_ruby}/libsimgrid.so COMMAND cp ${PROJECT_DIRECTORY}/src/bindings/ruby/simgrid.rb $ENV{DESTDIR}${prefix}/lib/ruby/${install_link_ruby}/simgrid.rb COMMAND echo "install binding ruby OK" WORKING_DIRECTORY "${PROJECT_DIRECTORY}/" ) add_custom_command(TARGET uninstall COMMAND echo "uninstall binding ruby" COMMAND rm -f ${prefix}/lib/ruby/${install_link_ruby}/libsimgrid.so COMMAND rm -f ${prefix}/lib/ruby/${install_link_ruby}/simgrid.rb WORKING_DIRECTORY "${PROJECT_DIRECTORY}/" ) endif(HAVE_RUBY) foreach(file ${directory_to_create}) string(REPLACE "${PROJECT_DIRECTORY}" "." file "${file}") add_custom_command(TARGET install-simgrid COMMAND mkdir -p $ENV{DESTDIR}${prefix}/doc/simgrid/${file} WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) endforeach(file ${directory_to_create}) foreach(file ${ex_to_svg}) string(REPLACE "${PROJECT_DIRECTORY}" "." file "${file}") add_custom_command(TARGET install-simgrid COMMAND cp ${file} $ENV{DESTDIR}${prefix}/doc/simgrid/${file} WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) endforeach(file ${ex_to_svg}) add_custom_command(TARGET install-simgrid COMMAND echo "install doc/examples OK" WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) add_custom_command(TARGET install-simgrid COMMAND cp ${PROJECT_DIRECTORY}/doc/html/* $ENV{DESTDIR}${prefix}/doc/simgrid/html/ || true COMMAND echo "install doc/html OK" WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) add_custom_target(html COMMAND echo "Make the html doc" COMMAND echo "cmake -DBIBTEX2HTML=${BIBTEX2HTML} ./" COMMAND cmake -DBIBTEX2HTML=${BIBTEX2HTML} ./ COMMAND rm -rf ${PROJECT_DIRECTORY}/buildtools/Cmake/src/doc/CMakeFiles COMMAND rm -f ${PROJECT_DIRECTORY}/buildtools/Cmake/src/doc/CMakeCache.txt COMMAND rm -f ${PROJECT_DIRECTORY}/buildtools/Cmake/src/doc/cmake_install.cmake COMMAND rm -f ${PROJECT_DIRECTORY}/buildtools/Cmake/src/doc/Makefile WORKING_DIRECTORY "${PROJECT_DIRECTORY}/buildtools/Cmake/src/doc" ) SET(CMAKE_VERBOSE_MAKEFILE 1) ################################################################ ## Build a sain "make dist" target to build a source package ### ## containing only the files that I explicitely state ### ## (instead of any cruft laying on my disk as CPack does) ### ################################################################ add_custom_target(dist-dir COMMAND test -e simgrid-${release_version}/ && chmod -R a+w simgrid-${release_version}/ || true COMMAND ${CMAKE_COMMAND} -E remove_directory simgrid-${release_version} COMMAND ${CMAKE_COMMAND} -E make_directory simgrid-${release_version} ) set(dirs_in_tarball "") foreach(file ${to_svg} ${txt_files}) # This damn prefix is still set somewhere (seems to be in subdirs) string(REPLACE "${PROJECT_DIRECTORY}/" "" file ${file}) # Create the directory on need get_filename_component(file_location ${file} PATH) string(REGEX MATCH ";${file_location};" OPERATION "${dirs_in_tarball}") if(NOT OPERATION) set(dirs_in_tarball "${dirs_in_tarball};${file_location};") add_custom_command( TARGET dist-dir COMMAND ${CMAKE_COMMAND} -E make_directory simgrid-${release_version}/${file_location}/ ) endif(NOT OPERATION) # Actually copy the file add_custom_command( TARGET dist-dir COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_DIRECTORY}/${file} simgrid-${release_version}/${file_location}/ ) endforeach(file ${to_svg}) add_custom_target(dist COMMAND ${CMAKE_COMMAND} -E tar cf simgrid-${release_version}.tar simgrid-${release_version}/ COMMAND gzip -9v simgrid-${release_version}.tar COMMAND ${CMAKE_COMMAND} -E remove_directory simgrid-${release_version} ) add_dependencies(dist dist-dir) # Allow to test the "make dist" add_custom_target(distcheck COMMAND ${CMAKE_COMMAND} -E make_directory simgrid-${release_version}/_build COMMAND ${CMAKE_COMMAND} -E make_directory simgrid-${release_version}/_inst # This stupid cmake creates a directory in source, killing the purpose of the chmod # (tricking around) COMMAND ${CMAKE_COMMAND} -E make_directory simgrid-${release_version}/CMakeFiles # COMMAND chmod -R a-w simgrid-${release_version}/ # FIXME: we should pass without commenting that line COMMAND chmod -R a+w simgrid-${release_version}/_build COMMAND chmod -R a+w simgrid-${release_version}/_inst COMMAND chmod -R a+w simgrid-${release_version}/CMakeFiles COMMAND ${CMAKE_COMMAND} -E chdir simgrid-${release_version}/_build ${CMAKE_COMMAND} build .. -Dprefix=../_inst # COMMAND ${CMAKE_COMMAND} -E chdir simgrid-${release_version}/_build make dist-dir COMMAND ${CMAKE_COMMAND} -E chdir simgrid-${release_version}/_build make -j5 || ${CMAKE_COMMAND} -E chdir simgrid-${release_version}/_build make COMMAND ${CMAKE_COMMAND} -E chdir simgrid-${release_version}/_build make test -j5 COMMAND ${CMAKE_COMMAND} -E chdir simgrid-${release_version}/_build make clean # COMMAND ${CMAKE_COMMAND} -E remove_directory simgrid-${release_version}/ ) add_dependencies(distcheck dist-dir) ######################################## ### End of "make dist" related stuff ### ######################################## add_custom_target(check COMMAND make test #WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) add_custom_target(maintainer-clean COMMAND rm -f src/config_unit.c COMMAND rm -f src/cunit_unit.c COMMAND rm -f src/dict_unit.c COMMAND rm -f src/dynar_unit.c COMMAND rm -f src/ex_unit.c COMMAND rm -f src/set_unit.c COMMAND rm -f src/simgrid_units_main.c COMMAND rm -f src/swag_unit.c COMMAND rm -f src/xbt_sha_unit.c COMMAND rm -f src/xbt_str_unit.c COMMAND rm -f src/xbt_strbuff_unit.c COMMAND rm -f src/xbt_synchro_unit.c WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) add_custom_target(supernovae-clean COMMAND rm -f src/supernovae_gras.c COMMAND rm -f src/supernovae_sg.c COMMAND rm -f src/supernovae_smpi.c WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) add_custom_target(doc-clean COMMAND rm -f doc/all_bib.html COMMAND rm -f doc/all_bib.latin1.html COMMAND rm -f doc/all_bib.latin1.html.tmp COMMAND rm -f doc/logcategories.sh COMMAND rm -f doc/publis_core.bib COMMAND rm -f doc/publis_core_bib.html COMMAND rm -f doc/publis_core_bib.latin1.html COMMAND rm -f doc/publis_core_bib.latin1.html.tmp COMMAND rm -f doc/publis_count.html COMMAND rm -f doc/publis_extern.bib COMMAND rm -f doc/publis_extern_bib.html COMMAND rm -f doc/publis_extern_bib.latin1.html COMMAND rm -f doc/publis_extern_bib.latin1.html.tmp COMMAND rm -f doc/publis_intra.bib COMMAND rm -f doc/publis_intra_bib.html COMMAND rm -f doc/publis_intra_bib.latin1.html COMMAND rm -f doc/publis_intra_bib.latin1.html.tmp COMMAND rm -f doc/tmp.realtoc COMMAND rm -f doc/using_bib.html COMMAND rm -f doc/using_bib.latin1.html COMMAND rm -f doc/using_bib.latin1.html.tmp COMMAND rm -f doc/realtoc.sh WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) add_custom_target(java-clean COMMAND rm -f src/simgrid.jar COMMAND rm -rf src/.classes COMMAND rm -f examples/java/basic/BasicTest.class COMMAND rm -f examples/java/basic/FinalizeTask.class COMMAND rm -f examples/java/basic/Forwarder.class COMMAND rm -f examples/java/basic/Master.class COMMAND rm -f examples/java/basic/Slave.class COMMAND rm -f examples/java/comm_time/CommTimeTest.class COMMAND rm -f examples/java/comm_time/FinalizeTask.class COMMAND rm -f examples/java/comm_time/Master.class COMMAND rm -f examples/java/comm_time/Slave.class COMMAND rm -f examples/java/ping_pong/PingPongTask.class COMMAND rm -f examples/java/ping_pong/PingPongTest.class COMMAND rm -f examples/java/ping_pong/Receiver.class COMMAND rm -f examples/java/ping_pong/Sender.class COMMAND rm -f examples/java/suspend/DreamMaster.class COMMAND rm -f examples/java/suspend/LazyGuy.class COMMAND rm -f examples/java/suspend/SuspendTest.class WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) add_custom_target(all-clean COMMAND make clean COMMAND make java-clean COMMAND make doc-clean COMMAND make supernovae-clean ) if(enable_maintainer_mode) add_custom_command(TARGET all-clean COMMAND make maintainer-clean ) endif(enable_maintainer_mode) add_custom_target(sync-gforge COMMAND chmod g+rw -R doc/ COMMAND chmod a+rX -R doc/ COMMAND rsync --verbose --cvs-exclude --compress --delete --delete-excluded --rsh=ssh --ignore-times --recursive --links --perms --times --omit-dir-times doc/html/ scm.gforge.inria.fr:/home/groups/simgrid/htdocs/doc/ || true COMMAND scp doc/index.php doc/webcruft/robots.txt scm.gforge.inria.fr:/home/groups/simgrid/htdocs/ COMMAND scp doc/html/simgrid_modules2.png doc/html/simgrid_modules.png doc/webcruft/simgrid_logo.png doc/webcruft/simgrid_logo_small.png scm.gforge.inria.fr:/home/groups/simgrid/htdocs/ WORKING_DIRECTORY "${PROJECT_DIRECTORY}" ) include(CPack)