DragonFly On-Line Manual Pages
C_INCL(1) DragonFly General Commands Manual C_INCL(1)
NAME
c_incl - determine dependencies
SYNOPSIS
c_incl [ option... ] filename
c_incl -Help
c_incl -VERSion
DESCRIPTION
The c_incl program is used to traverse source files looking for include
dependencies suitable for [collect]ion or #include-cooked-ing by cook.
The filename ``-'' is understood to mean the standard input. When you
use this file name, caching is ignored.
Several input languages are supported, see the options list for
details.
OPTIONS
The following options are understood.
-C The source file is a C source file. It is assumed that it will
have the dependencies resolved by the cpp(1) command. The same
include semantics as the cpp(1) command will be employed. This
is the default. This is short-hand for ``--language=c''
--Language=name
This option may be used to specify the language of the source
file. Know names include ``C'', ``M4'', ``optimistic'' and
``roff''.
The ``optimistic'' language will take on almost anything. It
accepts an include keyword in any case, including mixed, with
leading white space, but at most one leading punctuation
character. It assumes that the filename follows the include
keyword and does not contain white space, and does not start or
end with punctuation characters (it strips off any it may
find). The rest of the line is ignored. The drawback is that
it will sometimes recognise commands and other text as
unintended include directives, hence the name. This is often
used to recognise include directives in a wide variety of
assembler input.
-Roff The source file is a *roff source file. It is assumed that it
will have the dependencies resolved by the roffpp(1) command.
The same include semantics as the roffpp(1) command will be
employed. This is short-hand for ``--language=roff''
-Verbose
Tell what is happening.
-Ipath
Specify include path, a la cc(1).
-I-
Any directories you specify with -I options before the -I-
option are searched only for the case of #include "file"; they
are not searched for #include <file>.
If additional directories are specified with -I options after
the -I-, these directories are searched for all #include
directives. (Ordinarily all -I directories are used this way.)
In addition, the -I- option inhibits the use of the current
directory (where the current input file came from) as the first
search directory for #include "file". There is no way to
override this effect of -I-. With -I. you can specify
searching the directory which was current when c_incl was
invoked. That is not exactly the same as what the preprocessor
does by default, but it is often satisfactory.
The -I- option does not inhibit the use of the standard system
directories for header files. Thus, -I- and -No_System are
independent.
-Absolute_Paths
This option may be used to allow absolute paths in the output.
This is usually the default.
-No_Absolute_Paths
This option may be used to exclude absolute paths from the
output.
-Absent_Local_Ignore
For files included using a #include ''filename.h'' directive,
ignore the file if it cannot be found.
-Absent_Local_Mention
For files included using a #include ''filename.h'' directive,
print the file name even if the file cannot be found. This is
the default (it probably needs to be built).
-Absent_Local_Error
For files included using a #include ''filename.h'' directive,
print a fatal error if the file cannot be found.
-Absent_System_Ignore
For files included with a #include <filename.h> directive,
ignore the file if it cannot be found. This is the default (it
was probably ifdef'ed out).
-Absent_System_Mention
For files included with a #include <filename.h> directive,
print the file name even if the file cannot be found.
-Absent_System_Error
For files included with a #include <filename.h> directive,
print a fatal error if the file cannot be found.
-Absent_Program_Ignore
If the file named on the command line cannot be found, behave
as if the file were found, but was empty.
-Absent_Program_Error
If the file named on the command line cannot be found, print a
fatal error message. This is the default.
-Escape_Newlines
This option may be used to request that newlines in the output
are escaped with backslash (``\'') characters.
-Help
Give information on how to use c_incl.
-EXclude filename
This option may be used to nominate include file names which
are not to be used.
-VERSion
Tell what version of c_incl is being run.
-Interior_Files filename...
This option may be used to tell c_incl about include files
which don't exist yet. This is because they are interior to
the dependency graph, but cook(1) hasn't finished walking it
yet. Often used with Cook's [interior-files] function. (Note:
the filename list has an arbitrary number of files; it ends at
the next option or end-of-line, so you need to be careful where
you put the input filename.)
-No_System
Do not search the /usr/include directory. By default this is
searched last. This option implies the -No_Absolute_Paths
option, unless explicitly contradicted.
-CAche
This option may be used to turn caching on. This is the
default.
-No_Cache
This option may be used to turn caching off.
-PREfix string
This option may be used to print a string before any of the
filenames are printed. It will not be printed if no file names
are printed.
-Quote_FileNames
This option may be used to have c_incl quote filenames. This
permits filenames to contain characters which are special to
Cook, including spaces.
-SUFfix string
This option may be used to print a string after all of the
filenames are printed. It will not be printed if no file names
are printed.
-Output filename
This option may be used to specify the output file. Defaults
to the standard output if not set.
-No_Source_Relative_Includes
This option will give a fatal error if a #include
''filename.h'' directive is used. This is necessary when you
are using Cook's search_list functionality to stitch together a
baseline and a private work area.
-RECursion
This option may be used to specify that nested include files
are to be scanned, so that their includes may also be
discovered. This is the default.
-No_RECursion
This option may be use to specify that nested include files are
not to be scanned. This option is recommended for use with the
Cook cascade-for recipes. This option implies -No_Cache,
unless a -Cache option is specified.
-Remove_Leading_Path path
This option may be used to remove path prefixes from the
included filenames. May be used more than once. This is
necessary when you are using Cook's search_list functionality
to stitch together a baseline and a private work area; usually
as ``[prepost "-rlp=" "" [search_list]]''
-STripdot
This option may be used to specify that leading redundant dot
directories are to be removed from paths before processing.
This is the default.
-No_STripdot
This option may be used to specify that leading redundant dot
directories need not be removed from paths before processing.
(Some path flattening may still occur.)
-Substitute_Leading_Path from to
This option may be used to modify path prefixes from the
included filenames. May be used more than once. This is
necessary when you are performing heterogeneous builds in the
same directory tree. By using an ``arch'' variable to hold the
architecture, and placing each architecture's objects in a
separate directory tree, this option may be used as ``-slp
[arch] "'[arch]'"'' (The outer quotes protect from Cook, the
inner quotes protect from the shell.) If you need more
intricate editing, used sed(1).
Any other options will generate an error.
All options may be abbreviated; the abbreviation is documented as the
upper case letters, all lower case letters and underscores (_) are
optional. You must use consecutive sequences of optional letters.
All options are case insensitive, you may type them in upper case or
lower case or a combination of both, case is not important.
For example: the arguments "-help", "-HEL" and "-h" are all interpreted
to mean the -Help option. The argument "-hlp" will not be understood,
because consecutive optional characters were not supplied.
Options and other command line arguments may be mixed arbitrarily on
the command line.
The GNU long option names are understood. Since all option names for
c_incl are long, this means ignoring the extra leading '-'. The
"--option=value" convention is also understood.
CACHING
The caching mechanism use by the c_incl program caches the results of
searching files for include files (in a file called .c_inclrc in the
current directory). The cache is only refreshed when a file changes.
The use of this cache has been shown to dramatically increase the
performance of the c_incl program. Typically, only a small proportions
files in a project change between builds, resulting in a very high
cache hit rate.
When using caching, always use the same command line options, otherwise
weird and wonderful things will happen.
The .c_inclrc file is a binary file. If you wish to rebuild the cache,
simply delete this file with the rm(1) command. Being a binary file,
the .c_inclrc file is not portable across machines or operating
systems, so you will need to delete it when you move your sources. It
is a binary file for performance.
Accesses to the .c_inclrc file use file locking, so recipies using
c_incl need not use the single-thread clause.
EXIT STATUS
The c_incl command will exit with a status of 1 on any error. The
c_incl command will only exit with a status of 0 if there are no
errors.
COPYRIGHT
c_incl version 2.30
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Peter
Miller;
All rights reserved.
The c_incl program comes with ABSOLUTELY NO WARRANTY; for details use
the 'c_incl -VERSion License' command. This is free software and you
are welcome to redistribute it under certain conditions; for details
use the 'c_incl -VERSion License' command.
AUTHOR
Peter Miller E-Mail: millerp@canb.auug.org.au
/\/\* WWW: http://www.canb.auug.org.au/~millerp/
Reference Manual Cook C_INCL(1)