Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
FAQ update for Cmake.
[simgrid.git] / buildtools / Cmake / simgrid_CMakeList / doc / FAQ.doc
index 2b0f9e1..3055f2a 100644 (file)
@@ -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 <a href="http://gforge.inria.fr/frs/?group_id=12">here</a> 
-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                             <path_to_gtnets_directory>
-               prefix                                  <path_to_install_directory>
-               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 <a href="http://www.cmake.org/">here</a>.
+
+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 <a href="http://www.cmake.org/cmake/resources/software.html">download</a>
+
+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                             <path_to_gtnets_directory>
+               prefix                                  <path_to_install_directory>
+               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(<name_of_target> <src list>)
+
+### Add definitions for compile
+target_link_libraries(get_sender simgrid m pthread -fprofile-arcs)     #target_link_libraries(<name_of_targe> <dependencies>)
+\endverbatim
+
+Then you have to modified <project/directory>/buildtools/Cmake/src/CMakeMakeExeLib.txt and add 
+this line :
+\verbatim
+add_subdirectory(${PROJECT_DIRECTORY}/<path_where_is_CMakeList.txt>)
+\endverbatim
+
+2 Delete/add sources to lib.
+
+If you want modified, add or delete source files from a library you have to edit <project/directory>/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 <project/directory>/buildtools/Cmake/src/CMakeTest.txt 
+with this function : ADD_TEST(<name> <bin> <ARGS>)
+
+\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