Merged silc_1_0_branch to trunk.
[silc.git] / scripts / silcdoc / silcdoc
index 0405a7fa6ec2c8ccb8c9ef45ed5fbe631f599e35..8425249ec14c828c0fb9f2fc2e139b764bed43c7 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # Author: Pekka Riikonen <priikone@silcnet.org>
 #
-# Copyright (C) GNU GPL 2001 Pekka Riikonen
+# Copyright (C) GNU GPL 2001 - 2002 Pekka Riikonen
 #
 # SILC Toolkit Reference Manual documentation script.  This will automatically
 # generate documentation from the source tree.  This will require the 
@@ -21,8 +21,8 @@
 
 # Arguments checking
 if [ $# -lt "4" ]; then
-  echo "Usage: ./silcdoc <type> <source directory> <destination directory> <robodoc>"
-  echo "Supported types: HTML"
+  echo "Usage: ./silcdoc <type> <source directory> <destination directory/file> <robodoc>"
+  echo "Supported types: HTML PS"
 #  echo "Supported types: HTML, ASCII, LATEX or RTF"
   exit 1
 fi
@@ -35,6 +35,52 @@ ROBO=$4
 # Get all headers in the source directory
 headers=`find $SRC -name "silc*.h"`
 
+#
+# PS documentation (from LATEX)
+#
+if [ "$TYPE" = "PS" ]; then
+  TYPE="LATEX"
+  rm -rf /tmp/silcdoc.tex
+  mkdir /tmp/silcdoc.tex
+  cp $headers /tmp/silcdoc.tex
+
+  path=`pwd`
+  cd /tmp/silcdoc.tex
+
+  # Generate cross reference files
+  headers=`find . -name "silc*.h" |cut -d/  -f2 |cut -d.  -f1`
+  touch silcdoc_xref
+  for i in $headers
+  do
+    $ROBO $i.h $i.h.tex $TYPE INTERNAL GENXREF $i.h.xref
+    echo $i.h.xref >>silcdoc_xref
+  done
+
+  # Generate the detailed documentation
+  headers=`find . -name "silc*.h" |cut -d/  -f2 |cut -d.  -f1`
+  for i in $headers
+  do
+    # remove internals
+    rm -rf $i_i.h
+    $ROBO $i.h $i.h.tex XREF silcdoc_xref $TYPE C SORT NOSOURCE SINGLEDOC
+  done
+
+  # Generate the index
+  $ROBO silcdoc_xref toolkit_mi INDEX $TYPE TITLE "SILC Toolkit Reference Manual"
+
+  # Generate the postscript
+  latex toolkit_mi
+  makeindex toolkit_mi
+  latex toolkit_mi
+  latex toolkit_mi
+  dvips toolkit_mi.dvi -o $DST
+
+  cd $path
+
+  rm -rf /tmp/silcdoc.tex
+  exit 0
+fi
+
 #
 # ASCII documentation
 #
@@ -54,11 +100,11 @@ if [ "$TYPE" = "HTML" ]; then
 
   # Generate index template from the DIRECTORY files. The template for
   # the generated index template is INDEX.tmpl.
-  files=`find $SRC -name "DIRECTORY"`
-  for i in $files
+  dfiles=`find $SRC -name "DIRECTORY"`
+  for i in $dfiles
   do
     # Get library name
-    name=`grep "@LIBRARY=" $i |cut -d=  -f2`
+    name=`grep "@LIBRARY=" $i |cut -d=  -f2-`
     fname=`grep "@FILENAME=" $i |cut -d=  -f2`
     links=`grep "@LINK=" $i |cut -d=  -f2 |cut -d:  -f1`
 
@@ -67,7 +113,7 @@ if [ "$TYPE" = "HTML" ]; then
     echo "<a href="$fname"><img src="box.gif" border="0" alt="">$name</a><br />" >>$DST/index.tmpl
     for k in $links
     do
-      n=`grep $k $i |cut -d=  -f2 |cut -d:  -f2`
+      n=`grep $k $i |cut -d=  -f2 |cut -d:  -f2-`
       echo "<li><a href="$k">$n</a>" >>$DST/$fname.links
       echo "&nbsp;&nbsp;&nbsp; <a href="$k"><img src="box2.gif" border="0" alt="">$n</a><br />" >>$DST/index.tmpl
     done
@@ -94,7 +140,18 @@ if [ "$TYPE" = "HTML" ]; then
     f="/tmp/silcdoc_html.html/$i"
     sh gen.sh $DST gen_index.php 1 $f $f
     cp /tmp/silcdoc_html.html/$i $DST
-echo $f
+  done
+
+  # Generate cross reference files
+  path=`pwd`
+  cd /tmp/silcdoc.html
+  headers=`find . -name "silc*.h" |cut -d/  -f2 |cut -d.  -f1`
+  cd $path
+  touch $DST/silcdoc_xref
+  for i in $headers
+  do
+    $ROBO /tmp/silcdoc.html/$i.h $DST/$i.html $TYPE GENXREF $DST/$i.xref
+    echo $DST/$i.xref >>$DST/silcdoc_xref
   done
 
   # Generate the actual detailed documentation
@@ -104,7 +161,7 @@ echo $f
   cd $path
   for i in $headers
   do
-    $ROBO /tmp/silcdoc.html/$i.h $DST/$i.html $TYPE
+    $ROBO /tmp/silcdoc.html/$i.h $DST/$i.html XREF $DST/silcdoc_xref $TYPE
 
     # Generate the TOC file
     sh gen.sh $DST gen_index.php 1 $DST/$i.html $DST/$i.html
@@ -113,18 +170,17 @@ echo $f
     files=`find $DST -name ""$i"-*.html"`
     for k in $files
     do
-      sh gen.sh $DST gen_index.php 0 $k $k
+      sh gen.sh $DST gen_index.php 0 "$k" "$k"
     done
 
     rm -f $DST/$i-index.tmpl
   done
 
   # Generate the index and TOC files from the DIRECTORY files
-  files=`find $SRC -name "DIRECTORY"`
-  for i in $files
+  for i in $dfiles
   do
     # Get library name
-    name=`grep "@LIBRARY=" $i |cut -d=  -f2`
+    name=`grep "@LIBRARY=" $i |cut -d=  -f2-`
     fname=`grep "@FILENAME=" $i |cut -d=  -f2`
 
     # Generate links for this library
@@ -140,12 +196,18 @@ echo $f
 
   # Generate the top index.html file
   index=`find $SRC -name "LIBINDEX"`
-  version=`grep SILC_VERSION_STRING $SRC/../includes/version_internal.h |cut -d\"  -f2`
+  version=`grep "define SILC_VERSION_STRING" $SRC/../includes/silcversion.h |cut -d\"  -f2`
   curdate=`date`
   sed -e "/@VERSION@/s//$version/" -e "/@DATE@/s//$curdate/" -e "/@BODY@/ r $DST/index.html.tmp" -e s/@BODY@//g $index >$DST/index.html
   sh gen.sh $DST gen_index.php 2 $DST/index.html $DST/index.html
 
+  # Generate the index toolkit_index.html file
+  $ROBO $DST/silcdoc_xref $DST/toolkit_index.html INDEX HTML TITLE "SILC Toolkit Index"
+  sh gen.sh $DST gen_index.php 2 $DST/toolkit_index.html $DST/toolkit_index.html
+
+  # Cleanup
   rm -rf $DST/index.html.tmp
   rm -rf /tmp/silcdoc.html
   rm -rf /tmp/silcdoc_html.html
+  exit 0
 fi