=head1 NAME

afs_compile_et - Produce error text tables for compilation

=head1 SYNOPSIS

=for html
<div class="synopsis">

B<afs_compile_et> [B<-debug>] S<<< [B<-language> <I<lang>>] >>>
    S<<< [B<-prefix> <I<prefix>>] >>> S<<< [B<-v> <I<version>>] >>>
    S<<< [B<-h> <I<include>>] >>> <S<<< [B<-emit> <I<output>>] >>>
    I<error_table>>

=for html
</div>

=head1 DESCRIPTION

The B<afs_compile_et> command builds the error text tables for compilation.
This includes both a header file that contains a set of mappings between
error names and values and a F<.c> (or F<.msf>) file that provides a text
table of descriptions.

The <I<error_table>> argument specifies which error table to generate.
The error table specification should exist in the current working
directory or in the directory specified with B<-prefix> and should be
named F<error_table.et>.

By default, B<afs_compile_et> generates two files in one invocation. This is
problematic for parallel build systems. The B<-emit> option may be used to
generate the output files independently with two separate invocations of
B<afs_compile_et> for a given error table. This allows parallel build systems
to generate the source and header files, and the targets which depend on the
generated source and headers files, in parallel.

=head1 CAUTIONS

This command is used internally within the build process for OpenAFS.
Most users will access this information via L<translate_et(1)> rather than
via B<afs_compile_et>.

This command does not use the standard AFS command-line parsing package.

=head1 OPTIONS

=over 4

=item B<-debug>

Does nothing.  It neither adds debugging information to the output nor
provides additional information on its operation.

=item B<-language> <I<lang>>

Specifies the type of output to generate.  Currently, only ANSI C and K&R
are supported values (via the B<c> and B<k&r-c> values, respectively).
The default is ANSI C.  There is some support for C++ started, but that is
not yet supported.

The B<-lang> <I<lang>> option is a synonym for B<-language> <I<lang>>>.

=item B<-prefix> <I<prefix>>

Specifies the directory to search for the F<error_table.et> file. Specifies
the directory to search for the prolog file when the B<-h> option is
given.  The B<-p> <I<prefix>> option is a synonym for B<-prefix> <I<prefix>>.

=item B<-h> <I<include>>

Specifies an input file, called a prolog file, and modifies the name of the
header file generated by B<afs_compile_et>.

When the B<-h> option is given, B<afs_compile_et> will search for a prolog file
named <I<include>>F<.p.h>.  B<afs_compile_et> will search the current working
directory for the prolog file, unless the B<-p> option is given.  If the prolog
file is found, B<afs_compile_et> will place a verbatim copy of the prolog
file contents into the generated header file.

When the B<-h> option is given, the name of the header file generated by
B<afs_compile_et> is <I<include>>F<.h>, instead of <I<error_table>>F<.h>.

The B<-h> option does not affect the source file generated by B<afs_compile_et>.

=item B<-v> <I<version>>

Specified the type of output file: valid values are 1 (the default, for C
files) or 2, for B<.msf> file generation.

=item B<-emit> <I<output>>

Specifies which program file to generate; the header file or the source file.
Specify B<-emit header> (or B<-emit h>) to generate the F<.h> header file.
Specify B<-emit source> (or B<-emit c>) to generate the F<.c> (or F<.msf>)
source file.

=back

=head1 EXAMPLES

The following command generates the files F<pterror.h> and F<pterror.c>,
suitable for use with C programs:

   % afs_compile_et -p path/to/src/ptserver pterror

The following command generates K&R style files instead:

   % afs_compile_et -p path/to/src/ptserver -lang 'k&r-c' pterror

The following command generates the F<pterror.h> file, but not the F<pterror.c>
file.

   % afs_compile_et -p path/to/src/ptserver -emit header pterror

The following command generates the F<pterror.c> file, but not the F<pterror.h>
file.

   % afs_compile_et -p path/to/src/ptserver -emit source pterror

=head1 SEE ALSO

L<translate_et(1)>

=head1 COPYRIGHT

Copyright 2009 Steven Jenkins <steven@endpoint.com>

This documentation is covered by the IBM Public License Version 1.0.  This
man page was written by Steven Jenkins for OpenAFS.
