From 745a1a1590f6a2de6cc220eaee86489b8e6f743d Mon Sep 17 00:00:00 2001 From: navarrop Date: Mon, 15 Mar 2010 10:47:52 +0000 Subject: [PATCH 1/1] FAQ update for Cmake. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7252 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- .../Cmake/simgrid_CMakeList/doc/FAQ.doc | 598 +++++++++++++----- 1 file changed, 424 insertions(+), 174 deletions(-) diff --git a/buildtools/Cmake/simgrid_CMakeList/doc/FAQ.doc b/buildtools/Cmake/simgrid_CMakeList/doc/FAQ.doc index 2b0f9e136c..3055f2afbb 100644 --- a/buildtools/Cmake/simgrid_CMakeList/doc/FAQ.doc +++ b/buildtools/Cmake/simgrid_CMakeList/doc/FAQ.doc @@ -174,180 +174,6 @@ Thus, there is two ways to link your program with SimGrid: \verbatim export LD_LIBRARY_PATH=$HOME/lib/:$LD_LIBRARY_PATH \endverbatim -\section faq_installationCmake Installing the SimGrid library with cmake -This section required cmake tools with a 2.6 version at least. You can -also try to install ccmake which is a graphical tool for cmake. Then -download the last version of simgrid here -or checkout the svn with this command line . -\verbatim svn checkout svn://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk -\endverbatim - -Then open a terminal to simgrid directory. - -\subsection faq_PARTI-0 Using Cmake (generality) - -Cmake is a tool to generate makefiles on different plateforms. Here are descibed more usefull command line. - -\verbatim -"cmake ./" configure the project ( note1 ) -"make" build all tagets -"make test" test all targets and summarize -"make package" make the distrib ( note2 ) -"make install-simgrid" install the project (doc/ lib/ include/) -"make clean" clean all targets -\endverbatim - \li note1 : for options see section \ref faq_PARTII. - \li note2 : doc is needed see section \ref faq_PARTIII. - -\subsection faq_PARTI-1 Using Ctest (generality) - -Ctest is a tool embeded by cmake and can be link to a dashbord (like cdash). - -\verbatim -"ctest" launch only tests -"ctest -D Experimental" for -->|configure - |make - |test - |coverage - |submit -\endverbatim - -\subsection faq_PARTI-2 How to install - -Install lib from a svn repository - -\verbatim -cmake -Denable_maintainer_mode=on ./ -make -make test -\endverbatim - -Install lib from a distrib repository - -\verbatim -cmake -Dprefix=/home/navarrop/Bureau/install_simgrid ./ -make -make install-simgrid -\endverbatim - -\subsection faq_PARTII Cmake options - -Regarding options you can configure manually or with an executable - -Compilation with command line - -\verbatim -"cmake -D[name]=[value] ... ./" - -[name] disable_gtnets [value] ON/OFF or TRUE/FALSE or 1/0 - disable_java ON/OFF or TRUE/FALSE or 1/0 - disable_lua ON/OFF or TRUE/FALSE or 1/0 - disable_ruby ON/OFF or TRUE/FALSE or 1/0 - - enable_compile_optimizations ON/OFF or TRUE/FALSE or 1/0 - enable_compile_warnings ON/OFF or TRUE/FALSE or 1/0 - enable_maintainer_mode ON/OFF or TRUE/FALSE or 1/0 - - supernovae ON/OFF or TRUE/FALSE or 1/0 - - gtnets_path - prefix - with_context auto/ucontext/pthread/window -\endverbatim - -Compilation with ccmake gui tool - -\verbatim -"ccmake ./" then follow instructions. -\endverbatim - -\subsection faq_PARTIII Explaination of options - --->disable_gtnets : set to true implie that user doesn't want to use gtnets. - --->disable_java : set to true implie that user doesn't want to add java langage into simgrid compilation. - --->disable_lua : set to true implie that user doesn't want to add lua langage into simgrid compilation. - --->disable_ruby : set to true implie that user doesn't want to add ruby langage into simgrid compilation. - --->enable_compile_optimizations : add flags "-O3 -finline-functions -funroll-loops -fno-strict-aliasing" - --->enable_compile_warnings : add 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" - --->enable_maintainer_mode : set to true make doc and remake files with flex flexml. -\verbatim -/doc/html -/src/gras/DataDesc/ddt_parse.yy.c -/src/surf/simgrid_dtd.c -/src/xbt/graphxml.c -/src/simdag/dax_dtd.c -/include/surf/simgrid_dtd.h -/include/xbt/graphxml.h -/src/simdag/dax_dtd.h -\endverbatim --->supernovae : set to true make one file for each lib and compile with those generated files. -\verbatim -/src/supernovae_sg.c -/src/supernovae_gras.c -/src/supernovae_smpi.c -\endverbatim --->gtnets_path : Path to gtnets install directory (ex /usr) - --->prefix : Path where are installed lib/ doc/ and include/ directories (ex /usr/local) - --->with context : specify which context the user wants to use. - -\subsection faq_exemple Use and compilation result - -\verbatim -navarrop@caraja:~$ cd Bureau/simgrid-trunk/ -navarrop@caraja:~/Bureau/simgrid-trunk$ cmake ./ - -GTnetS doesn't works : set -Ddisable_gtnets=on <-|some warnings are printed -with_context auto change to ucontext <-| -(skaddr) <--info (needed) -(sksize) <--info (needed) -Make : src/simgrid.jar with : /usr/bin/javac <--info (if java) -Make examples/java with : /usr/bin/javac <--info (if java) - -Configuration of package `simgrid' (revision 7209M) on arch (=4): - BUILDNAME : UCONTEXT <-- name of the compilation regarding to cdash - SITE : Linux_Ubuntu 9.10_x86_64 <-- distribution of the local machine regarding to cdash - - Compiler: c++ : /usr/bin/c++ - version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1 - c : /usr/bin/gcc - version: gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1 - - CFlags: -g3 - CPPFlags: - LDFlags: - - Context backend: ucontext - Compile Gtnets: 0 - path: - Compile Java: 1 - Compile Lua: 1 - Compile Ruby: 0 - - Maintainer mode: OFF - Supernovae mode: OFF - - Simgrid dependencies: -ldl -llua5.1 - Gras dependencies: pthread - Ruby dependencies: - Smpi dependencies: - - USER_PREFIX: /usr/local - INSTALL_PREFIX: /usr/local - --- Configuring done --- Generating done --- Build files have been written to: /home/navarrop/Bureau/simgrid-trunk -\endverbatim -Here all options are checked and printed. If it doesn't match with your configuration it is probably due to a wrong configuration. - \subsection faq_compiling_java Java bindings don't get compiled The configure script detects automatically whether you have the @@ -540,6 +366,430 @@ If you use the GRAS interface instead of the MSG one, then previous section is not the better source of information. Instead, you should check the GRAS tutorial in general, and the \ref GRAS_tut_tour_setup in particular. +\section faq_cmake CMAKE + +\subsection faq_intro Some generalitty + +1 What is Cmake? + +CMake is a family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice. For more information see official web site here. + +2 Why cmake? + +CMake permits to developers to compil projects on different plateform. Then many tools are embedded like ctest for making test, a link to cdash for vizualise results but also test coverage and bug reports. + +3 What cmake need? + +CMake needs some prerequists like : + \li make + \li a c, c++ and java compiler regards to developers + \li ccmake for graphical used of CMake + \li cmake download + +4 Cmake vs Autotools... + + + +\subsection faq_cmakeoption Cmake options + +1 Liste of options + +\verbatim +"cmake -D[name]=[value] ... ./" + +[name] disable_gtnets [value] ON/OFF or TRUE/FALSE or 1/0 + disable_java ON/OFF or TRUE/FALSE or 1/0 + disable_lua ON/OFF or TRUE/FALSE or 1/0 + disable_ruby ON/OFF or TRUE/FALSE or 1/0 + + enable_compile_optimizations ON/OFF or TRUE/FALSE or 1/0 + enable_compile_warnings ON/OFF or TRUE/FALSE or 1/0 + enable_maintainer_mode ON/OFF or TRUE/FALSE or 1/0 + + supernovae ON/OFF or TRUE/FALSE or 1/0 + + gtnets_path + prefix + with_context auto/ucontext/pthread/window +\endverbatim + +2 Options explaination + + \li disable_gtnets : set to true implie that user doesn't want to use gtnets. + + \li disable_java : set to true implie that user doesn't want to add java langage into simgrid compilation. + + \li disable_lua : set to true implie that user doesn't want to add lua langage into simgrid compilation. + + \li disable_ruby : set to true implie that user doesn't want to add ruby langage into simgrid compilation. + + \li enable_compile_optimizations : add flags "-O3 -finline-functions -funroll-loops -fno-strict-aliasing" + + \li enable_compile_warnings : add 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" + + \li enable_maintainer_mode : set to true make doc and remake files with flex flexml. +\verbatim +/doc/html +/src/gras/DataDesc/ddt_parse.yy.c +/src/surf/simgrid_dtd.c +/src/xbt/graphxml.c +/src/simdag/dax_dtd.c +/include/surf/simgrid_dtd.h +/include/xbt/graphxml.h +/src/simdag/dax_dtd.h +\endverbatim + \li supernovae : set to true make one file for each lib and compile with those generated files. +\verbatim +/src/supernovae_sg.c +/src/supernovae_gras.c +/src/supernovae_smpi.c +\endverbatim + \li gtnets_path : Path to gtnets install directory (ex /usr) + + \li prefix : Path where are installed lib/ doc/ and include/ directories (ex /usr/local) + + \li with context : specify which context the user wants to use. + +3 Initialisation + +Those options are initialized the first time you launch \"cmake ./\" whithout specified option. + +\verbatim +with_context auto +enable_maintainer_mode off +supernovae off +disable_java off +disable_lua off +enable_compile_warnings off +enable_compile_optimizations off +disable_gtnets off +disable_ruby on +\endverbatim + +4 Option's cache and how to reset? + +When options have been set they are keep into a cache file named \"CMakeCache.txt\". So if you want +reset values you just delete this file located to the project directory. + +\subsection faq_cmakecompilation Cmake compilation + +1 With command line. + +\verbatim +cmake -D[name]=[value] ... ./ +make +\endverbatim + +2 With ccmake tool. + +\verbatim +"ccmake ./" +\endverbatim +Then follow instructions. + +3 Resume of command line + + \li CMake +\verbatim +cmake ./ configure the project +make build all tagets +make test test all targets and summarize +make package make the distrib +make install-simgrid install the project (doc/ lib/ include/) +make clean" clean all targets +\endverbatim + +When the project have been succesfully compiling and build you can make tests. + + \li CTest +\verbatim +ctest launch only tests +ctest -D Continuous +ctest -D Continuous(Start|Update|Configure|Build) +ctest -D Continuous(Test|Coverage|MemCheck|Submit) +ctest -D Experimental +ctest -D Experimental(Start|Update|Configure|Build) +ctest -D Experimental(Test|Coverage|MemCheck|Submit) +ctest -D Nightly +ctest -D Nightly(Start|Update|Configure|Build) +ctest -D Nightly(Test|Coverage|MemCheck|Submit) +ctest -D NightlyMemoryCheck +\endverbatim + +4 Examples for different mode. + +\li Mode maintainer + +cmake -Denable_maintainer_mode=on ./ +\verbatim GTnetS doesn't works : set -Ddisable_gtnets=on +with_context auto change to ucontext +(skaddr) +(sksize) +Make : src/simgrid.jar with : /usr/bin/javac +Make examples/java with : /usr/bin/javac + +Configuration of package `simgrid' (revision 7228M) on arch (=4): + BUILDNAME : UCONTEXT + SITE : Linux_Ubuntu 9.10_x86_64 + + Compiler: c++ : /usr/bin/c++ + version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1 + c : /usr/bin/gcc + version: gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1 + + CFlags: -g3 + CPPFlags: + LDFlags: + + Context backend: ucontext + Compile Gtnets: 0 + path: + Compile Java: 1 + Compile Lua: 1 + Compile Ruby: 0 + + Maintainer mode: on + Supernovae mode: off + + Simgrid dependencies: dl -llua5.1 + Gras dependencies: pthread + Ruby dependencies: + Smpi dependencies: + + USER_PREFIX: /usr/local + INSTALL_PREFIX: /usr/local + +-- Configuring done +-- Generating done +-- Build files have been written to: /home/navarrop/Bureau/simgrid-trunk +\endverbatim + +\li Mode supernovae + +cmake -Dsupernovae=on ./ +\verbatim GTnetS doesn't works : set -Ddisable_gtnets=on +with_context auto change to ucontext +(skaddr) +(sksize) +Make : src/simgrid.jar with : /usr/bin/javac +Make examples/java with : /usr/bin/javac + +Configuration of package `simgrid' (revision 7228M) on arch (=4): + BUILDNAME : SUPERNOVAE + SITE : Linux_Ubuntu 9.10_x86_64 + + Compiler: c++ : /usr/bin/c++ + version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1 + c : /usr/bin/gcc + version: gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1 + + CFlags: -O3 -finline-functions -funroll-loops -fno-strict-aliasing -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 -g3 + CPPFlags: + LDFlags: + + Context backend: ucontext + Compile Gtnets: 0 + path: + Compile Java: 1 + Compile Lua: 1 + Compile Ruby: 0 + + Maintainer mode: off + Supernovae mode: on + + Simgrid dependencies: dl -llua5.1 + Gras dependencies: pthread + Ruby dependencies: + Smpi dependencies: + + USER_PREFIX: /usr/local + INSTALL_PREFIX: /usr/local + +-- Configuring done +-- Generating done +-- Build files have been written to: /home/navarrop/Bureau/simgrid-trunk +\endverbatim + +\li Mode GTnetS + +cmake -Dgtnets_path=/home/navarrop/Bureau/usr/ ./ +\verbatim with_context auto change to ucontext +(skaddr) +(sksize) +Make : src/simgrid.jar with : /usr/bin/javac +Make examples/java with : /usr/bin/javac + +Configuration of package `simgrid' (revision 7228M) on arch (=4): + BUILDNAME : GTNETS + SITE : Linux_Ubuntu 9.10_x86_64 + + Compiler: c++ : /usr/bin/c++ + version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1 + c : /usr/bin/gcc + version: gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1 + + CFlags: -L/home/navarrop/Bureau/usr/lib -I/home/navarrop/Bureau/usr/include/gtnets -g3 + CPPFlags: -L/home/navarrop/Bureau/usr/lib -I/home/navarrop/Bureau/usr/include/gtnets + LDFlags: + + Context backend: ucontext + Compile Gtnets: 1 + path: /home/navarrop/Bureau/usr + Compile Java: 1 + Compile Lua: 1 + Compile Ruby: 0 + + Maintainer mode: off + Supernovae mode: off + + Simgrid dependencies: dl -llua5.1 -lgtnets + Gras dependencies: pthread + Ruby dependencies: + Smpi dependencies: + + USER_PREFIX: /usr/local + INSTALL_PREFIX: /usr/local + +INFO -->> Take care to have export LD_LIBRARY_PATH before run make command for make examples with gtnets +copy and paste : export LD_LIBRARY_PATH=/home/navarrop/Bureau/usr/lib/:$LD_LIBRARY_PATH + + +-- Configuring done +-- Generating done +-- Build files have been written to: /home/navarrop/Bureau/simgrid-trunk +\endverbatim + +\subsection faq_cmakeinstall How to install with cmake? + +1 From svn. + +\verbatim +cmake -Denable_maintainer_mode=on -Dprefix=/home/navarrop/Bureau/install_simgrid ./ +make +make install-simgrid +\endverbatim + +2 From a distrib + +\verbatim +cmake -Dprefix=/home/navarrop/Bureau/install_simgrid ./ +make +make install-simgrid +\endverbatim + +\subsection faq_screenshot Screenshot and examples + +1 Screenshot. + +\verbatim +navarrop@caraja:~$ cd Bureau/simgrid-trunk/ +navarrop@caraja:~/Bureau/simgrid-trunk$ cmake ./ + +GTnetS doesn't works : set -Ddisable_gtnets=on <-|some warnings are printed +with_context auto change to ucontext <-| +(skaddr) <--info (needed) +(sksize) <--info (needed) +Make : src/simgrid.jar with : /usr/bin/javac <--info (if java) +Make examples/java with : /usr/bin/javac <--info (if java) + +Configuration of package `simgrid' (revision 7209M) on arch (=4): + BUILDNAME : UCONTEXT <-- name of the compilation regarding to cdash + SITE : Linux_Ubuntu 9.10_x86_64 <-- distribution of the local machine regarding to cdash + + Compiler: c++ : /usr/bin/c++ + version: c++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1 + c : /usr/bin/gcc + version: gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1 + + CFlags: -g3 + CPPFlags: + LDFlags: + + Context backend: ucontext + Compile Gtnets: 0 + path: + Compile Java: 1 + Compile Lua: 1 + Compile Ruby: 0 + + Maintainer mode: OFF + Supernovae mode: OFF + + Simgrid dependencies: -ldl -llua5.1 + Gras dependencies: pthread + Ruby dependencies: + Smpi dependencies: + + USER_PREFIX: /usr/local + INSTALL_PREFIX: /usr/local + +-- Configuring done +-- Generating done +-- Build files have been written to: /home/navarrop/Bureau/simgrid-trunk +\endverbatim +Here all options are checked and printed. If it doesn't match with your configuration +it is probably due to a wrong configuration. + +2 Examples. + +\subsection faq_cmakehowto How to modified sources files for developers + +1 Add an executable or examples. + +If you want make an executable you have to create a CMakeList.txt to the src directory. +You must specified where to create the executable, source list, dependencies and the name of the binary. + +\verbatim +cmake_minimum_required(VERSION 2.6) + +set(EXECUTABLE_OUTPUT_PATH "./") +set(LIBRARY_OUTPUT_PATH "${PROJECT_DIRECTORY}/lib") + +add_executable(get_sender get_sender.c) #add_executable( ) + +### Add definitions for compile +target_link_libraries(get_sender simgrid m pthread -fprofile-arcs) #target_link_libraries( ) +\endverbatim + +Then you have to modified /buildtools/Cmake/src/CMakeMakeExeLib.txt and add +this line : +\verbatim +add_subdirectory(${PROJECT_DIRECTORY}/) +\endverbatim + +2 Delete/add sources to lib. + +If you want modified, add or delete source files from a library you have to edit /buildtools/Cmake/src/CMakeDefinePackages.txt + +\verbatim +set(JMSG_JAVA_SRC + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/MsgException.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/JniException.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/NativeException.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/HostNotFoundException.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/ProcessNotFoundException.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/Msg.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/Process.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/Host.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/Task.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/MsgNative.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/ApplicationHandler.java + ${PROJECT_DIRECTORY}/src/java/simgrid/msg/Sem.java +) +\endverbatim + +3 Add test + +If you want modified, add or delete tests you have to edit /buildtools/Cmake/src/CMakeTest.txt +with this function : ADD_TEST( ) + +\verbatim +add_test(test-simdag-1 ${PROJECT_DIRECTORY}/testsuite/simdag/sd_test --cfg=path:${PROJECT_DIRECTORY}/testsuite/simdag small_platform_variable.xml) +\endverbatim + +\subsection faq_cmakeExplain Explaination of sources files for cmake + +List of sources for cmake. \section faq_howto Feature related questions -- 2.20.1