Make recent Texinfo accept devel.texi.
[pintos-anon] / doc / devel.texi
index 3491a3606e171fc28225e534cf92c97a7150b46c..eae54d163956de002a61f1d78424326704c31509 100644 (file)
@@ -1,3 +1,124 @@
 @node Development Tools
 @appendix Development Tools
 
+Here are some tools that you might find useful while developing code.
+
+@menu
+* Tags::
+* cscope::
+* CVS::
+@ifset recommendsourceforge 
+* SourceForge::
+@end ifset 
+@ifset recommendvnc
+* VNC::
+@end ifset 
+@ifset recommendcygwin
+* Cygwin::
+@end ifset
+@end menu
+
+@node Tags
+@section Tags
+
+Tags are an index to the functions and global variables declared in a
+program.  Many editors, including Emacs and @command{vi}, can use
+them.  The @file{Makefile} in @file{pintos/src} produces Emacs-style
+tags with the command @code{make TAGS} or @command{vi}-style tags with
+@code{make tags}.
+
+In Emacs, use @kbd{M-.} to follow a tag in the current window,
+@kbd{C-x 4 .} in a new window, or @kbd{C-x 5 .} in a new frame.  If
+your cursor is on a symbol name for any of those commands, it becomes
+the default target.  If a tag name has multiple definitions, @kbd{M-0
+M-.} jumps to the next one.  To jump back to where you were before
+you followed the last tag, use @kbd{M-*}.
+
+@node cscope
+@section cscope
+
+The @command{cscope} program also provides an index to functions and
+variables declared in a program.  It has some features that tag
+facilities lack.  Most notably, it can find all the points in a
+program at which a given function is called.
+
+The @file{Makefile} in @file{pintos/src} produces @command{cscope}
+indexes when it is invoked as @code{make cscope}.  Once the index has
+been generated, run @command{cscope} from a shell command line; no
+command-line arguments are normally necessary.  Then use the arrow
+keys to choose one of the search criteria listed near the bottom of
+the terminal, type in an identifier, and hit @key{Enter}.
+@command{cscope} will then display the matches in the upper part of
+the terminal.  You may use the arrow keys to choose a particular
+match; if you then hit @key{Enter}, @command{cscope} will invoke the
+default system editor@footnote{This is typically @command{vi}.  To
+exit @command{vi}, type @kbd{: q @key{Enter}}.} and position the
+cursor on that match.  To start a new search, type @key{Tab}.  To exit
+@command{cscope}, type @kbd{Ctrl-d}.
+
+Emacs and some versions of @command{vi} have their own interfaces to
+@command{cscope}.  For information on how to use these interface,
+visit @url{http://cscope.sourceforge.net, the @command{cscope} home
+page}.
+
+@node CVS
+@section CVS
+
+CVS is a version-control system.  That is, you can use it to keep
+track of multiple versions of files.  The idea is that you do some
+work on your code and test it, then check it into the version-control
+system.  If you decide that the work you've done since your last
+check-in is no good, you can easily revert to the last checked-in
+version.  Furthermore, you can retrieve any old version of your code
+as of some given day and time.  The version control logs tell you who
+made changes and when.
+
+CVS is not the best version control system out there, but it's
+free, it's fairly easy to use, and it's already installed in most
+Unix-like environments.
+
+For more information, visit the @uref{https://www.cvshome.org/, , CVS
+home page}.
+
+@include localcvsinstructions.texi
+
+@ifset recommendsourceforge
+@node SourceForge
+@section SourceForge
+
+SourceForge is a web-based system for facilitating software
+development.  It provides you with a version-control system (typically
+CVS, as described above) and other tools for tracking your software.
+You can use it to store files, track bugs, and post notes about
+development progress.  You can set up your own
+project in SourceForge at @uref{http://sourceforge.net, ,
+sourceforge.net}.
+@end ifset
+
+@ifset recommendvnc
+@node VNC
+@section VNC
+
+VNC stands for Virtual Network Computing.  It is, in essence, a remote
+display system which allows you to view a computing ``desktop''
+environment not only on the machine where it is running, but from
+anywhere on the Internet and from a wide variety of machine
+architectures.  It is already installed on the lab machines.  
+For more information, look at the @uref{http://www.realvnc.com/, , VNC
+Home Page}.
+@end ifset
+
+@ifset recommendcygwin
+@node Cygwin
+@section Cygwin
+
+@uref{http://cygwin.com/, ,Cygwin} provides a Linux-compatible environment
+for Windows.  It includes ssh client and an X11 server, Cygwin/X.  If your
+primary work environment is Windows, you will find Cygwin/X extremely
+useful for these projects.  Install Cygwin/X, then start the X server
+and open a new xterm.  The X11 server also allows you to run pintos while
+displaying the bochs- or qemu-emulated console on your Windows desktop.
+@end ifset
+
+@localdevelopmenttools{}
+