summaryrefslogtreecommitdiff
path: root/graphics/vcg
diff options
context:
space:
mode:
authorsakamoto <sakamoto>1999-06-13 12:47:19 +0000
committersakamoto <sakamoto>1999-06-13 12:47:19 +0000
commit678ad834bb6c13bc7571ca6b5b161b88937cac25 (patch)
tree09aafcf53ecbf19219c5c92ffff08652f40996e8 /graphics/vcg
parent09022e079baef42428c10fb081d2887795c2c4b8 (diff)
downloadpkgsrc-678ad834bb6c13bc7571ca6b5b161b88937cac25.tar.gz
Import FreeBSD's "vcg" port:
A Visualization Tool for compiler graphs.
Diffstat (limited to 'graphics/vcg')
-rw-r--r--graphics/vcg/Makefile25
-rw-r--r--graphics/vcg/files/conf38
-rw-r--r--graphics/vcg/files/demo.csh1453
-rw-r--r--graphics/vcg/files/globals.h426
-rw-r--r--graphics/vcg/files/md51
-rw-r--r--graphics/vcg/files/tMakefile381
-rw-r--r--graphics/vcg/patches/patch-aa11
-rw-r--r--graphics/vcg/patches/patch-ab20
-rw-r--r--graphics/vcg/patches/patch-ac20
-rw-r--r--graphics/vcg/patches/patch-ad20
-rw-r--r--graphics/vcg/patches/patch-ae11
-rw-r--r--graphics/vcg/patches/patch-af11
-rw-r--r--graphics/vcg/patches/patch-ag11
-rw-r--r--graphics/vcg/patches/patch-ah11
-rw-r--r--graphics/vcg/patches/patch-ai11
-rw-r--r--graphics/vcg/patches/patch-aj20
-rw-r--r--graphics/vcg/patches/patch-ak11
-rw-r--r--graphics/vcg/patches/patch-al11
-rw-r--r--graphics/vcg/patches/patch-am11
-rw-r--r--graphics/vcg/patches/patch-an11
-rw-r--r--graphics/vcg/patches/patch-ao11
-rw-r--r--graphics/vcg/patches/patch-ap31
-rw-r--r--graphics/vcg/pkg/COMMENT1
-rw-r--r--graphics/vcg/pkg/DESCR10
-rw-r--r--graphics/vcg/pkg/PLIST5
25 files changed, 2572 insertions, 0 deletions
diff --git a/graphics/vcg/Makefile b/graphics/vcg/Makefile
new file mode 100644
index 00000000000..4c351e50674
--- /dev/null
+++ b/graphics/vcg/Makefile
@@ -0,0 +1,25 @@
+# New ports collection makefile for: vcg
+# Version required: 1.30.r3.17
+# Date created: 19 February 1995
+# Whom: hsu
+#
+# $Id: Makefile,v 1.1.1.1 1999/06/13 12:47:19 sakamoto Exp $
+#
+
+DISTNAME= vcg.1.30
+PKGNAME= vcg-1.30
+CATEGORIES= graphics
+MASTER_SITES= ftp://ftp.cs.uni-sb.de/pub/graphics/vcg/
+DISTFILES= vcg.1.30.r3.17.tgz
+
+USE_X_PREFIX= yes
+MANL= pbmrot90.l pbmshift.l pbm2hp.l vcgdemomaker.l vcg.l xvcg.l
+
+pre-patch:
+ @mkdir -p ${WRKSRC}/preconf/X11ccFreeBSD
+ @cp ${FILESDIR}/conf ${WRKSRC}/preconf/X11ccFreeBSD
+ @cp ${FILESDIR}/demo.csh ${WRKSRC}/preconf/X11ccFreeBSD
+ @cp ${FILESDIR}/globals.h ${WRKSRC}/preconf/X11ccFreeBSD
+ @cp ${FILESDIR}/tMakefile ${WRKSRC}/preconf/X11ccFreeBSD
+
+.include <bsd.port.mk>
diff --git a/graphics/vcg/files/conf b/graphics/vcg/files/conf
new file mode 100644
index 00000000000..e49ee2b3eef
--- /dev/null
+++ b/graphics/vcg/files/conf
@@ -0,0 +1,38 @@
+ADDINCLUDEPATHNAME|-I/usr/X11R6/include/
+ADDLIBPATHNAME|-L/usr/X11R6/lib/
+ADDLIBSNAME|-lXext -lX11 -lm
+ALIGNMENTNAME|8
+ANSINAME|#undef ANSI_C
+BIGLTEXNAME|not_available
+BINPATHNAME|/usr/X11R6/bin
+BISONNAME|not_available
+BLOCKSIZENAME|1048576
+CATNAME|/bin/cat
+CCLINKNAME|cc
+CCNAME|cc
+CFLAGSNAME|-c -O2
+CLEARNAME|/usr/bin/clear
+CLINKFLAGSNAME|-o
+FGREPNAME|/usr/bin/fgrep
+FIGTODEVNAME|fig2dev
+FIGTOPSTOTEXNAME|fig2ps2tex
+FLEXNAME|not_needed
+FONTALIASNAME|-*-courier-*-*-*--14-*-*-*-*-*-*-*
+INPUTFOCUSNAME|#define NOINPUTFOCUS
+INSTALLBINNAME|/bin/install -c -s -m 755 dummy $(BINDIR)/dummy
+INSTALLDIRNAME|/bin/mkdir -p
+INSTALLMANNAME|/bin/install -c -m 644 dummy $(MANDIR)/dummy
+LATEXNAME|latex
+LNNAME|/bin/ln
+MAKEDEPENDNAME|makedepend
+MAKENAME|make
+MANEXTNAME|l
+MANPATHNAME|/usr/X11R6/man/manl
+MVNAME|/bin/mv
+RMNAME|/bin/rm
+SEDNAME|/usr/bin/sed
+SLEEPNAME|/bin/sleep
+TOUCHNAME|/usr/bin/touch
+VCGNAME|xvcg
+WCNAME|/usr/bin/wc
+WINDOWSYSTEMNAME|#define X11
diff --git a/graphics/vcg/files/demo.csh b/graphics/vcg/files/demo.csh
new file mode 100644
index 00000000000..d387025fa70
--- /dev/null
+++ b/graphics/vcg/files/demo.csh
@@ -0,0 +1,1453 @@
+#!/bin/csh
+#
+# SCCS-info %W% %E%
+# $Id: demo.csh,v 1.1.1.1 1999/06/13 12:47:19 sakamoto Exp $
+#
+# ====================== Change area ============================
+
+alias OUTP /bin/echo
+
+# ================== End of Change area =========================
+
+OUTP "Configuring ..."
+
+set mvcgn = "../src/xvcg"
+
+if (! -x $mvcgn) then
+ set mvcgn = "`echo $BINDIR`xvcg"
+endif
+if (! -x $mvcgn) then
+ set mvcgn = "/usr/local/bin/xvcg"
+endif
+if (! -x $mvcgn) then
+ set mvcgn = "xvcg"
+endif
+if (! -x $mvcgn) then
+ OUTP "Sorry, I cannot find a " $mvcgn
+ exit 1
+endif
+
+OUTP "Vcg is" $mvcgn
+
+OUTP ""
+loop:
+ OUTP "Please select the window system."
+ OUTP "If the VCG tool has problems with colors on "
+ OUTP "your display installation, please select a "
+ OUTP "monochromatic version even on a color screen."
+ OUTP "1 : X11 with colors 2 : Sunview with colors "
+ OUTP "3 : X11 monochromatic 4 : Sunview monochromatic"
+ set wsys = $<
+ switch ($wsys)
+ case 1:
+ alias MYVCG $mvcgn -geometry 700x700+20-20
+ breaksw
+ case 2:
+ alias MYVCG $mvcgn
+ breaksw
+ case 3:
+ alias MYVCG $mvcgn -geometry 700x700+20-20 -nocolors
+ breaksw
+ case 4:
+ alias MYVCG $mvcgn -nocolors
+ breaksw
+ default:
+ OUTP ""
+ OUTP "*** invalid input ***"
+ goto loop
+ endsw
+
+set mycat = "/bin/cat"
+set myrm = "/bin/rm"
+set mysleep = "/bin/sleep"
+set mysed = "/usr/bin/sed"
+set mywc = "/usr/bin/wc"
+set mygrep = "/usr/bin/fgrep"
+set myclear = "/usr/bin/clear"
+
+alias CAT $mycat
+alias RM $myrm
+alias SLEEP $mysleep
+alias SED $mysed
+alias WCNT $mywc
+alias GREP $mygrep
+alias CLEAR $myclear
+
+
+OUTP
+OUTP "Cleanup ..."
+OUTP "Test" > demoaaa.vcg
+OUTP "Test" > animaaa.vcg
+OUTP "Test" > rbtreeaaa.vcg
+RM demo*.vcg anim*.vcg rbtree*.vcg
+
+OUTP ""
+OUTP "Press Carriage Return key to start the demonstration ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+CLEAR
+OUTP "DEMONSTRATION OF THE VCG TOOL"
+OUTP "============================="
+OUTP ""
+OUTP "Welcome to a tour around the VCG tool ..."
+OUTP ""
+OUTP "NOTE: you can leave the tour at any point by answering"
+OUTP " QUIT (uppercase) on a request of input."
+
+OUTP ""
+OUTP "In the following, we will show several visualizations"
+OUTP "from different applications. Not all features of the "
+OUTP "VCG tool can be demonstrated, but the important once."
+OUTP "Some of the demonstrations are generated by the program"
+OUTP "vcgdemomaker, others are from the directory expl, others"
+OUTP "are animations."
+OUTP ""
+OUTP "To go from one demonstration to the next demonstration,"
+OUTP "you should finish the VCG tool by pressing the key q "
+OUTP "or selecting the menu item Quit."
+OUTP "The menu is shown when pressing the (left) mouse button"
+OUTP "in the VCG window."
+OUTP "Press Carriage Return key to continue ..."
+
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+OUTP "The keyboard commands of the VCG tool are:"
+OUTP ""
+OUTP " q - quit the VCG tool"
+OUTP " r - show or hide the ruler"
+OUTP " f - load another file"
+OUTP " g - reload the same file"
+OUTP " l - display/hide labels of edges"
+OUTP " 1..9 - hide/expose corresponding edge class"
+OUTP " i or I or J - show info fields of nodes"
+OUTP ""
+OUTP "Press Carriage Return key to continue ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+OUTP ""
+OUTP "Scrolling commands:"
+OUTP ""
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " o - go to the origin (0,0) "
+OUTP " p - pick position with the mouse"
+OUTP " P - enter position by co-ordinates"
+OUTP " n - position such that a node is centered"
+OUTP " e - follow an edge (center target/source)"
+OUTP ""
+OUTP "Scaling commands"
+OUTP ""
+OUTP " + or = - stretch "
+OUTP " - or _ - shrink "
+OUTP " 0 - (null) set scale factor to normal"
+OUTP ""
+OUTP ""
+OUTP "Press Carriage Return key to start ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+CLEAR
+OUTP "Example from the sociology: Theory of civilisation"
+OUTP "--------------------------------------------------"
+OUTP "This graph shows the dependencies between the "
+OUTP "invention of wheels, the modern comunism and the "
+OUTP "computer science, etc."
+OUTP "The following graph is scaled by a factor 0.5 and"
+OUTP "uses the layoutalgorithm MINBACKWARD (-D0)."
+OUTP "Other possible layoutalgorithms are MINDEPTH, MAXDEPTH"
+OUTP "and TREE (-D-, -D+ and -Dtree) and many more."
+OUTP ""
+./vcgcount < ../expl/civ.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/civ.vcg
+
+CLEAR
+OUTP "Example: Color test"
+OUTP "-------------------"
+OUTP "This examples shows the default colors that are available."
+OUTP "If your X11 installation has problems with colors, "
+OUTP "use -nocolors. In this case, or if the display is "
+OUTP "monochrom, you will not see the colors."
+OUTP ""
+./vcgcount < ../expl/colors.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/colors.vcg
+
+CLEAR
+OUTP "Example: More Colors"
+OUTP "--------------------"
+OUTP "This examples show how to access to the color map."
+OUTP "Up to 256 colors can be used at the same time."
+OUTP "It is even possible to replace the default colors by"
+OUTP "other red/green/blue values."
+OUTP ""
+./vcgcount < ../expl/morecol.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/morecol.vcg
+
+
+CLEAR
+OUTP "Example: Character set"
+OUTP "----------------------"
+OUTP "The VCG tool uses a fully scalable character set. This character"
+OUTP "set is compatible to the ISO Latin 1 PostScript Encoding Vector"
+OUTP "and contains the special national characters for the most"
+OUTP "European and North American countrys."
+OUTP "If the computer system does not support 8 Bit character codes,"
+OUTP "the special characters can be accessed by ISO code escapes."
+OUTP "For instance, \\fi252 is the german umlaut ue."
+OUTP "Next, we will see the character set."
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/charset.vcg
+
+
+CLEAR
+OUTP "Example: Form test"
+OUTP "------------------"
+OUTP "This examples shows the different forms of nodes and"
+OUTP "edges that are available."
+OUTP "Nodes can be stretched and shrinked individually,"
+OUTP "width, height, textmode and border can be set to "
+OUTP "many values. Edges can be dashed or dotted, at "
+OUTP "different sizes with different arrow sizes."
+OUTP ""
+./vcgcount < ../expl/forms.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/forms.vcg
+
+CLEAR
+OUTP "Example: More forms"
+OUTP "-------------------"
+OUTP "This examples shows further forms of nodes and"
+OUTP "edges that are available: boxes, ellipses, rhombs"
+OUTP "and triangles."
+OUTP ""
+./vcgcount < ../expl/forms2.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/forms2.vcg
+
+
+CLEAR
+OUTP "Example: Ports and Arrow Modes"
+OUTP "------------------------------"
+OUTP "Edge arrows appear at the port of nodes. Port sharing"
+OUTP "means that multiple edges may be adjacent to one port."
+OUTP "This occurs, if the arrows of all these edges have the"
+OUTP "same visual appearance (size, color, ...)."
+OUTP "If we use port sharing, it is recommended to use only"
+OUTP "a fixed set of rotated arrows. Otherwise, the port looks"
+OUTP "like a thick spot since all arrows are differently rotated"
+OUTP "and overlap. This is the arrow mode 'fixed'."
+OUTP "If we don't use port sharing, arrows can be rotated individually."
+OUTP "This is the arrow mode 'free'."
+OUTP ""
+OUTP "Next, we see four times the same graph. At the left examples,"
+OUTP "we use port sharing, but at the right examples, there is no"
+OUTP "port sharing. At the upper examples, we use arrow mode fixed,"
+OUTP "and at the lower examples, we use arrow mode free."
+OUTP ""
+./vcgcount < ../expl/pshar1.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After visualization of this, first, press q into"
+OUTP "the VCG windows at the left sides."
+OUTP "Then, press q into the right VCG windows to go to "
+OUTP "the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG -silent ../expl/pshar1.vcg &
+SLEEP 2
+MYVCG -silent ../expl/pshar3.vcg &
+SLEEP 2
+MYVCG -silent ../expl/pshar2.vcg &
+SLEEP 2
+MYVCG ../expl/pshar4.vcg
+SLEEP 1
+
+
+
+CLEAR
+OUTP "Example: A diagram"
+OUTP "------------------"
+OUTP "This examples shows the influences of different computer"
+OUTP "systems in the context of the development of the computer"
+OUTP "Xerox Star (see Johnson, Roberts, e.a.: The Xerox Star,"
+OUTP "a Retrospective, IEEE Computer; 11-29, Sept. 1989)."
+OUTP "We did some changes in the diagram in order to show the "
+OUTP "possibilities of visualization, but not in order to "
+OUTP "clarify information in the diagram."
+OUTP ""
+./vcgcount < ../expl/xerox.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/xerox.vcg
+
+CLEAR
+OUTP "Example: A flow diagram"
+OUTP "-----------------------"
+OUTP "This examples shows a funny flow diagram about the actions"
+OUTP "of a software maintainer if something does not work."
+OUTP "The text is in german. If I tried to translate it, the gags"
+OUTP "would probably disappear."
+OUTP "One speciality here: the centers of the nodes are aligned onto"
+OUTP "a raster by using the attributes xraster and yraster."
+OUTP "Thus, we have many rectangular edges."
+OUTP ""
+./vcgcount < ../expl/softmain.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/softmain.vcg
+
+
+CLEAR
+OUTP "Example: Orthogonal layout"
+OUTP "--------------------------"
+OUTP "Flowcharts look much better if all edges consist of"
+OUTP "orthogonal line segments. This is the orthogonal layout"
+OUTP "or manhatten layout."
+OUTP "For the manhatten layout, we use a special method to"
+OUTP "place the nodes: the priority method with the straight"
+OUTP "line detection. It is recommended to use these methods"
+OUTP "when manhatten layout is switched on."
+OUTP ""
+OUTP "Next, we see the previous flow diagram at the left side"
+OUTP "and the same diagram with manhatten layout at the right side."
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After visualization of this, first, press q into"
+OUTP "the VCG window at the left side."
+OUTP "Then, press q into the right VCG window to go to "
+OUTP "the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG -silent ../expl/softmain.vcg &
+SLEEP 2
+MYVCG ../expl/softmain2.vcg
+SLEEP 1
+
+
+CLEAR
+OUTP "Example: A control flow graph of a program"
+OUTP "------------------------------------------"
+OUTP "This example shows the control flow graph of a program."
+OUTP "The decision branches are formed by rhombs and bent nearedges."
+OUTP "Nearedges are horizontal edges that constain the two adjacent"
+OUTP "nodes to be placed directly neighbored at the same level."
+OUTP "Bent nearedges are edges that are bent at the label, and"
+OUTP "the source node and the edge label form a near edge. This gives"
+OUTP "the typical appearance of decision branches."
+OUTP ""
+./vcgcount < ../expl/cfg.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/cfg.vcg
+
+
+CLEAR
+OUTP "Example: Another control flow graph"
+OUTP "-----------------------------------"
+OUTP "The next example shows another control flow graph."
+OUTP "Here, the bent nearedges are simulated by some nearedges and"
+OUTP "auxiliary nodes. Again, we use manhatten layout with the"
+OUTP "priority method and the straight line detection."
+OUTP ""
+./vcgcount < ../expl/flchrt.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/flchrt.vcg
+
+
+CLEAR
+OUTP "Example: Anchorpoint test"
+OUTP "-------------------------"
+OUTP "This example shows how to use anchorpoints."
+OUTP "It is possible to anchor an edge at each labelline"
+OUTP "of a node. Nodes representing structs look nice"
+OUTP "in this mode. Note but this restricts of course"
+OUTP "the usage of nearedges."
+OUTP "If you select one of the submenus of the menu item"
+OUTP "Node Information and then pick into the large node"
+OUTP "you can see how to use background text."
+OUTP ""
+./vcgcount < ../expl/anchors.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/anchors.vcg
+
+
+CLEAR
+OUTP "Example: More anchorpoints"
+OUTP "--------------------------"
+OUTP "This example shows a list of C structs. It demonstrates"
+OUTP "the usage of anchorpoints for visualized debugging"
+OUTP "of data structures."
+OUTP ""
+./vcgcount < ../expl/structs.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/structs.vcg
+
+CLEAR
+OUTP "Example: Level test"
+OUTP "-------------------"
+OUTP "This examples shows how to use level specifications."
+OUTP "It is possible to give the nodes arbitrary levels"
+OUTP "for instance to place a node artificially on the top"
+OUTP "of the graph. Normally, the following would be layouted"
+OUTP "as a tree with the root at level 0. But we have specified"
+OUTP "which nodes are at level 0, 1 and 2, such that the root"
+OUTP "is in the center."
+OUTP ""
+./vcgcount < ../expl/levels.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/levels.vcg
+
+
+CLEAR
+OUTP "Example: Horizantal layer sorting"
+OUTP "---------------------------------"
+
+OUTP "The VCG tool reorders the nodes in the levels to avoid"
+OUTP "crossings. But sometimes, the writer of a graph specification"
+OUTP "knows a better order of the nodes into the levels."
+OUTP "He can specify this by the attribute horizontal_order at"
+OUTP "the nodes. If all nodes of a level have this attribute,"
+OUTP "the reordering of this level is suppressed."
+OUTP ""
+OUTP "Warning: this feature works only for connected graphs."
+OUTP "Nonconnected parts are layouted separately, such that"
+OUTP "the order of the nodes of a connected component is predictable",
+OUTP "at a level, but not the order of all nodes at a level."
+OUTP "Is is recommended to use this feature only together with"
+OUTP "level specifications, or at trees, where it is clear at"
+OUTP "which level a node apprears."
+OUTP ""
+OUTP "Next, we see a graph where we want to have the nodes"
+OUTP "sorted at the levels in alphabethic order."
+OUTP "Left, we see the original graph by the standard layout"
+OUTP "algorithm. Here, the ordering at the levels is arbitrary."
+OUTP "At the right side, we use the attribute horizontal_order"
+OUTP "on the same graph to yield an alphabethic ordering at the"
+OUTP "Levels."
+
+OUTP ""
+./vcgcount < ../expl/hsort.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After visualization of this, first, press q into"
+OUTP "the VCG window at the left side."
+OUTP "Then, press q into the right VCG window to go to "
+OUTP "the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG -silent ../expl/hunsort.vcg &
+SLEEP 2
+MYVCG ../expl/hsort.vcg
+SLEEP 1
+
+
+CLEAR
+OUTP "Example: Unary tree of depth 100"
+OUTP "--------------------------------"
+
+vcgdemomaker demo001.vcg -unarytree 100
+
+OUTP "This graph is very simple. All edges have class 2."
+OUTP "You can try to hide the edges, expose them or to"
+OUTP "fold regions."
+OUTP ""
+./vcgcount < demo001.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG demo001.vcg
+
+CLEAR
+OUTP "Example: Binary tree of depth 5"
+OUTP "-------------------------------"
+
+vcgdemomaker demo002.vcg -binarytree 5
+CAT demo002.vcg | SED -e "s/xmax/shrink: 2 &/" > demo003.vcg
+
+OUTP "This graph is very simple. All edges have class 2."
+OUTP "Ary-trees look very nice if we use a layout_downfactor."
+OUTP "Here, we used layout_downfactor: 8."
+OUTP ""
+./vcgcount < demo003.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG demo003.vcg
+
+CLEAR
+OUTP "Example: Binary tree of depth 5"
+OUTP "-------------------------------"
+
+CAT demo003.vcg | SED -e "s/layout_downfactor: 8/layout_downfactor: 1/" > demo004.vcg
+
+OUTP "To compare with, we show the same binary tree with"
+OUTP "layout_downfactor: 1."
+OUTP ""
+./vcgcount < demo004.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG demo004.vcg
+
+
+CLEAR
+OUTP "Example: Layout of trees"
+OUTP "-------------------------"
+
+OUTP "Beside the normal layout algorithm, there is a specialized"
+OUTP "algorithm TREE, that lays out trees even without specifying"
+OUTP "a layout_downfactor."
+OUTP "This specialized algorithm can be used for all graphs that"
+OUTP "can be layouted like downward trees, i.e. their edges form"
+OUTP "unshared branches."
+OUTP "This specialized algorithm is often faster than then normal."
+OUTP "algorithm with layout_downfactor."
+
+OUTP "Left, we see a syntax tree by the standard layout algorithm."
+OUTP "At the right side, we see the same tree with the specialized"
+OUTP "algorithm for trees."
+
+OUTP ""
+./vcgcount < ../expl/tree1.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After visualization of this, first, press q into"
+OUTP "the VCG window at the left side."
+OUTP "Then, press q into the right VCG window to go to "
+OUTP "the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG -silent ../expl/tree1.vcg &
+SLEEP 2
+MYVCG ../expl/tree2.vcg
+SLEEP 1
+
+
+CLEAR
+OUTP "Example: More trees"
+OUTP "-------------------"
+
+OUTP "Trees look very nice, if a special version of the manhatten"
+OUTP "layout method is used: the single line manhatten layout."
+OUTP "Here, all horizontal edge segments share the same"
+OUTP "horizontal line. If the graph is not a tree, then this"
+OUTP "will confuse the user, since it might be not anymore clear,"
+OUTP "which vertical lines are connected by the horizontal"
+OUTP "line. But for trees, it looks nice."
+
+OUTP "We see the same syntax tree as before, but now, we use the"
+OUTP "single line manhatten tree layout for the left graph."
+
+OUTP ""
+./vcgcount < ../expl/tree2.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After visualization of this, first, press q into"
+OUTP "the VCG window at the left side."
+OUTP "Then, press q into the right VCG window to go to "
+OUTP "the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG -silent -dtree -smanhatten ../expl/tree1.vcg &
+SLEEP 2
+MYVCG ../expl/tree2.vcg
+SLEEP 1
+
+
+
+
+CLEAR
+OUTP "Example: Edge priorities"
+OUTP "------------------------"
+
+OUTP "Sometimes, we have a graph consisting of two intermixed"
+OUTP "graphs. Or we have one basic graph and additionally, we have"
+OUTP "edges as annotations. In these cases, we want to recognize "
+OUTP "the structure of the basic graph, but the structure is"
+OUTP "interwoven with the additional edges. But the layout is based"
+OUTP "on all edges, which may result in visualizations where "
+OUTP "the structure of the basic graph is not recognizable anymore."
+OUTP ""
+OUTP "In this case, edge priority comes in. We give the edges of"
+OUTP "the basic graph a higher priority. Then, the additional "
+OUTP "annotation edges are neglected during the layout and are"
+OUTP "drawn rather ugly, but the basic graph is visualized nicely."
+OUTP ""
+OUTP "Next, we will see a tree (thick edges) interwoven with some"
+OUTP "additional edges. Left, we show this graph by the standard"
+OUTP "layout algorithm, where the tree is not recognizable."
+OUTP "At the right side, we use priorities, and then we will recognize"
+OUTP "the tree structure."
+
+OUTP ""
+./vcgcount < ../expl/annot1.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After visualization of this, first, press q into"
+OUTP "the VCG window at the left side."
+OUTP "Then, press q into the right VCG window to go to "
+OUTP "the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG -silent ../expl/annot1.vcg &
+SLEEP 2
+MYVCG -silent ../expl/annot2.vcg
+SLEEP 1
+
+
+CLEAR
+OUTP "Example: Fisheyes"
+OUTP "-----------------"
+
+OUTP "Large graphs have normally the disadvantage that we either"
+OUTP "see the whole graph but no details, because the graph is"
+OUTP "shrinked very much, or we see some details at the point of"
+OUTP "interest but lose the overview of the entire graph structure,"
+OUTP "because the window is too small. A good solution of this"
+OUTP "conflict is the fisheye view that distorts the graph such"
+OUTP "that the focus point is magnified while the remaining parts"
+OUTP "of the graph are demagnified smoothly such that the whole"
+OUTP "graph is visible."
+OUTP "A fisheye view is a coordinate transformation and has"
+OUTP "similiarities with the corresponding photo camera lenses."
+OUTP ""
+OUTP "Next, we will see a large graph. Left, we show the graph"
+OUTP "by the standard view. Right, we see the same graph by the"
+OUTP "cartesian fisheye view. The focus point can be selected"
+OUTP "interactively by the operation Pick Position."
+
+OUTP ""
+./vcgcount < ../expl/fishex3c.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After visualization of this, first, press q into"
+OUTP "the VCG window at the left side."
+OUTP "Then, press q into the right VCG window to go to "
+OUTP "the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG -silent -ypos 170 ../expl/fishex3c.vcg &
+SLEEP 2
+MYVCG -silent -xpos 518 -ypos 1790 -view cfish ../expl/fishex3b.vcg
+SLEEP 1
+
+
+CLEAR
+OUTP "Example: Cartesian fisheyes and polar fisheyes"
+OUTP "----------------------------------------------"
+
+OUTP "Cartesian fisheyes transform the cartesian coordinate system"
+OUTP "while polar fisheyes transform the polar coordinate system."
+OUTP "A polar fisheye can be seen as a mapping of the space onto a"
+OUTP "spheric ball. The polar fisheye does not preserve horizontal"
+OUTP "and vertical lines, while the cartesian fisheye does."
+OUTP "Note that fisheyes may introduce additional bendings of lines"
+OUTP "and crossings that do not appear in the plane view."
+OUTP "However, these effects are seldom and occur due to efficiency"
+OUTP "reasons."
+OUTP ""
+OUTP "Next, we will see the same graph as before. Left, we show the"
+OUTP "graph by the polar fisheye view. Right, we see the graph again"
+OUTP "by the carthesian fisheye view."
+
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After visualization of this, first, press q into"
+OUTP "the VCG window at the left side."
+OUTP "Then, press q into the right VCG window to go to "
+OUTP "the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG -silent -xpos 518 -ypos 1790 -view pfish ../expl/fishex3a.vcg &
+SLEEP 2
+MYVCG -silent -xpos 518 -ypos 1790 -view cfish ../expl/fishex3b.vcg
+SLEEP 1
+
+
+CLEAR
+OUTP "Example: Fisheyes with fixed radius"
+OUTP "-----------------------------------"
+
+OUTP "If not the whole graph but only a fixed area around the focus"
+OUTP "point is of interest, we use the fisheyes with fixed radius."
+OUTP "Then, not the whole graph is visible but only the region around"
+OUTP "the focus point."
+OUTP "While for normal (self adaptable) fisheyes, the location of the"
+OUTP "focus point moves in the window relatively to its movement in"
+OUTP "the graph, the focus point of the fisheyes with fixed radius is"
+OUTP "always centered in the window."
+OUTP ""
+OUTP "Next, we will see a graph with fisheyes of fixed radius. Left,"
+OUTP "we show the graph by the cartesian fisheye view. Right, we see"
+OUTP "the graph again by the polar fisheye view."
+
+OUTP ""
+./vcgcount < ../expl/fishex2a.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After visualization of this, first, press q into"
+OUTP "the VCG window at the left side."
+OUTP "Then, press q into the right VCG window to go to "
+OUTP "the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG -silent -xpos 2300 -ypos 253 -view fcfish ../expl/fishex2a.vcg &
+SLEEP 2
+MYVCG -silent -xpos 2300 -ypos 253 -view fpfish ../expl/fishex2b.vcg
+SLEEP 1
+
+
+CLEAR
+OUTP "Example: Another diagram"
+OUTP "-------------------------"
+
+OUTP "This diagram (Gansner, Koutsofios, e.a.: A Technique"
+OUTP "for Drawing Graphs; IEEE Trans. Soft. Eng. 19, 3, March 93)"
+OUTP "shows the dependencies of different shells."
+OUTP "Here we see a combination of features of the VCG tool."
+OUTP "First, the graph is made connected by 3 invisible edges."
+OUTP "The priority of these edges is set to zero such that"
+OUTP "they do not influence the layout too much. As contrast,"
+OUTP "the layout_downfactor and layout_upfactor is set to 100."
+OUTP "The attribute level is used to set the nodes at the"
+OUTP "appropriate time axis. The attribute horizontal_order"
+OUTP "is used to get the time axis at the left side of the"
+OUTP "graph. Further, we have used splines for the edges."
+
+OUTP ""
+./vcgcount < ../expl/shells.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/shells.vcg
+
+
+CLEAR
+OUTP "Example: Ternary tree of depth 7"
+OUTP "---------------------------------"
+OUTP "Wait half a minute ..."
+
+vcgdemomaker demo005.vcg -ternarytree 7
+CAT demo005.vcg | SED -e "s/xmax/shrink: 2 &/" > demo006.vcg
+
+OUTP "Now a first torture test. This graph is a ternary tree"
+OUTP "with about 3000 nodes and 3000 edges."
+OUTP "We use the normal algorithm with downfactor: 8."
+OUTP "We need about 20 seconds (on a Sparc ELC) to layout it."
+OUTP "WARNING: the visualization may fail on small computers"
+OUTP " because of memory exhausted."
+OUTP ""
+./vcgcount < demo006.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG demo006.vcg
+
+
+CLEAR
+OUTP "Example: Two level cross graph"
+OUTP "------------------------------"
+
+vcgdemomaker demo007.vcg -twolevelcross 1000
+
+OUTP "This is a torture test for bary centering."
+OUTP "This graph is specified in an ugly format with a lot"
+OUTP "of unnecessary crossings. The tool removes these "
+OUTP "crossings."
+OUTP ""
+./vcgcount < demo007.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG demo007.vcg
+
+CLEAR
+OUTP "Example: Nearedge test"
+OUTP "----------------------"
+
+vcgdemomaker demo008.vcg -leveltree 4
+CAT demo008.vcg | SED -e "s/xmax/shrink: 4 &/" > demo009.vcg
+
+OUTP "This is a torture test for near edge layout."
+OUTP "This tree is has a lot of near edges, i.e. "
+OUTP "edges between nodes at the same level."
+OUTP "The nodes of a near edge should be neighboured."
+OUTP ""
+./vcgcount < demo009.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG demo009.vcg
+
+CLEAR
+OUTP "Example: Complete graphs"
+OUTP "------------------------"
+
+vcgdemomaker demo010.vcg -allconnect 5
+
+OUTP "The complete graph has edges between all nodes."
+OUTP "If we have n nodes, then we have about n*n/2 edges."
+OUTP "Here we test the speed of the VCG tool, because "
+OUTP "such graphs are very difficult to layout."
+OUTP "An complete graph of 5 nodes is layouted very fast."
+OUTP ""
+./vcgcount < demo010.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG demo010.vcg
+
+CLEAR
+OUTP "Example: Complete graphs"
+OUTP "------------------------"
+
+vcgdemomaker demo011.vcg -allconnect 10
+CAT demo011.vcg | SED -e "s/xmax/shrink: 10 stretch: 7 &/" > demo012.vcg
+
+OUTP "An complete graph of 10 nodes needs a few seconds."
+OUTP ""
+./vcgcount < demo012.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG demo012.vcg
+
+CLEAR
+OUTP "Example: Complete graphs"
+OUTP "------------------------"
+
+vcgdemomaker demo013.vcg -allconnect 20
+CAT demo013.vcg | SED -e "s/xmax/shrink: 100 stretch: 32 &/" > demo014.vcg
+
+OUTP "An complete graph of 20 nodes needs about 25 seconds"
+OUTP "on a Sparc ELC."
+OUTP ""
+./vcgcount < demo014.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG demo014.vcg
+
+CLEAR
+OUTP "Example: Complete graphs"
+OUTP "------------------------"
+
+vcgdemomaker demo015.vcg -allconnect 30
+CAT demo015.vcg | SED -e "s/xmax/shrink: 10 stretch: 2 &/" > demo016.vcg
+
+OUTP "An complete graph of 30 nodes needs about 110 seconds"
+OUTP "on a Sparc ELC."
+OUTP ""
+./vcgcount < demo016.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG demo016.vcg
+
+CLEAR
+OUTP "Example: Complete graphs"
+OUTP "------------------------"
+
+OUTP "If we have such complex graphs, it is often not necessary"
+OUTP "to have a nice layout, because the graphs are to large "
+OUTP "to see all details at the same time."
+OUTP "In this case, we set the fast flag (option -f) that reduces"
+OUTP "the number of iterations of various layout steps."
+OUTP "Next, we see the same complete graph of 30 nodes as before, however"
+OUTP "now the fast flag is set."
+OUTP "Then, we need only 15 seconds (compared to 100 seconds before),"
+OUTP "but the layout is very ugly."
+
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG -f demo016.vcg
+
+
+CLEAR
+OUTP "Example: Intermediate representation of a compiler (HIR)"
+OUTP "--------------------------------------------------------"
+
+OUTP "The next example comes from the REAL WORLD."
+OUTP "It shows the High Intermediate Representation (HIR)"
+OUTP "of a CLaX program. It is a syntax tree annotated by"
+OUTP "types."
+OUTP "You see the procedure declarations. The main module is"
+OUTP "actually folded (see the green triangle)."
+OUTP "If you select the menu point Hide edges, you will recognize"
+OUTP "that the edge classes are named in this example."
+OUTP "We use the layout algorithm TREE."
+OUTP ""
+./vcgcount < ../expl/tstree.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "We need a few seconds to visualize this. Please wait."
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/tstree.vcg
+
+CLEAR
+OUTP "Example: Intermediate representation of a compiler (CCMIR)"
+OUTP "----------------------------------------------------------"
+
+OUTP "The next example again comes from the REAL WORLD."
+OUTP "It shows the Common Compare Medium Intermediate"
+OUTP "Representation (CCMIR) of a very simple C program."
+OUTP "This graph was generated by the ACE C frontend and a trivial"
+OUTP "additional visualization engine. The edge classes 1-5"
+OUTP "are hidden, otherwise the layout would be to ugly."
+OUTP "They can be exposed by menu selections."
+OUTP ""
+./vcgcount < ../expl/ccmir.vcg
+OUTP ""
+OUTP "Remind: most important keybord commands of vcg"
+OUTP " q - quit the VCG tool"
+OUTP " a "
+OUTP " d c (arrow keys) - scroll to the left/right/up/down"
+OUTP " b "
+OUTP " + - stretch "
+OUTP " - - shrink "
+OUTP ""
+OUTP "After the visualization of this, press q into "
+OUTP "the VCG window to go to the next demonstration."
+
+OUTP "Press Carriage Return key to start visualization ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+MYVCG ../expl/ccmir.vcg
+
+
+CLEAR
+OUTP "Example: Animation demo 1 (communication by touching)"
+OUTP "-----------------------------------------------------"
+OUTP "We show a small animation that demonstrate the "
+OUTP "communication between the VCG tool and a controller "
+OUTP "program called animation3."
+OUTP "The controller program sends signals to the VCG tool."
+OUTP "The VCG tool indicates the completion of vizualization"
+OUTP "by touching its input file."
+OUTP "This demonstration shows a sequence of insertions into"
+OUTP "a red black tree. We see rotations that rebalance the tree."
+OUTP "IMPORTANT: Do not quit the VCG tool. Do not give any "
+OUTP " input (keypress, menu selection) to the VCG tool."
+OUTP " Wait ! The animation is finished automatically."
+
+OUTP ""
+OUTP "Press Carriage Return key to start the animation ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+animation3
+
+OUTP "Ready ! Press Carriage Return key to continue ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+CLEAR
+OUTP "Example: Animation demo 2 (communication by signals)"
+OUTP "----------------------------------------------------"
+OUTP "We show another small animation that demonstrate the "
+OUTP "communication between the VCG tool and a controller "
+OUTP "program called animation1."
+OUTP "The controller program sends signals to the VCG tool."
+OUTP "The VCG tool indicates the completion of vizualization"
+OUTP "by sending a signal back to the controlling program."
+OUTP "IMPORTANT: Do not quit the VCG tool. Do not give any "
+OUTP " input (keypress, menu selection) to the VCG tool."
+OUTP " Wait ! The animation is finished automatically."
+
+OUTP ""
+OUTP "Press Carriage Return key to start the animation ..."
+set f = $<
+if ("$f" == "QUIT") goto finishup
+
+animation2
+
+OUTP "Ready ! Press Carriage Return key to finish the demonstration."
+
+
+finishup:
+CLEAR
+OUTP "This was the demonstration of the vcg tool"
+
+OUTP ""
+loopa:
+ OUTP "Should the directory be cleaned ?"
+ OUTP "1 : yes 0 : no "
+ OUTP "y : yes n : no "
+ set wsys = $<
+ switch ($wsys)
+ case y:
+ case 1:
+ OUTP "Cleanup ..."
+ OUTP "Test" > demoaaa.vcg
+ OUTP "Test" > animaaa.vcg
+ OUTP "Test" > rbtreeaaa.vcg
+ RM demo*.vcg anim*.vcg rbtree*.vcg
+ breaksw
+ case n:
+ case 0:
+ breaksw
+ default:
+ OUTP ""
+ OUTP "*** invalid input ***"
+ goto loopa
+ endsw
+OUTP "Goodbye ..."
+
diff --git a/graphics/vcg/files/globals.h b/graphics/vcg/files/globals.h
new file mode 100644
index 00000000000..48dc1a37dd7
--- /dev/null
+++ b/graphics/vcg/files/globals.h
@@ -0,0 +1,426 @@
+/* SCCS-info %W% %E% */
+
+/*--------------------------------------------------------------------*/
+/* */
+/* VCG : Visualization of Compiler Graphs */
+/* -------------------------------------- */
+/* */
+/* file: globals.h */
+/* version: 1.00.00 */
+/* creation: 1.4.1993 */
+/* author: I. Lemke (...-Version 0.99.99) */
+/* G. Sander (Version 1.00.00-...) */
+/* Universitaet des Saarlandes, 66041 Saarbruecken */
+/* ESPRIT Project #5399 Compare */
+/* description: Global definitions and setup */
+/* status: in work */
+/* */
+/*--------------------------------------------------------------------*/
+
+/* $Id: globals.h,v 1.1.1.1 1999/06/13 12:47:19 sakamoto Exp $ */
+
+/*
+ * Copyright (C) 1993--1995 by Georg Sander, Iris Lemke, and
+ * the Compare Consortium
+ *
+ * This program and documentation is free software; you can redistribute
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * The software is available per anonymous ftp at ftp.cs.uni-sb.de.
+ * Contact sander@cs.uni-sb.de for additional information.
+ */
+
+
+/* $Log: globals.h,v $
+/* Revision 1.1.1.1 1999/06/13 12:47:19 sakamoto
+/* Import FreeBSD's "vcg" port:
+/* A Visualization Tool for compiler graphs.
+/*
+ * Revision 1.1.1.1 1995/02/19 09:25:43 hsu
+ * vcg - a visualization tool for compiler graphs
+ *
+ * Submitted by: Philippe Charnier <charnier@lirmm.fr>
+ *
+# Revision 3.7 1994/11/23 14:50:47 sander
+# #include <limits.h> added to get MAX_INT and MIN_INT.
+#
+# Revision 3.6 1994/08/08 16:01:47 sander
+# Attributes xraster, xlraster, yraster added.
+#
+# Revision 3.5 1994/08/02 15:36:12 sander
+# CHECKNODE option added to allow tracing of properties
+# of one single node. For debugging only.
+#
+# Revision 3.4 1994/06/07 14:09:59 sander
+# Splines implemented.
+# HP-UX, Linux, AIX, Sun-Os, IRIX compatibility tested.
+# The tool is now ready to be distributed.
+#
+# Revision 3.3 1994/05/16 08:56:03 sander
+# shape attribute (boxes, rhombs, ellipses, triangles) added.
+#
+# Revision 3.2 1994/03/02 11:48:54 sander
+# Layoutalgoritms mindepthslow, maxdepthslow, minindegree, ... mandegree
+# added.
+# Anchors and nearedges are not anymore allowed to be intermixed.
+# Escapes in strings are now allowed.
+#
+# Revision 3.1 1994/03/01 10:59:55 sander
+# Copyright and Gnu Licence message added.
+# Problem with "nearedges: no" and "selfloops" solved.
+#
+# Revision 1.2 1994/01/21 19:43:42 sander
+# New started with release 1.2 from the scratch.
+# Old and useless comments removed.
+#
+ *
+ */
+
+/* This file contains the setup of the tool for the C compiler.
+ * It is included into every other C file.
+ * Please adapt corresponding to your configuration.
+ */
+
+#ifndef GLOBALS_H
+#define GLOBALS_H
+
+/*------------- Please change according to your configuration --------*/
+
+/* Ansi C compiler or K&R C compiler ?
+ * Mainly, this causes to use prototypes or not. Note that the Suntool
+ * include files on some systems are Non-Ansi and may cause confusion.
+ * See the corresponding comments in the Makefile.
+ * Ansi C compiler set __STDC__, but Non-Ansi compilers may set this, too.
+ * Thus we use our own flag ANSI_C.
+ */
+
+/* #ifdef __STDC__==1
+ * #define ANSI_C
+ * #endif
+ */
+
+/* #define ANSI_C */
+/* #undef ANSI_C */
+#define ANSI_C
+
+/* The Gnu CC sometimes does not have a standard library.
+ * In this case, the include files might be wrong.
+ * To get fewer messages on -Wall, define NO_STDINCLUDES
+ * with Gnu CC.
+ */
+
+#undef NO_STDINCLUDES
+
+
+/* User Signals available or not ?
+ * Unix provides signals SIGUSR1 and SIGUSR2 (30, 31), which are used
+ * to control animations from external. If signal() or free signals are
+ * not available (e.g. on Non-Unix systems), then undefine USR_SIGNAL.
+ */
+
+#define USR_SIGNAL
+/* #undef USR_SIGNAL */
+
+
+/* Good quicksort available or not ?
+ * If there exist a good randomized quicksort `qsort' in the library,
+ * please use it. But if the quicksort in the library is slow, or not
+ * randomized, define OWN_QUICKSORT. We often have to sort presorted
+ * arrays.
+ * Note: If OWN_QUICKSORT is defined, not all calls of `qsort' are
+ * exchanged, but only the critical ones.
+ */
+
+/* #undef OWN_QUICKSORT */
+#define OWN_QUICKSORT
+
+
+/* Window system Sunview or X11 ?
+ * Sunview is fast, but does not support remote window displaying.
+ * X11 (R5) is a little bit slower, but supports remote display.
+ * Do not define both !!!
+ */
+
+/* #define SUNVIEW */
+/* #undef X11 */
+/* #undef SUNVIEW */
+/* #define X11 */
+#define X11
+
+
+/* Required alignment for structs (power of 2). IALIGN is the appropriate
+ * bit mask to generate the alignment. Because we use floats in structs,
+ * mostly an alignment of 8 is appropriate.
+ */
+
+#ifndef ALIGN
+/* #define ALIGN 8 */
+#define ALIGN 8
+#endif
+
+#ifndef IALIGN
+#define IALIGN (ALIGN-1)
+#endif
+
+
+/* Memory block size for memory allocation in bytes. The allocation
+ * mechanism allocates blocks of this size, and dynamically increases
+ * the number of blocks, if more memory is necessary.
+ * Do not set the blocksize too small. For instance the tool does not
+ * work with blockssize less than 1 KB. Propose for good performance:
+ * 256 KB minimal.
+ */
+
+/* Blocks of 1 Megabyte */
+
+/* #define MEMBLOCKSIZE 1048576 */
+#define MEMBLOCKSIZE 1048576
+
+
+/* The default font for X11. Not needed at the Sunview installation.
+ * Please insert an appropriate font of about 14 to 17 dot size.
+ */
+
+#ifdef X11
+#define VCG_DEFAULT_FONT "-*-courier-*-*-*--14-*-*-*-*-*-*-*"
+#endif
+
+
+/* Whether the input focus grab is actively or not.
+ * If NOINPUTFOCUS, the VCG tool does not grab actively the input
+ * focus. Depending on the window manager, this may cause that
+ * the keypresses are ignored afterwards, unless the mouse pointer
+ * is once moved out of the window and back into it.
+ * On the other side, some installations cause a fatal error or
+ * strange behaviour, if the VCG tool actively grabs the input
+ * focus.
+ * The conservative definement is #define NOINPUTFOCUS.
+ */
+
+#ifdef X11
+#define NOINPUTFOCUS
+#endif
+
+
+/* Debugging On or Off ?
+ * We have three kinds of debugging:
+ * a) Behaviour tracing: a lot of messages nearly on every
+ * function entry are produced if DEBUG is switched on.
+ * b) Assertion checking: only if an assertion fails, an
+ * appropriate message is produced.
+ * c) Node tracing: This is basically the same as the behaviour
+ * tracing. At each function entry, the status of a node
+ * will be printed. This happens if CHECKNODE is defined.
+ * See step0 for the selection of the node to be traced.
+ * Behaviour or node tracing is only needed in very serious cases.
+ * The macros "debuggingmessage" can be redefined to do some special
+ * tests on every entry.
+ * Assertion checking can always be done, because it is silent
+ * as long as no error occurs. But it consumes runtime.
+ * This all can also be defined in the head of a module before
+ * #include "globals.h", to debug only this module.
+ */
+
+/* for internal debugging */
+#undef DEBUG
+#undef CHECKNODE
+/* for assertion checking at runtime */
+#define CHECK_ASSERTIONS
+
+
+/*
+ * If you prefer the system assert.h, then define ASSERT_AVAIL.
+ */
+
+/* #define ASSERT_AVAIL */
+#undef ASSERT_AVAIL
+
+/* Check and printout the timing of phases.
+ * If CHECK_TIMING is defined, time measurement is done at some
+ * critical points. This is only for me, to fine tune the
+ * preformance. (GS)
+ */
+
+#undef CHECK_TIMING
+
+/*---------------------------- End of Changes ------------------------*/
+
+/* Maximal and minimal positive integer */
+
+#include <limits.h>
+
+#ifndef MAXINT
+#ifdef INT_MAX
+#define MAXINT INT_MAX
+#else
+#define MAXINT 32767
+#endif
+#endif
+
+#ifndef MININT
+#ifdef INT_MIN
+#define MININT INT_MIN
+#else
+#define MININT -32767
+#endif
+#endif
+
+#ifndef MAXLONG
+#ifdef LONG_MAX
+#define MAXLONG LONG_MAX
+#else
+#define MAXLONG 32767
+#endif
+#endif
+
+#ifndef MINLONG
+#ifdef LONG_MIN
+#define MINLONG LONG_MIN
+#else
+#define MINLONG -32767
+#endif
+#endif
+
+
+/* Prototype support */
+
+#ifdef ANSI_C
+#define _PP(x) x
+#else
+#define _PP(x) ()
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+/* Aix CC and OSF does not understand const's */
+
+#ifdef OSF
+#define const
+#endif
+#ifdef AIXCC
+#define const
+#endif
+
+/* Default Window system is X11 */
+
+#ifdef SUNVIEW
+#ifdef X11
+#undef SUNVIEW
+#endif
+#else
+#ifndef X11
+#define X11
+#endif
+#endif
+
+#ifdef X11
+#define FAST_X11_DRAWING
+#endif
+
+/* Debugging messages */
+
+#ifdef DEBUG
+#define debugmessage(a,b) {FPRINTF(stderr,"Debug: %s %s\n",a,b);}
+#else
+#define debugmessage(a,b) /**/
+#endif
+
+#ifdef CHECKNODE
+#define DEBUG
+#undef debugmessage
+#define debugmessage(a,b) { \
+ FPRINTF(stderr,"Debug: %s %s &",a,b); \
+ if (debug_checknode) \
+ FPRINTF(stderr,"Checknode: |%s|\n",NTITLE(debug_checknode)); \
+ FPRINTF(stderr,"\n"); \
+}
+#endif
+
+/* Assertions */
+
+#ifndef CHECK_ASSERTIONS
+#define NDEBUG
+#endif
+#ifdef DEBUG
+#undef NDEBUG
+#endif
+
+#ifdef ASSERT_AVAIL
+#include <assert.h>
+#else
+# ifndef NDEBUG
+# define assert(ex) {if (!(ex)) {\
+ FPRINTF(stderr,"Assertion failed: file \"%s\", line %d\n",\
+ __FILE__, __LINE__); \
+ FPRINTF(stderr,"This is a bug! Please contact sander@cs.uni-sb.de !\n");\
+ exit(1);}}
+# else
+# define assert(ex)
+# endif
+# endif
+
+
+/* To make lint happy */
+
+#define PRINTF (void)printf
+#define FPRINTF (void)fprintf
+#define SPRINTF (void)sprintf
+#define FCLOSE (void)fclose
+#define FFLUSH (void)fflush
+#define FREE (void)free
+
+/* To make ANSI C compiler with -Wall more happy */
+
+#ifdef ANSI_C
+#ifdef NO_STDINCLUDES
+int fprintf(FILE *stream, const char *format, ...);
+int printf(const char *format, ...);
+int scanf(const char *format, ...);
+int atoi(char *x);
+double atof(char *x);
+int islower(int s);
+int isupper(int s);
+int tolower(int s);
+int toupper(int s);
+void bcopy(void *b1,void *b2,int length);
+int fputs(const char *s, FILE *stream);
+size_t fwrite(const void *ptr, size_t s, size_t n, FILE *stream);
+int fclose(FILE *stream);
+FILE *fopen(const char *filename, const char *mode);
+void system(char *string);
+int fflush(FILE *stream);
+int getppid(void);
+#ifdef X11
+char *getwd(char pn[]);
+#endif
+int fgetc(FILE *stream);
+#endif
+#endif
+
+#define gstoint(x) ((int)(x))
+#ifdef HPUX
+#define alloca(x) (malloc(x))
+#define getwd(h) (getcwd(h,MAXPATHLEN-1))
+#endif
+
+#ifdef VMS
+#define alloca(x) (malloc(x))
+#endif
+
+/*--------------------------------------------------------------------*/
+
+#endif /* GLOBALS_H */
+
diff --git a/graphics/vcg/files/md5 b/graphics/vcg/files/md5
new file mode 100644
index 00000000000..eff610c0d42
--- /dev/null
+++ b/graphics/vcg/files/md5
@@ -0,0 +1 @@
+MD5 (vcg.1.30.r3.17.tgz) = 283faf1a2cc163d5c0e4977b8ec1f658
diff --git a/graphics/vcg/files/tMakefile b/graphics/vcg/files/tMakefile
new file mode 100644
index 00000000000..b02c6ccceff
--- /dev/null
+++ b/graphics/vcg/files/tMakefile
@@ -0,0 +1,381 @@
+# SCCS-info %W% %E%
+#
+# /*--------------------------------------------------------------------*/
+# /* */
+# /* VCG : Visualization of Compiler Graphs */
+# /* -------------------------------------- */
+# /* */
+# /* file: tMakefile.tpl */
+# /* version: 1.00.00 */
+# /* creation: 1.4.1993 */
+# /* author: I. Lemke (...-Version 0.99.99) */
+# /* G. Sander (Version 1.00.00-...) */
+# /* Universitaet des Saarlandes, W-66041 Saarbruecken */
+# /* ESPRIT Project #5399 Compare */
+# /* description: Top level Makefile */
+# /* status: in work */
+# /* */
+# /*--------------------------------------------------------------------*/
+#
+# $Id: tMakefile,v 1.1.1.1 1999/06/13 12:47:19 sakamoto Exp $
+#
+# $Log: tMakefile,v $
+# Revision 1.1.1.1 1999/06/13 12:47:19 sakamoto
+# Import FreeBSD's "vcg" port:
+# A Visualization Tool for compiler graphs.
+#
+# Revision 1.1.1.1 1995/02/19 09:25:45 hsu
+# vcg - a visualization tool for compiler graphs
+#
+# Submitted by: Philippe Charnier <charnier@lirmm.fr>
+#
+#
+
+#========================= CHANGE AREA =========================
+
+# Please update the change area according to your system.
+# NOTE: you must also adapt the file src/globals.h and demo/demo.csh
+# accordingly.
+
+SHELL = /bin/sh
+
+# where the binaries go
+# BINDIR = /usr/local/bin/
+# BINDIR = /RW/esprit/users/sander/PUBLIC/CMD/
+BINDIR = /usr/X11R6/bin
+
+# where the manual pages go
+# MANDIR = /usr/local/man/manl/
+# MANDIR = /RW/esprit/users/sander/PUBLIC/MAN/
+MANDIR = /usr/X11R6/man/manl
+
+# what the manual extension is
+MANEXT = l
+
+# how the VCG tool should be called
+# For the Sunview version I use the name vcg.
+# For the X11 version I prefer the name xvcg.
+# VCGTOOL = vcg
+# VCGTOOL = xvcg
+VCGTOOL = xvcg
+
+# Note: you can test the tool before it is installed.
+# Thus we need the path of the tool for the tests.
+# It may also be the path of the tool after installation.
+# Then use
+VCGCALL = $(BINDIR)/$(VCGTOOL)
+#
+# Used during the demoanimations:
+# where the vcg is during the tests.
+# Please enter the absolute path to the VCG-tool.
+# VCGCALL = /usr/local/bin/vcg
+# VCGCALL = /RW/esprit/users/sander/PUBLIC/CMD/$(VCGTOOL)
+
+#-------------------------- Flags ------------------------------
+
+# Flags for the C compiler
+# Important: Do not use -Dlint with gcc. This causes confusion
+# during linking (!!!), e.g. some undefined messages.
+#CFLAGS = -O -finline-functions
+#CFLAGS = -O -finline-functions -DDRAWLIB_TOO_LARGE
+#CFLAGS = -g -finline-functions -Wall
+#
+# Do not use -O -finline-functions for FreeBSD, or you really have a lot
+# of swap for compiling drawstr.c.
+CFLAGS = -c -O2 -pipe
+
+# Flags for debugging
+DFLAGS =
+
+# Flags for the C linker
+#CLINKFLAGS = -Bstatic -o
+CLINKFLAGS = -o
+
+# Include directories
+# If you use gcc, it may happen that not all ANSI header files
+# are on the right place. Example: we often have problems to
+# find stdarg.h. Look for this file and add the directory here,
+# e.g.:
+# INCLUDES = /usr/local/include/gnuansi/
+#
+# For Sunview, this should be enough, because on Suns, Sunview
+# is normally installed in standard directories:
+# INCLUDES =
+#
+# For X11, it depends where it is installed. Look for Xlib.h,
+# Xproto.h or Xutil.h.
+# For instance, if you find /usr/local/X11/include/X11/Xlib.h
+# then please use
+# INCLUDES = -I/usr/local/X11/include/
+# INCLUDES = -I/RW/esprit/X11R5/include/
+INCLUDES = -I/usr/X11R6/include/
+
+# Library directories
+# For Sunview, this should be enough, because on Suns, Sunview
+# is normally installed in standard directories:
+# LIBPATH =
+#
+# For X11, it depends where it is installed. Look for libX.a,
+# or libX11.so.<version_number>, or libXext.a, etc.
+# For instance, if you find /usr/local/X11/lib/libX11.a
+# then please use
+# LIBPATH = -L/usr/local/X11/lib/
+# LIBPATH = -L/RW/esprit/X11R5/lib/
+LIBPATH = -L/usr/X11R6/lib/
+
+# Libraries
+# Libraries for SunView
+# LIBRARIES = -lsuntool -lsunwindow -lpixrect -lm
+#
+# Libraries for X11
+# LIBRARIES = -lXext -lX11 -lm
+LIBRARIES = -lXext -lX11 -lm
+
+#-------------------------- Tools ------------------------------
+
+# C compiler
+# CC = gcc -pipe
+CC = cc
+
+# C linker
+# CCLINK = gcc -static
+CCLINK = cc
+
+# If you use gcc and the sun driver, you need the normal sun
+# preprocessor because of incompatibilities of the system libraries
+CPP = $(CC) -E
+
+# If you dont need a special preprocessor, change the .c.o rule or
+# define this:
+#CPP = cat
+
+# Install software. You can use /bin/cp instead of /bin/install.
+# I prefer that binaries are stripped.
+# For directories:
+# INSTALLDIR = /bin/install -d -m 755
+INSTALLDIR = /bin/mkdir -p
+
+# For binary files:
+# Assume that you want to install s file called dummy.
+# INSTALL = /bin/install -s -m 755 dummy $(BINDIR)/dummy
+INSTALL = /usr/bin/install -c -s -m 755 dummy $(BINDIR)/dummy
+
+# For manual pages:
+# Assume that you want to install s file called dummy.
+# INSTALLMAN = /bin/install -m 644 dummy $(MANDIR)/dummy
+INSTALLMAN = /usr/bin/install -c -m 644 dummy $(MANDIR)/dummy
+
+# To make the documentation
+LATEX = latex
+
+# To make the short documentation using big-latex
+BIGLATEX = not_available
+
+# For the pictures, we need some transfig-tools.
+# If the files doc/foldpath.tex, doc/foldpath.ps,
+# doc/foldtree.tex, doc/foldtree.ps, doc/hideedge.tex,
+# doc/hideedge.ps, doc/window.tex, doc/window.ps
+# are available, we do not need this.
+#
+TRANSFIGTEX = fig2ps2tex
+TRANSFIGPS = fig2dev
+
+
+# The tools CHECKOUT, CHECKEDIT and CHECKIN are not needed unless
+# you want to develop, change or maintain the VCG tool sources
+# under control of RCS.
+
+# RCS check out shellscript (normally not needed)
+CHECKOUT = co
+
+# RCS check edit shellscript (normally not needed)
+CHECKEDIT = ce
+
+# RCS check in shellscript (normally not needed)
+CHECKIN = ci
+
+# parser pregenerator. If the files src/grammar.y and src/grammar.l
+# are available, you don't need this.
+PARSEGEN = parsegen
+
+# lex-compatible scanner generator
+LEX = not_needed
+
+# yacc-compatible parser generator. Currently, it does not work
+# with yacc because some bison features are used directly.
+YACC = not_needed
+
+# Make
+# MAKE = make
+MAKE = make
+
+# MakeDepend (should understand the -f option)
+# DEPEND = makedepend
+DEPEND = makedepend
+
+# Streameditor
+# SED = /bin/sed
+SED = /usr/bin/sed
+
+# Move File
+# MV = /bin/mv
+MV = /bin/mv
+
+# Link Files (or Copy them)
+# LN = /bin/ln -s
+LN = /bin/ln
+
+# Remove File
+# RM = /bin/rm
+RM = /bin/rm
+
+# Change directory
+CD = cd
+
+# Touch file
+# TOUCH = touch
+TOUCH = /usr/bin/touch
+
+#==================== END OF CHANGE AREA ======================
+
+#-------------------------- Files ------------------------------
+
+# Directories
+DIRECTORIES = src man demo doc expl
+
+# The tarfiles of subdirectories, to make a distribution
+SUBTARFILES = src/vcg.tar man/manpages.tar demo/demo.tar doc/doc.tar \
+ expl/expl.tar
+
+# These files are generated, but included into a distribution.
+# They are in the directory preconf.
+
+GEN_DISTFILES = tMakefile src/globals.h demo/demo.csh
+
+
+# Directories where we have something to make
+MAKEDIRS = src demo man doc
+
+# Directories where we have something to install
+INSTDIRS = src demo man doc
+
+#-------------------------- Rules ------------------------------
+
+MAKEARGUS = \
+ SHELL="$(SHELL)" \
+ BINDIR="$(BINDIR)" \
+ MANDIR="$(MANDIR)" \
+ MANEXT="$(MANEXT)" \
+ VCGTOOL="$(VCGTOOL)" \
+ VCGCALL="$(VCGCALL)" \
+ CFLAGS="$(CFLAGS)" \
+ CLINKFLAGS="$(CLINKFLAGS)" \
+ DFLAGS="$(DFLAGS)" \
+ INCLUDES="$(INCLUDES)" \
+ LIBPATH="$(LIBPATH)" \
+ LIBRARIES="$(LIBRARIES)" \
+ CC="$(CC)" \
+ CCLINK="$(CCLINK)" \
+ CPP="$(CPP)" \
+ LATEX="$(LATEX)" \
+ BIGLATEX="$(BIGLATEX)" \
+ TRANSFIGTEX="$(TRANSFIGTEX)" \
+ TRANSFIGPS="$(TRANSFIGPS)" \
+ INSTALLDIR="$(INSTALLDIR)" \
+ INSTALL="$(INSTALL)" \
+ INSTALLMAN="$(INSTALLMAN)" \
+ CHECKOUT="$(CHECKOUT)" \
+ CHECKEDIT="$(CHECKEDIT)" \
+ CHECKIN="$(CHECKIN)" \
+ PARSEGEN="$(PARSEGEN)" \
+ LEX="$(LEX)" \
+ YACC="$(YACC)" \
+ MAKE="$(MAKE)" \
+ DEPEND="$(DEPEND)" \
+ SED="$(SED)" \
+ MV="$(MV)" \
+ LN="$(LN)" \
+ RM="$(RM)" \
+ CD="$(CD)" \
+ TOUCH="$(TOUCH)"
+
+all: stamp-src stamp-demo stamp-doc stamp-shortdoc
+
+stamp-src: src
+ ($(CD) src; $(MAKE) $(MAKEARGUS))
+ $(TOUCH) stamp-src
+
+stamp-demo: demo
+ ($(CD) demo; $(MAKE) $(MAKEARGUS))
+ $(TOUCH) stamp-demo
+
+stamp-doc: doc
+ ($(CD) doc; $(MAKE) $(MAKEARGUS))
+ $(TOUCH) stamp-doc
+
+stamp-shortdoc: doc
+ ($(CD) doc; $(MAKE) $(MAKEARGUS) short)
+ $(TOUCH) stamp-shortdoc
+
+demonstration: test
+
+documentation: doc
+
+shortdocu: stamp-shortdoc
+
+install: stamp-src stamp-demo
+ for i in $(INSTDIRS) ;\
+ do \
+ ($(CD) $$i; $(MAKE) $(MAKEARGUS) install); \
+ done
+
+test: stamp-src stamp-demo
+ ($(CD) demo; csh demo.csh);
+
+clean:
+ for i in $(MAKEDIRS) ;\
+ do \
+ ($(CD) $$i; $(MAKE) RM="$(RM)" clean); \
+ done
+ $(RM) -f stamp-* core
+
+veryclean:
+ for i in $(MAKEDIRS) ;\
+ do \
+ ($(CD) $$i; $(MAKE) RM="$(RM)" veryclean); \
+ done
+ $(RM) -f stamp-* core
+
+targetclean:
+ for i in $(MAKEDIRS) ;\
+ do \
+ ($(CD) $$i; $(MAKE) RM="$(RM)" targetclean); \
+ done
+ $(RM) -f stamp-* core
+
+distclean:
+ for i in $(MAKEDIRS) ;\
+ do \
+ ($(CD) $$i; $(MAKE) RM="$(RM)" distclean); \
+ done
+ $(RM) -f stamp-* core
+
+depend:
+ for i in $(MAKEDIRS) ;\
+ do \
+ ($(CD) $$i; $(MAKE) $(MAKEARGUS) depend); \
+ done
+
+tar: tMakefile Makefile $(DIRECTORIES)
+ for i in $(DIRECTORIES) ;\
+ do \
+ ($(CD) $$i; $(MAKE) $(MAKEARGUS) dist); \
+ done
+ tar -cf vcgcomplete.tar README README.SYS COPYING \
+ demotrue config tMakefile.tpl Makefile preconf $(SUBTARFILES)
+
+
+dist: tar
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+
diff --git a/graphics/vcg/patches/patch-aa b/graphics/vcg/patches/patch-aa
new file mode 100644
index 00000000000..33aa7cf0592
--- /dev/null
+++ b/graphics/vcg/patches/patch-aa
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 16:56:11
++++ demo/Makefile 1995/02/18 16:57:11
+@@ -124,7 +124,7 @@
+
+ # Generated Other - Files
+ GOFILES = animfile1.vcg animfile2.vcg rbtree.vcg
+-
++
+ # Object - Files
+ OFILES = animation1.o animation2.o pbmrot90.o pbmshift.o vcgdemomaker.o \
+ animation3.o vcgcount.o pbm2hp.o
diff --git a/graphics/vcg/patches/patch-ab b/graphics/vcg/patches/patch-ab
new file mode 100644
index 00000000000..50ee46c635f
--- /dev/null
+++ b/graphics/vcg/patches/patch-ab
@@ -0,0 +1,20 @@
+--- 1.1 1995/02/18 16:57:50
++++ doc/Makefile 1995/02/18 16:58:35
+@@ -72,7 +72,7 @@
+
+
+ # RCS Version control stuff
+-
++
+ $(SOURCES):
+ $(CHECKOUT) $@
+
+@@ -87,7 +87,7 @@
+
+ clean:
+ $(RM) -f *.aux *.toc *.log *.lof *.lot *.spell tmp* core
+-
++
+ veryclean: clean
+ $(RM) -f *.dvi
+
diff --git a/graphics/vcg/patches/patch-ac b/graphics/vcg/patches/patch-ac
new file mode 100644
index 00000000000..5051c266a08
--- /dev/null
+++ b/graphics/vcg/patches/patch-ac
@@ -0,0 +1,20 @@
+--- 1.1 1995/02/18 17:07:16
++++ src/preconf/y.tab.c 1995/02/18 17:20:13
+@@ -446,7 +446,7 @@
+
+ #ifndef YY_MALLOC_DECL
+ #define YY_MALLOC_DECL
+-#include <malloc.h>
++#include <stdlib.h>
+ #endif
+
+ #undef YYVALGLOBAL
+@@ -5815,7 +5815,7 @@
+
+
+ #include <stdio.h>
+-#include <malloc.h>
++#include <stdlib.h>
+ #ifdef ANSI_C
+ #include <stdarg.h>
+ #else
diff --git a/graphics/vcg/patches/patch-ad b/graphics/vcg/patches/patch-ad
new file mode 100644
index 00000000000..e1b38fd9180
--- /dev/null
+++ b/graphics/vcg/patches/patch-ad
@@ -0,0 +1,20 @@
+--- 1.1 1995/02/18 17:09:45
++++ src/preconf/lex.yy.c 1995/02/18 17:21:39
+@@ -1665,7 +1665,7 @@
+
+ #ifndef YY_MALLOC_DECL
+ #define YY_MALLOC_DECL
+-#include <malloc.h>
++#include <stdlib.h>
+ #endif
+
+ #undef YYVALGLOBAL
+@@ -5256,7 +5256,7 @@
+
+ #include <stdio.h>
+ #include <string.h>
+-#include <malloc.h>
++#include <stdlib.h>
+
+ /* Global Variables */
+ /*------------------*/
diff --git a/graphics/vcg/patches/patch-ae b/graphics/vcg/patches/patch-ae
new file mode 100644
index 00000000000..f67c7311ab4
--- /dev/null
+++ b/graphics/vcg/patches/patch-ae
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 16:51:08
++++ src/Makefile 1995/02/18 16:55:50
+@@ -189,7 +189,7 @@
+
+ # Generated Other - Files
+ GOFILES = grammar.l grammar.y
+-
++
+ # Object - Files
+ OFILES = y.tab.o lex.yy.o main.o options.o alloc.o step0.o folding.o \
+ step1.o step2.o step3.o step4.o prepare.o draw.o \
diff --git a/graphics/vcg/patches/patch-af b/graphics/vcg/patches/patch-af
new file mode 100644
index 00000000000..f1249b1c5f6
--- /dev/null
+++ b/graphics/vcg/patches/patch-af
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 17:44:23
++++ src/main.c 1995/02/18 17:44:52
+@@ -147,7 +147,7 @@
+
+ #ifdef X11
+
+-#include <X11/Xos.h>
++/*#include <X11/Xos.h>*/
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
diff --git a/graphics/vcg/patches/patch-ag b/graphics/vcg/patches/patch-ag
new file mode 100644
index 00000000000..389c43807f6
--- /dev/null
+++ b/graphics/vcg/patches/patch-ag
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 17:48:32
++++ src/X11dev.c 1995/02/18 17:48:52
+@@ -181,7 +181,7 @@
+
+ #ifdef X11
+
+-#include <X11/Xos.h>
++/*#include <X11/Xos.h>*/
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
diff --git a/graphics/vcg/patches/patch-ah b/graphics/vcg/patches/patch-ah
new file mode 100644
index 00000000000..75774966c51
--- /dev/null
+++ b/graphics/vcg/patches/patch-ah
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 17:48:53
++++ src/X11devcl.c 1995/02/18 17:49:10
+@@ -115,7 +115,7 @@
+
+ #ifdef X11
+
+-#include <X11/Xos.h>
++/*#include <X11/Xos.h>*/
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
diff --git a/graphics/vcg/patches/patch-ai b/graphics/vcg/patches/patch-ai
new file mode 100644
index 00000000000..9ec87a97321
--- /dev/null
+++ b/graphics/vcg/patches/patch-ai
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 17:49:10
++++ src/X11devfe.c 1995/02/18 17:49:26
+@@ -85,7 +85,7 @@
+
+ #ifdef X11
+
+-#include <X11/Xos.h>
++/*#include <X11/Xos.h>*/
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
diff --git a/graphics/vcg/patches/patch-aj b/graphics/vcg/patches/patch-aj
new file mode 100644
index 00000000000..47aa8e2f175
--- /dev/null
+++ b/graphics/vcg/patches/patch-aj
@@ -0,0 +1,20 @@
+--- 1.1 1995/02/18 17:49:27
++++ src/X11devfs.c 1995/02/18 18:03:42
+@@ -107,7 +107,7 @@
+
+ #ifdef X11
+
+-#include <X11/Xos.h>
++/*#include <X11/Xos.h>*/
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
+@@ -128,7 +128,7 @@
+ #else
+ #include <sys/types.h>
+ #include <sys/stat.h>
+-#include <sys/param.h>
++/*#include <sys/param.h> */
+ #include <dirent.h>
+ #include <grp.h>
+ #include <pwd.h>
diff --git a/graphics/vcg/patches/patch-ak b/graphics/vcg/patches/patch-ak
new file mode 100644
index 00000000000..c97cdc13a96
--- /dev/null
+++ b/graphics/vcg/patches/patch-ak
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 17:49:42
++++ src/X11devla.c 1995/02/18 17:49:58
+@@ -122,7 +122,7 @@
+
+ #ifdef X11
+
+-#include <X11/Xos.h>
++/*#include <X11/Xos.h>*/
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
diff --git a/graphics/vcg/patches/patch-al b/graphics/vcg/patches/patch-al
new file mode 100644
index 00000000000..54c104c7166
--- /dev/null
+++ b/graphics/vcg/patches/patch-al
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 17:49:58
++++ src/X11devpb.c 1995/02/18 17:50:16
+@@ -115,7 +115,7 @@
+
+ #ifdef X11
+
+-#include <X11/Xos.h>
++/*#include <X11/Xos.h>*/
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
diff --git a/graphics/vcg/patches/patch-am b/graphics/vcg/patches/patch-am
new file mode 100644
index 00000000000..7f2654ee008
--- /dev/null
+++ b/graphics/vcg/patches/patch-am
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 17:50:17
++++ src/X11devst.c 1995/02/18 17:50:33
+@@ -68,7 +68,7 @@
+
+ #ifdef X11
+
+-#include <X11/Xos.h>
++/*#include <X11/Xos.h>*/
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
diff --git a/graphics/vcg/patches/patch-an b/graphics/vcg/patches/patch-an
new file mode 100644
index 00000000000..d9dccab80b2
--- /dev/null
+++ b/graphics/vcg/patches/patch-an
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 17:50:34
++++ src/X11devti.c 1995/02/18 17:50:48
+@@ -111,7 +111,7 @@
+
+ #ifdef X11
+
+-#include <X11/Xos.h>
++/*#include <X11/Xos.h>*/
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
diff --git a/graphics/vcg/patches/patch-ao b/graphics/vcg/patches/patch-ao
new file mode 100644
index 00000000000..77574252fcc
--- /dev/null
+++ b/graphics/vcg/patches/patch-ao
@@ -0,0 +1,11 @@
+--- 1.1 1995/02/18 17:50:49
++++ src/X11devvw.c 1995/02/18 17:51:04
+@@ -87,7 +87,7 @@
+
+ #ifdef X11
+
+-#include <X11/Xos.h>
++/*#include <X11/Xos.h>*/
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/cursorfont.h>
diff --git a/graphics/vcg/patches/patch-ap b/graphics/vcg/patches/patch-ap
new file mode 100644
index 00000000000..5b7ffd6ed10
--- /dev/null
+++ b/graphics/vcg/patches/patch-ap
@@ -0,0 +1,31 @@
+--- 1.1 1995/02/18 16:48:19
++++ Makefile 1995/02/18 17:12:05
+@@ -31,7 +31,7 @@
+
+ #all: stamp-all
+
+-all: xvcg_gcc xvcg
++all: xvcg_cc xvcg
+
+ configure: stamp-config
+
+@@ -236,7 +236,7 @@
+ @echo " make xvcg_c89_noxmkmf"
+ @echo " make vcg_gcc"
+ @echo " make vcg_cc"
+-
++
+ compare: preconf xcompare xvcg install
+ /bin/rm $(PROJECTHOME)/../bin/vcg
+ ln -s $(PROJECTHOME)/../bin/xvcg $(PROJECTHOME)/../bin/vcg
+--- ./preconf/X11/Imakefile.org Wed Feb 8 11:48:30 1995
++++ ./preconf/X11/Imakefile Thu Jun 12 10:35:35 1997
+@@ -2,7 +2,7 @@
+ DEPLIBS = $(DEPXLIB)
+ LOCAL_LIBRARIES = $(XLIB)
+
+-all:
++all::
+ @ echo "#"
+ @ echo LIBPATH = -L$(USRLIBDIR)
+ @ echo INCLUDES = $(ALLINCLUDES)
diff --git a/graphics/vcg/pkg/COMMENT b/graphics/vcg/pkg/COMMENT
new file mode 100644
index 00000000000..6fc38293061
--- /dev/null
+++ b/graphics/vcg/pkg/COMMENT
@@ -0,0 +1 @@
+A Visualization Tool for compiler graphs
diff --git a/graphics/vcg/pkg/DESCR b/graphics/vcg/pkg/DESCR
new file mode 100644
index 00000000000..367da68dd25
--- /dev/null
+++ b/graphics/vcg/pkg/DESCR
@@ -0,0 +1,10 @@
+The VCG tool reads a textual and readable specification of a
+graph and visualizes the graph. If not all positions of
+nodes are fixed, the tool layouts the graph using several
+heuristics as reducing the number of crossings, minimizing
+the size of edges, centering of nodes. The specification
+language of the VCG tool is nearly compatible to GRL, the
+language of the edge tool, but contains many extensions. The
+VCG tool allows folding of dynamically or statically speci-
+fied regions of the graph. It uses colors and runs on
+X11. (An older version runs on Sunview).
diff --git a/graphics/vcg/pkg/PLIST b/graphics/vcg/pkg/PLIST
new file mode 100644
index 00000000000..f300591be79
--- /dev/null
+++ b/graphics/vcg/pkg/PLIST
@@ -0,0 +1,5 @@
+bin/xvcg
+bin/pbmrot90
+bin/pbmshift
+bin/pbm2hp
+bin/vcgdemomaker