.\" -*- nroff -*-
.TH WRC 1 "October 2005" "@PACKAGE_STRING@" "Wine Developers Manual"
.SH NAME
wrc \- Wine Resource Compiler
.SH SYNOPSIS
.BI "wrc " "[options] " "[inputfile]"
.SH DESCRIPTION
.B wrc
compiles resources from \fBinputfile\fR
into win16 and win32 compatible binary format.
.PP
The source\-file is preprocessed with a builtin ANSI\-C compatible
preprocessor before the resources are compiled. See \fBPREPROCESSOR\fR
below.
.PP
.B wrc
takes only one \fBinputfile\fR as argument. The resources are read from 
standard input if no inputfile is given. If the output file is not 
specified with \fI-o\fR, then \fBwrc\fR will write the output to 
\fBinputfile.res\fR with \fB.rc\fR stripped, or to \fBwrc.tab.res\fR if 
no inputfile was given.
.SH OPTIONS
.TP
.I \fB\-\-debug\fR=\fInn\fR
Set debug level to \fInn\fR. The value is a bitmask consisting of
1=verbose, 2=dump internals, 4=resource parser trace, 8=preprocessor
messages, 16=preprocessor scanner and 32=preprocessor parser trace.
.TP
.I \fB\-\-endianess\fR=\fIe\fR
Win32 only; set output byte\-ordering, where \fIe\fR is one of n[ative],
l[ittle] or b[ig].  Only resources in source-form can be reorderd. Native
ordering depends on the system on which \fBwrc\fR was built. You can see
the native ordering by typing \fIwrc \-h\fR.
.TP
.I \fB\-D\fR, \fB\-\-define\fR=\fIid[=val]\fR
Define preprocessor identifier \fIid\fR to (optionally) value \fIval\fR.
See also
.B PREPROCESSOR
below.
.TP
.I \fB\-E\fR
Preprocess only. The output is written to standard output if no
outputfile was selected. The output is compatible with what gcc would
generate.
.TP
.I \fB\-F\fR, \fB\-\-target\fR
Ignored for compatibility with \fIwindres\fR.
.TP
.I \fB\-h\fR, \fB\-\-help\fR
Prints a summary message and exits.
.TP
.I \fB\-i\fR, \fB\-\-input\fR=\fIfile\fR
The name of the input file. If this option is not used, then \fBwrc\fR 
will use the first non-option argument as the input file name. If there 
are no non-option arguments, then \fBwrc\fR will read from standard input.
.TP
.I \fB\-I\fR, \fB\-\-include\-dir\fR=\fIfile\fR
Add \fIpath\fR to include search directories. \fIPath\fR may contain
multiple directories, separated with ':'. It is allowed to specify
\fI\-I\fR multiple times. Include files are searched in the order in
with the \fI\-I\fR options were specified.
.br
The search is compatible with gcc, in which '<>' quoted filenames are
searched exclusively via the \fI\-I\fR set path, whereas the '""' quoted
filenames are first tried to be opened in the current directory. Also
resource statements with file references are located in the same way.
.TP
.I \fB\-J\fR, \fB\-\-input\-format\fR=\fIformat\fR
Sets the input format. Valid options are 'rc' or 'rc16'. Setting the
input to 'rc16' disables the recognition of win32 keywords.
.TP
.I \fB\-l\fR, \fB\-\-language\fR=\fIlan\fR
Set default language to \fIlan\fR. Default is the neutral language 0
(i.e. "LANGUAGE 0, 0").
.TP
.I \fB\-\-nostdinc\fR
Do not search the standard include path, look for include files only
in the directories explicitly specified with the \fI\-I\fR option.
.TP
.I \fB\-\-no\-use\-temp\-file\fR
Ignored for compatibility with \fIwindres\fR.
.TP
.I \fB\-o\fR, \fB\-fo\fR, \fB\-\-output\fR=\fIfile\fR
Write output to \fIfile\fR. Default is \fBinputfile.res\fR
with \fB.rc\fR stripped or \fBwrc.tab.res\fR if input is read
from standard input.
.TP
.I \fB\-O\fR, \fB\-\-output\-format\fR=\fIformat\fR
Sets the output format. The supported formats are 'res' and 'res16'.
If this option is not specified, format defaults to 'res'.
.TP
.I \fB\-\-pedantic\fR
Enable pedantic warnings. Notably redefinition of #define statements can
be discovered with this option.
.TP
.I \fB\-r\fR
Ignored for compatibility with \fIrc\fR.
.TP
.I \fB\-\-preprocessor\fR=\fIprogram\fR
This option may be used to specify the preprocessor to use, including any 
leading arguments. If not specified, \fBwrc\fR uses its builtin processor.
To disable preprocessing, use \fB--preprocessor=cat\fR.
.TP
.I \fB\-U\fR, \fB\-\-undefine\fR=\fIid\fR
Undefine preprocessor identifier \fIid\fR.  Please note that only macros 
defined up to this point are undefined by this command. However, these 
include the special macros defined automatically by \fIwrc\fR.
See also
.B PREPROCESSOR
below.
.TP
.I \fB\-\-use\-temp\-file\fR
Ignored for compatibility with \fIwindres\fR.
.TP
.I \fB\-v\fR, \fB\-\-verbose\fR
Turns on verbose mode (equivalent to -d 1).
.TP
.I \fB\-\-version\fR
Print version end exit.
.SH PREPROCESSOR
The preprocessor is ANSI\-C compatible with some of the extensions of 
the gcc preprocessor. 
.PP
The preprocessor recognizes these directives: #include, #define (both
simple and macro), #undef, #if, #ifdef, #ifndef, #elif, #else, #endif,
#error, #warning, #line, # (both null\- and line\-directive), #pragma
(ignored), #ident (ignored).
.PP
The preprocessor sets by default several defines:
.br
RC_INVOKED      set to 1
.br
__WRC__         Major version of wrc
.br
__WRC_MINOR__   Minor version of wrc
.br
__WRC_PATCHLEVEL__   Patch level
.PP
Win32 compilation mode also sets __WIN32__ to 1 and __FLAT__ to 1.
.PP
Special macros __FILE__, __LINE__, __TIME__ and __DATE__ are also
recognized and expand to their respective equivalent.
.SH "LANGUAGE SUPPORT"
Language, version and characteristics can be bound to all resource types that
have inline data, such as RCDATA. This is an extension to Microsoft's resource
compiler, which lacks this support completely. Only VERSIONINFO cannot have
version and characteristics attached, but languages are propagated properly if
you declare it correctly before the VERSIONINFO resource starts.
.PP
Example:
.PP
1 RCDATA DISCARDABLE
.br
LANGUAGE 1, 0
.br
VERSION 312
.br
CHARACTERISTICS 876
.br
{
.br
	1, 2, 3, 4, 5, "and whatever more data you want"
.br
	'00 01 02 03 04 05 06 07 08'
.br
}
.SH AUTHORS
.B wrc
was written by Bertho A. Stultiens and is a nearly complete rewrite of
the first wine resource compiler (1994) by Martin von Loewis.
Additional resource\-types were contributed Ulrich Czekalla and Albert
den Haan. Many cleanups by Dimitrie O. Paun in 2002-2003.
Bugfixes have been contributed by many Wine developers.
.SH BUGS
\- The preprocessor recognizes variable argument macros, but does not
expanded them correctly.
.br
\- Error reporting should be more precise, as currently the column and
line number reported are those of the next token. 
.br
\- Default memory options should differ between win16 and win32.
.PP
There is no support for:
.br
\- RT_DLGINCLUDE, RT_VXD, RT_PLUGPLAY and RT_HTML (unknown format)
.br
\- PUSHBOX control is unsupported due to lack of original functionality.
.PP
Fonts are parsed and generated, but there is no support for the
generation of the FONTDIR yet. The user must supply the FONTDIR
resource in the source to match the FONT resources.
.SH AVAILABILITY
.B wrc
is part of the Wine distribution, which is available through
WineHQ, the Wine development headquarters, at
.I http://www.winehq.org/.
.SH "SEE ALSO"
.BR wine (1)
