Make recent Texinfo accept devel.texi.
[pintos-anon] / doc / devel.texi
1 @node Development Tools
2 @appendix Development Tools
3
4 Here are some tools that you might find useful while developing code.
5
6 @menu
7 * Tags::
8 * cscope::
9 * CVS::
10 @ifset recommendsourceforge 
11 * SourceForge::
12 @end ifset 
13 @ifset recommendvnc
14 * VNC::
15 @end ifset 
16 @ifset recommendcygwin
17 * Cygwin::
18 @end ifset
19 @end menu
20
21 @node Tags
22 @section Tags
23
24 Tags are an index to the functions and global variables declared in a
25 program.  Many editors, including Emacs and @command{vi}, can use
26 them.  The @file{Makefile} in @file{pintos/src} produces Emacs-style
27 tags with the command @code{make TAGS} or @command{vi}-style tags with
28 @code{make tags}.
29
30 In Emacs, use @kbd{M-.} to follow a tag in the current window,
31 @kbd{C-x 4 .} in a new window, or @kbd{C-x 5 .} in a new frame.  If
32 your cursor is on a symbol name for any of those commands, it becomes
33 the default target.  If a tag name has multiple definitions, @kbd{M-0
34 M-.} jumps to the next one.  To jump back to where you were before
35 you followed the last tag, use @kbd{M-*}.
36
37 @node cscope
38 @section cscope
39
40 The @command{cscope} program also provides an index to functions and
41 variables declared in a program.  It has some features that tag
42 facilities lack.  Most notably, it can find all the points in a
43 program at which a given function is called.
44
45 The @file{Makefile} in @file{pintos/src} produces @command{cscope}
46 indexes when it is invoked as @code{make cscope}.  Once the index has
47 been generated, run @command{cscope} from a shell command line; no
48 command-line arguments are normally necessary.  Then use the arrow
49 keys to choose one of the search criteria listed near the bottom of
50 the terminal, type in an identifier, and hit @key{Enter}.
51 @command{cscope} will then display the matches in the upper part of
52 the terminal.  You may use the arrow keys to choose a particular
53 match; if you then hit @key{Enter}, @command{cscope} will invoke the
54 default system editor@footnote{This is typically @command{vi}.  To
55 exit @command{vi}, type @kbd{: q @key{Enter}}.} and position the
56 cursor on that match.  To start a new search, type @key{Tab}.  To exit
57 @command{cscope}, type @kbd{Ctrl-d}.
58
59 Emacs and some versions of @command{vi} have their own interfaces to
60 @command{cscope}.  For information on how to use these interface,
61 visit @url{http://cscope.sourceforge.net, the @command{cscope} home
62 page}.
63
64 @node CVS
65 @section CVS
66
67 CVS is a version-control system.  That is, you can use it to keep
68 track of multiple versions of files.  The idea is that you do some
69 work on your code and test it, then check it into the version-control
70 system.  If you decide that the work you've done since your last
71 check-in is no good, you can easily revert to the last checked-in
72 version.  Furthermore, you can retrieve any old version of your code
73 as of some given day and time.  The version control logs tell you who
74 made changes and when.
75
76 CVS is not the best version control system out there, but it's
77 free, it's fairly easy to use, and it's already installed in most
78 Unix-like environments.
79
80 For more information, visit the @uref{https://www.cvshome.org/, , CVS
81 home page}.
82
83 @include localcvsinstructions.texi
84
85 @ifset recommendsourceforge
86 @node SourceForge
87 @section SourceForge
88
89 SourceForge is a web-based system for facilitating software
90 development.  It provides you with a version-control system (typically
91 CVS, as described above) and other tools for tracking your software.
92 You can use it to store files, track bugs, and post notes about
93 development progress.  You can set up your own
94 project in SourceForge at @uref{http://sourceforge.net, ,
95 sourceforge.net}.
96 @end ifset
97
98 @ifset recommendvnc
99 @node VNC
100 @section VNC
101
102 VNC stands for Virtual Network Computing.  It is, in essence, a remote
103 display system which allows you to view a computing ``desktop''
104 environment not only on the machine where it is running, but from
105 anywhere on the Internet and from a wide variety of machine
106 architectures.  It is already installed on the lab machines.  
107 For more information, look at the @uref{http://www.realvnc.com/, , VNC
108 Home Page}.
109 @end ifset
110
111 @ifset recommendcygwin
112 @node Cygwin
113 @section Cygwin
114
115 @uref{http://cygwin.com/, ,Cygwin} provides a Linux-compatible environment
116 for Windows.  It includes ssh client and an X11 server, Cygwin/X.  If your
117 primary work environment is Windows, you will find Cygwin/X extremely
118 useful for these projects.  Install Cygwin/X, then start the X server
119 and open a new xterm.  The X11 server also allows you to run pintos while
120 displaying the bochs- or qemu-emulated console on your Windows desktop.
121 @end ifset
122
123 @localdevelopmenttools{}
124