From 873ced5d526ed273099cb0a65a13163c3225c77f Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Thu, 6 Dec 2012 12:00:42 +0100 Subject: [PATCH] move the user manual one layer higher, so that all manuals are merged back --- buildtools/Cmake/DefinePackages.cmake | 3 +- buildtools/Cmake/Distrib.cmake | 1 - buildtools/Cmake/GenerateDoc.cmake | 23 +++--- buildtools/Cmake/GenerateUserGuide.cmake | 11 --- doc/Doxyfile.in | 75 +++++++++++++++--- .../UserGuideDoxygenLayout.xml => Layout.xml} | 0 doc/{ => attic}/SimgridDoxygenLayout.xml | 0 doc/doxygen/header.html | 10 +-- doc/index.doc | 37 --------- doc/webcruft/README | 19 ----- doc/webcruft/simgrid_modules.png | Bin 0 -> 26054 bytes 11 files changed, 80 insertions(+), 99 deletions(-) rename doc/{doxygen/UserGuideDoxygenLayout.xml => Layout.xml} (100%) rename doc/{ => attic}/SimgridDoxygenLayout.xml (100%) delete mode 100644 doc/index.doc delete mode 100644 doc/webcruft/README create mode 100644 doc/webcruft/simgrid_modules.png diff --git a/buildtools/Cmake/DefinePackages.cmake b/buildtools/Cmake/DefinePackages.cmake index 48f6dbc6b5..8824b7fa28 100644 --- a/buildtools/Cmake/DefinePackages.cmake +++ b/buildtools/Cmake/DefinePackages.cmake @@ -507,9 +507,8 @@ set(DOC_SOURCES doc/simix.fig doc/surf_nutshell.fig doc/Doxyfile.in - doc/index.doc doc/simgrid.css - doc/SimgridDoxygenLayout.xml + doc/Layout.xml doc/triva-graph_configuration.png doc/triva-graph_visualization.png doc/triva-time_interval.png diff --git a/buildtools/Cmake/Distrib.cmake b/buildtools/Cmake/Distrib.cmake index 88f8c8af71..e8acb780eb 100644 --- a/buildtools/Cmake/Distrib.cmake +++ b/buildtools/Cmake/Distrib.cmake @@ -5,7 +5,6 @@ # doc file(MAKE_DIRECTORY ${CMAKE_HOME_DIRECTORY}/doc/shared/doxygen/) file(MAKE_DIRECTORY ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/html/) -file(MAKE_DIRECTORY ${CMAKE_HOME_DIRECTORY}/doc/user_guide/html/) install(DIRECTORY "${CMAKE_HOME_DIRECTORY}/doc/ref_guide/html/" DESTINATION "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/doc/simgrid/ref_guide/html/" diff --git a/buildtools/Cmake/GenerateDoc.cmake b/buildtools/Cmake/GenerateDoc.cmake index d70d56aa48..d35e037af7 100644 --- a/buildtools/Cmake/GenerateDoc.cmake +++ b/buildtools/Cmake/GenerateDoc.cmake @@ -18,8 +18,16 @@ if(DOXYGEN_PATH) include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/GenerateDevGuide.cmake) set(DOC_PNGS + ${CMAKE_HOME_DIRECTORY}/doc/webcruft/simgrid_modules.png ${CMAKE_HOME_DIRECTORY}/doc/webcruft/simgrid_logo_2011.png ${CMAKE_HOME_DIRECTORY}/doc/webcruft/simgrid_logo_2011_small.png + ${CMAKE_HOME_DIRECTORY}/doc/webcruft/poster_thumbnail.png + ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_01.png + ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_02.png + ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_03.png + ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_04.png + ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_05.png + ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_06.png ) configure_file(${CMAKE_HOME_DIRECTORY}/doc/Doxyfile.in ${CMAKE_HOME_DIRECTORY}/doc/Doxyfile @ONLY) @@ -44,8 +52,10 @@ if(DOXYGEN_PATH) ) ADD_CUSTOM_COMMAND(TARGET simgrid_documentation - COMMAND ${CMAKE_COMMAND} -E echo "XX Doxygen pass" + COMMAND ${FIG2DEV_PATH}/fig2dev -Lmap ${CMAKE_HOME_DIRECTORY}/doc/shared/fig/simgrid_modules.fig | perl -pe 's/imagemap/simgrid_modules/g'| perl -pe 's/ ${CMAKE_HOME_DIRECTORY}/doc/simgrid_modules.map + COMMAND ${CMAKE_COMMAND} -E echo "XX Run doxygen" COMMAND ${DOXYGEN_PATH}/doxygen Doxyfile + COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_HOME_DIRECTORY}/doc/simgrid_modules.map WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/doc ) @@ -71,7 +81,6 @@ if(DOXYGEN_PATH) add_dependencies(simgrid_documentation error_doxygen) else() add_dependencies(simgrid_documentation ref_guide) - add_dependencies(simgrid_documentation user_guide) add_dependencies(simgrid_documentation dev_guide) endif() @@ -85,13 +94,9 @@ endif() add_custom_target(sync-gforge-doc COMMAND chmod g+rw -R doc/ COMMAND chmod a+rX -R doc/ - COMMAND ssh scm.gforge.inria.fr mkdir /home/groups/simgrid/htdocs/simgrid/${release_version}/ || true - COMMAND ssh scm.gforge.inria.fr mkdir /home/groups/simgrid/htdocs/simgrid/${release_version}/user_guide/ || true - COMMAND ssh scm.gforge.inria.fr mkdir /home/groups/simgrid/htdocs/simgrid/${release_version}/ref_guide/ || true - COMMAND ssh scm.gforge.inria.fr mkdir /home/groups/simgrid/htdocs/simgrid/${release_version}/dev_guide/ || true - COMMAND ssh scm.gforge.inria.fr mkdir /home/groups/simgrid/htdocs/simgrid/${release_version}/user_guide/html/ || true - COMMAND ssh scm.gforge.inria.fr mkdir /home/groups/simgrid/htdocs/simgrid/${release_version}/ref_guide/html/ || true - COMMAND ssh scm.gforge.inria.fr mkdir /home/groups/simgrid/htdocs/simgrid/${release_version}/dev_guide/html/ || true + COMMAND ssh scm.gforge.inria.fr mkdir -p /home/groups/simgrid/htdocs/simgrid/${release_version}/user_guide/html/ || true + COMMAND ssh scm.gforge.inria.fr mkdir -p /home/groups/simgrid/htdocs/simgrid/${release_version}/ref_guide/html/ || true + COMMAND ssh scm.gforge.inria.fr mkdir -p /home/groups/simgrid/htdocs/simgrid/${release_version}/dev_guide/html/ || true 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/simgrid/${release_version}/doc/ || true diff --git a/buildtools/Cmake/GenerateUserGuide.cmake b/buildtools/Cmake/GenerateUserGuide.cmake index 3f72487934..cd091c200a 100644 --- a/buildtools/Cmake/GenerateUserGuide.cmake +++ b/buildtools/Cmake/GenerateUserGuide.cmake @@ -6,17 +6,6 @@ file(GLOB_RECURSE source_doxygen ) if(FIG2DEV_PATH) - set(DOC_PNGS - ${CMAKE_HOME_DIRECTORY}/doc/webcruft/simgrid_logo_2011.png - ${CMAKE_HOME_DIRECTORY}/doc/webcruft/simgrid_logo_2011_small.png - ${CMAKE_HOME_DIRECTORY}/doc/webcruft/poster_thumbnail.png - ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_01.png - ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_02.png - ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_03.png - ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_04.png - ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_05.png - ${CMAKE_HOME_DIRECTORY}/doc/webcruft/win_install_06.png - ) configure_file(${CMAKE_HOME_DIRECTORY}/doc/doxygen/UserGuideDoxyfile.in ${CMAKE_HOME_DIRECTORY}/doc/doxygen/UserGuideDoxyfile @ONLY) diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 05b659a665..605b62ed60 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -41,7 +41,7 @@ PROJECT_NUMBER = @release_version@ # for a project that appears at the top of each page and should give viewer # a quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = "Scalable simulation of distributed systems" +PROJECT_BRIEF = "Versatile Simulation of Distributed Systems" # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not @@ -586,7 +586,7 @@ FILE_VERSION_FILTER = # You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. -LAYOUT_FILE = SimgridDoxygenLayout.xml +LAYOUT_FILE = Layout.xml # The CITE_BIB_FILES tag can be used to specify one or more bib files # containing the references data. This must be a list of .bib files. The @@ -658,8 +658,56 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = index.doc - +INPUT = doxygen/index.doc \ + doxygen/getting_started.doc \ + doxygen/introduction.doc \ + doxygen/install.doc \ + doxygen/use.doc \ + doxygen/platform.doc \ + doxygen/deployment.doc \ + doxygen/options.doc \ + doxygen/help.doc \ + doxygen/advanced.doc \ + doxygen/pls.doc \ + doxygen/bindings.doc \ + doxygen/internals.doc \ + doxygen/involved.doc \ + doxygen/examples.doc \ + doxygen/tracing.doc \ + doxygen/FAQ.doc + +################################################### +## PLEASE DON'T MESS WITH THE ORDER OF EXAMPLES ## (unless you know what you are doing, of course) +################################################### + +INPUT += @top_srcdir@/examples/msg/sendrecv/sendrecv.c \ + @top_srcdir@/examples/msg/masterslave/masterslave_forwarder.c \ + @top_srcdir@/examples/msg/masterslave/masterslave_console.c \ + @top_srcdir@/examples/msg/migration \ + @top_srcdir@/examples/msg/suspend \ + @top_srcdir@/examples/msg/properties \ + @top_srcdir@/examples/msg/parallel_task \ + @top_srcdir@/examples/msg/priority \ + @top_srcdir@/examples/msg/icomms/peer.c \ + @top_srcdir@/examples/msg/icomms/peer2.c \ + @top_srcdir@/examples/msg/icomms/peer3.c \ + @top_srcdir@/examples/msg/tracing/simple.c \ + @top_srcdir@/examples/msg/tracing/ms.c \ + @top_srcdir@/examples/msg/tracing/categories.c \ + @top_srcdir@/examples/msg/tracing/procmig.c \ + @top_srcdir@/examples/msg/tracing/trace_platform.c \ + @top_srcdir@/examples/msg/tracing/user_variables.c \ + @top_srcdir@/examples/msg/tracing/link_user_variables.c \ + @top_srcdir@/examples/msg/tracing/link_srcdst_user_variables.c \ + @top_srcdir@/examples/msg/ns3 \ + @top_srcdir@/examples/msg/gtnets \ + @top_srcdir@/examples/msg/io \ + @top_srcdir@/examples/msg/gpu \ + @top_srcdir@/examples/msg/actions \ + @top_srcdir@/examples/msg/token_ring \ + @top_srcdir@/examples/msg/pmm \ + @top_srcdir@/examples/msg/chord + # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built @@ -742,7 +790,8 @@ EXAMPLE_RECURSIVE = YES # directories that contain image that are included in the documentation (see # the \image command). -IMAGE_PATH = @top_srcdir@/doc +IMAGE_PATH = @top_srcdir@/doc \ + @top_srcdir@/doc/webcruft # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program @@ -891,13 +940,13 @@ HTML_FILE_EXTENSION = .html # have to redo this when upgrading to a newer version of doxygen or when # changing the value of configuration settings such as GENERATE_TREEVIEW! -HTML_HEADER = +HTML_HEADER = doxygen/header.html # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. -HTML_FOOTER = +HTML_FOOTER = doxygen/footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to @@ -906,7 +955,7 @@ HTML_FOOTER = # the style sheet file to the HTML output directory, so don't put your own # style sheet in the HTML output directory as well, or it will be erased! -HTML_STYLESHEET = +HTML_STYLESHEET = doxygen/stylesheet.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note @@ -1122,7 +1171,7 @@ ECLIPSE_DOC_ID = org.doxygen.Project # navigation tree you can set this option to NO if you already set # GENERATE_TREEVIEW to YES. -DISABLE_INDEX = NO +DISABLE_INDEX = YES # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. @@ -1134,7 +1183,7 @@ DISABLE_INDEX = NO # Since the tree basically has the same information as the tab index you # could consider to set DISABLE_INDEX to NO when enabling this option. -GENERATE_TREEVIEW = NO +GENERATE_TREEVIEW = YES # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values # (range [0,1..20]) that doxygen will group on one line in the generated HTML @@ -1300,7 +1349,7 @@ LATEX_BATCHMODE = NO # include the index chapters (such as File Index, Compound Index, etc.) # in the output. -LATEX_HIDE_INDICES = NO +LATEX_HIDE_INDICES = YES # If LATEX_SOURCE_CODE is set to YES then doxygen will include # source code with syntax highlighting in the LaTeX output. @@ -1556,13 +1605,13 @@ SKIP_FUNCTION_MACROS = YES # doxygen is run, you must also specify the path to the tagfile here. TAGFILES = shared/doxygen/simgridrefguide.tag=ref_guide/html/ \ - shared/doxygen/simgriduserguide.tag=user_guide/html/ \ shared/doxygen/simgriddevguide.tag=dev_guide/html/ # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. -GENERATE_TAGFILE = simgrid.tag +#GENERATE_TAGFILE = simgrid.tag +GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes diff --git a/doc/doxygen/UserGuideDoxygenLayout.xml b/doc/Layout.xml similarity index 100% rename from doc/doxygen/UserGuideDoxygenLayout.xml rename to doc/Layout.xml diff --git a/doc/SimgridDoxygenLayout.xml b/doc/attic/SimgridDoxygenLayout.xml similarity index 100% rename from doc/SimgridDoxygenLayout.xml rename to doc/attic/SimgridDoxygenLayout.xml diff --git a/doc/doxygen/header.html b/doc/doxygen/header.html index 446c929560..00e49a8326 100644 --- a/doc/doxygen/header.html +++ b/doc/doxygen/header.html @@ -49,14 +49,10 @@ $mathjax + diff --git a/doc/index.doc b/doc/index.doc deleted file mode 100644 index f1e70192fb..0000000000 --- a/doc/index.doc +++ /dev/null @@ -1,37 +0,0 @@ -/*! -@mainpage - -\htmlonly -
- - - - - -
- -
-
- -Currently, the documentation contains 3 main sections: - -\endhtmlonly -Other information sources: - - The official webpage is simgrid.gforge.inria.fr. - - The Frequently Asked Questions are here. - - The development webpage is gforge.inria.fr/projects/simgrid. - - The user mailing list is - - The SimGrid software package can be downloaded from here. - -\htmlonly -
-CC-GNU LGPL -
-\endhtmlonly - -*/ diff --git a/doc/webcruft/README b/doc/webcruft/README deleted file mode 100644 index 3810136d84..0000000000 --- a/doc/webcruft/README +++ /dev/null @@ -1,19 +0,0 @@ -The sources of the SimGrid 101 presentation are in the propagenda -section. The script to generate the pngs from the pdf are on Martin's -hard disk only (sorry). Here are the interesting bits of it: - -error=0 -for n in `seq 0 $NUM` ; do - if [ x$n != x$NUM ] ; then # lame. should iterate over [0,NUM-1] the proper way - m=`expr $n + 1` - echo -n "Page $m of $NUM... "; - file=${PNGDIR}_`printf %03d $m`.png - if [ ! -e $file ] || [ $file -ot ${PDF} ] ; then - convert -density 400% "${PDF}[$n]" -resize 30% $file || error=1 - echo "converted" - else - echo "kept previous version" - fi - fi -done - \ No newline at end of file diff --git a/doc/webcruft/simgrid_modules.png b/doc/webcruft/simgrid_modules.png new file mode 100644 index 0000000000000000000000000000000000000000..ea4810235e8c660aac802f51a288b91b41ac691e GIT binary patch literal 26054 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 literal 0 HcmV?d00001 -- 2.20.1