NAME
wrc - Wine Resource Compiler
SYNOPSIS
wrc [options] [inputfile]
DESCRIPTION
wrc compiles resources from
inputfile into win16 and win32 compatible binary format.
The source-file is preprocessed with a builtin ANSI-C compatible
preprocessor before the resources are compiled. See
PREPROCESSOR below.
wrc takes only one inputfile as argument. The
resources are read from standard input if no inputfile is given. If
the output file is not specified with -o, then wrc
will write the output to inputfile.res with .rc
stripped, or to wrc.tab.res if no inputfile was given.
OPTIONS
- --debug=nn
- Set debug level to nn. 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.
- --endianess=e
- Win32 only; set output byte-ordering, where e 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 wrc
was built. You can see the native ordering by typing wrc -h.
- -D, --define=id[=val]
- Define preprocessor identifier id to (optionally) value
val. See also PREPROCESSOR below.
- -E
- Preprocess only. The output is written to standard output if no
outputfile was selected. The output is compatible with what gcc
would generate.
- -F, --target
- Ignored for compatibility with windres.
- -h, --help
- Prints a summary message and exits.
- -i, --input=file
- The name of the input file. If this option is not used, then
wrc will use the first non-option argument as the input file
name. If there are no non-option arguments, then wrc will
read from standard input.
- -I, --include-dir=file
- Add path to include search directories. Path may
contain multiple directories, separated with ':'. It is allowed to
specify -I multiple times. Include files are searched in the
order in with the -I options were specified.
The search is compatible with gcc, in which '<>' quoted
filenames are searched exclusively via the -I 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.
- -J, --input-format=format
- Sets the input format. Valid options are 'rc' or 'rc16'.
Setting the input to 'rc16' disables the recognition of win32
keywords.
- -l, --language=lan
- Set default language to lan. Default is the neutral
language 0 (i.e. "LANGUAGE 0, 0").
- --nostdinc
- Do not search the standard include path, look for include files
only in the directories explicitly specified with the -I
option.
- --no-use-temp-file
- Ignored for compatibility with windres.
- -o, -fo, --output=file
- Write output to file. Default is inputfile.res
with .rc stripped or wrc.tab.res if input is read
from standard input.
- -O, --output-format=format
- Sets the output format. The supported formats are 'res' and
'res16'. If this option is not specified, format defaults to 'res'.
- --pedantic
- Enable pedantic warnings. Notably redefinition of #define
statements can be discovered with this option.
- -r
- Ignored for compatibility with rc.
- --preprocessor=program
- This option may be used to specify the preprocessor to use,
including any leading arguments. If not specified, wrc uses
its builtin processor. To disable preprocessing, use
--preprocessor=cat.
- -U, --undefine=id
- Undefine preprocessor identifier id. Please note that
only macros defined up to this point are undefined by this command.
However, these include the special macros defined automatically by
wrc. See also PREPROCESSOR below.
- --use-temp-file
- Ignored for compatibility with windres.
- -v, --verbose
- Turns on verbose mode (equivalent to -d 1).
- --version
- Print version end exit.
PREPROCESSOR
The preprocessor is ANSI-C compatible with
some of the extensions of the gcc preprocessor.
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).
The preprocessor sets by default several defines:
RC_INVOKED set to 1
__WRC__ Major version of wrc
__WRC_MINOR__ Minor version of wrc
__WRC_PATCHLEVEL__ Patch level
Win32 compilation mode also sets __WIN32__ to 1 and __FLAT__ to
1.
Special macros __FILE__, __LINE__, __TIME__ and __DATE__ are
also recognized and expand to their respective equivalent.
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.
Example:
1 RCDATA DISCARDABLE
LANGUAGE 1, 0
VERSION 312
CHARACTERISTICS 876
{
1, 2, 3, 4, 5,
"and whatever more data you want"
'00 01 02 03 04
05 06 07 08'
}
AUTHORS
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.
BUGS
- The preprocessor recognizes variable argument
macros, but does not expanded them correctly.
- Error reporting should be more precise, as currently the column
and line number reported are those of the next token.
- Default memory options should differ between win16 and win32.
There is no support for:
- RT_DLGINCLUDE, RT_VXD, RT_PLUGPLAY and RT_HTML (unknown
format)
- PUSHBOX control is unsupported due to lack of original
functionality.
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.
AVAILABILITY
wrc is part of the Wine distribution,
which is available through WineHQ, the Wine development
headquarters, at
SEE ALSO
wine(1)