Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
cxref(1)		     General Commands Manual			cxref(1)

NAME
     cxref - C Cross Referencing & Documenting tool.

SYNOPSIS
     cxref  filename   [   ...	 filename] [-Odirname] [-Nbasename] [-Rbasename]
     [-all-comments]   [-no-comments]	[-verbatim-comments]   [-block-comments]
     [-xref[-all][-file][-func][-var][-type]]	  [-warn[-all][-comment][-xref]]
     [-index[-all][-file][-func][-var][-type]]	[-raw]	[-latex]   [-html[-src]]
     [-rtf]   [-sgml]	[-Idirname]   [-Ddefine]  [-Udefine]  [-CPP cpp_program]
     [-- cpp_args ... cpp_args]

     cxref filename  [	...  filename] -delete [-Odirname] [-Nbasename] [-Rbase-
     name]

DESCRIPTION
     A program that can automatically generate documentation  and  cross  refer-
     ences for a C program.

     The  input is any C program with appropriate comments and the output is La-
     TeX, HTML, RTF or SGML files.

OPTIONS
     filename
	    The name of the file to document, any number of files may  be  docu-
	    mented at a time.

     -delete
	    The  files	named  are  to	be deleted from the output directory and
	    their entries in the cross reference database and main output  files
	    are to be removed.

     -Odirname
	    The  name  of  a directory to use for the output latex files and the
	    location of the cross reference files that are created.

     -Nbasename
	    The name to use for the first part of the output and cross reference
	    files instead of cxref, the file extensions remain the same.

     -Rdirname
	    When the source files are in more than one directory, set dirname to
	    the name of the root directory of the source tree (use relative path
	    if easier e.g. `-R../..').	This will then run cxref from that  root
	    directory and the `-Odirname' must be relative to that directory.

     -all-comments
	    In	case you think that the existing comments might work, (see above
	    for description of special comments).  [Danger! This option can pro-
	    duce weird results.]

     -no-comments
	    Ignores all comments, useful if you just want the  cross  references
	    and not the documentation.

     -verbatim-comments
	    When  the comments that you have in the code are formatted in a pre-
	    determined style that you want to preserve on the output,  this  op-
	    tion will force them not to be reformatted.  [Note, this is for file
	    and function comments only.]

     -block-comments
	    When  the comments in the program are formatted in the `block' style
	    (with a leading '*' character on every line), this option  will  re-
	    move  that character from the output.  [Works for a single `*', `+',
	    `|' or `:' on each line.]

     -xref  Produce cross referencing information (see below).
	     -all    All cross references.
	     -file   Cross references for files.
	     -func   Cross references for functions.
	     -var    Cross references for variables.
	     -type   Cross references for types.

     -warn  Produce warnings, the options must be concatenated together:
	     -all	All warnings.
	     -comment	Warn of missing comments.
	     -xref	Warn of missing cross references.

     -index
	    Produce a cross reference index, the options  must	be  concatenated
	    together:
	     -all    All indexes.
	     -file   Index of files.
	     -func   Index of functions.
	     -var    Index of variables.
	     -type   Index of types.

     -raw   Produce  a	raw  form  of output, not really of much use except with
	    -warn.

     -latex
	    Produce a LaTeX file to document each of the source files  and  also
	    an extra file that includes each of these files.

     -html  Produce an HTML 4.01 file to document each of the source files and a
	    main file to reference each of these files.

     -html-src
	    Produce  the HTML output and an HTML version of the source file with
	    links into it.

     -rtf   Produce a Rich Text Format (RTF) file to document the source file.

     -sgml  Produce an SGML file to document the source file.  (Using the Linux-
	    Doc DTD).

     -Idirname
	    GCC option to specify the path for include files.

     -Ddefine
	    GCC option to define a pre-processor symbol.

     -Udefine
	    GCC option to undefine a pre-processor symbol.

     -CPP program
	    The name of the program to use instead of the compile time	default.
	    The  program must be able to perform all of the actions that `gcc -E
	    -C -dD' does to work.  If the program takes arguments then the whole
	    thing needs to be in quotes so that it is interpreted  as  a  single
	    argument to cxref.

     --arg ... arg
	    Extra  arguments to be passed to the pre-processor can be placed af-
	    ter the `--' separator.

   C Compiler Replacement cxref-cc
     To simplify using cxref on existing source  code,	there  is  now	a  shell
     script  that  will  call  the C compiler and then call cxref to process the
     source file.  This means that it can be used as a drop in	replacement  for
     CC in Makefiles and the like.

     Usage: cxref-cc [usual cc options]

     The  name	of the source file is extracted from the list of options as well
     as the `-D*', `-I*', `-U*' flags and when the C compiler exits  succesfully
     cxref  will  be called.  The name of the C compiler to use is controlled by
     the CXREFCC environment variable, or if this is not set then the  CC  envi-
     ronment variable, or failing this just gcc.

     Using this script requires the use of a `.cxref' configuration file to con-
     tain  the	options since there is nowhere to put the options on the command
     line for the C compiler.

     This will only cross-reference and document the C source files  since  they
     are  the  only  ones that are compiled, but it will make sure that they are
     cross-referenced with the correct options etc.

   Cxref Configuration File
     These command line arguments can also be put into a file named `.cxref' in-
     stead of on the command line.  When cxref is run the arguments to the  pro-
     gram are interpreted in the following order.

     (1)  Those on the command line.  (2) Those in the `.cxref' file in the cur-
     rent directory.  (3) Those in the `.cxref' file in  the  source  tree  root
     specified by `-R'.

     This  means  that	in a multi-directory source tree, each sub-directory can
     have a `.cxref' file containing just the line `-R..' or  appropriate.   The
     main directory can have a `.cxref' file containing the remainder of the op-
     tions.  This removes completely the need to have any options on the command
     line apart from the source file names.

     The format of the `.cxref' file is any number of lines, each one containing
     a	single	command line argument (equivalent to one of the argv).	The only
     options that cannot be used are the names of source  files  themselves  and
     the  `-delete'  option.   Blank lines are ignored and lines starting with a
     '#' are comments.

   Program Documentation Comments
     The documentation for the program is produced from  comments  in  the  code
     that  are	appropriately  formatted.   The cross referencing comes from the
     code itself and requires no extra work.

     The special comments are `/**** ****/' (for a  file)  and	`/*++++  ++++*/'
     (for  a  data  object)  any  number of `*' or `+' can be used inside of the
     standard `/*' and `*/' comment delimiters in the  comments,  they	are  ig-
     nored.

     If  a  comment line starts with whitespace and is followed by `+html+' then
     the rest of the line is included only  in	the  HTML  output,  and  is  not
     processed	so  it	can include HTML markup, `-html-' means that the rest of
     the line is included in all except the HTML output.  The same also  applies
     to  the  other output formats, `+none+' can be used for lines not to appear
     in any output.  The exception to this is that the raw output  does  not  do
     any checking and will output all lines.

     In  any  situation where a comment follows a `,', `;' or `)' separated only
     by spaces and tabs, the comment is pushed to before the punctuation to  ap-
     ply to object there.

     The program is implemented using a full ANSI C grammar parser with some GCC
     extensions,  this means that the style of the code is unimportant, only the
     content and comments.

   Cross Referencing
     The cross referencing is performed for the following items

     Files
      The files that the current file is included in
      (even when included via other files).

     #includes
      Files included in the current file.
      Files included by these files etc.

     Variables
      The location of the definition of external variables.
      The files that have visibility of global variables.
      The files / functions that use the variable.

     Functions
      The file that the function is prototyped in.
      The functions that the function calls.
      The functions that call the function.
      The files and functions that reference the function.
      The variables that are used in the function.

     Each of these items is cross referenced in the output.

     The  cross  referencing  uses  files  `cxref.variable',   `cxref.function',
     `cxref.include'  and  `cxref.typedef' in the output directory.  These are a
     complete list of the function and variable usage in the program  and  could
     be used to generate a function call hierarchy or variable usage diagram for
     example.	Two  cxref  passes of each file is needed, the first to build up
     the cross referencing files and the second to use them.

     (The file names are different if the `-N' option is used.)

   LaTeX Output
     The default LaTeX output is a file for each of the source	files  with  one
     extra  file  `cxref.tex' that includes each of the other files.  This is to
     allow a makefile to only update the changed files (although the  references
     may require all of the files to be checked again).  When the cxref.tex file
     has  been	written  it  can be modified by the user, any new files that are
     added are added at the end of the source code section, the rest of the file
     being unchanged.

     The index is written to a file called `cxref.apdx.tex' and cxref.tex is up-
     dated to refer to it.

     Also written out are three LaTeX style files  `page.sty',	`fonts.sty'  and
     `cxref.sty'.   These  set	up  the page to use a smaller margin and smaller
     fonts to allow more to appear on a page and also define  the  new	commands
     for typesetting the cxref output.

     (The  file names `cxref.tex' and `cxref.apdx.tex' are different if the `-N'
     option is used.)

   HTML Output
     The default HTML output is a file for each of the source files with one ex-
     tra file `cxref.html' that includes each of the other files.   This  is  to
     allow  a makefile to only update the changed files (although the references
     may require all of the files to be checked  again).   When  the  cxref.html
     file  has	been  written it can be modified by the user, any new files that
     are added are added at the end before the table of contents,  the	rest  of
     the file being unchanged.

     The  index  is written to a file called `cxref.apdx.html' and cxref.html is
     updated to refer to it.

     (The file names `cxref.html' and `cxref.apdx.html'  are  different  if  the
     `-N' option is used.)

     The  HTML	output	uses  the HTML 4.01 standard and all pages validate cor-
     rectly.

   RTF Output
     Rich Text Format is a fairly low level page description format  devised  by
     Microsoft.  It is not a well defined and easy to understand standard as are
     the other formats, but it is popular for document exchange.

     There  is	a  single  output file for each of the source files and an index
     file.

   SGML Output
     Since SGML is a meta-language it is necessary to define the layout elements
     as well as provide the information.  The cxref  output  uses  the	LinuxDoc
     document  format  and  is	designed  for  use  with  the SGMLtools programs
     (http://www.sgmltools.org/).

     There is a single output file for each of the source  files  and  an  index
     file.

SEE ALSO
     The  files  that come with the cxref source code distribution give more in-
     formation.  The README file gives examples of how to use  the  comments  in
     source  code.   There is a list of frequently asked questions and their an-
     swers for the cxref program in  the  FAQ  file.   A  list	of  improvements
     planned for future versions of the program are listed in the file TODO.

     More   up-to-date	 information   can   be  found	on  the  cxref	homepage
     http://www.gedanken.org.uk/software/cxref/.

AUTHOR
     The cxref program was written by Andrew M. Bishop in 1995-2004.

     The cxref program is copyright Andrew M. Bishop 1995-2004.

     The cxref-cpp program is copyright Free Software Foundation, Inc.

     The cxref and cxref-cpp programs can be freely distributed according to the
     terms of the GNU General Public License (see the file `COPYING').

				  June 15 2004				cxref(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=cxref&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help