diff --git a/Make.rules.in b/Make.rules.in index 303f2d69bf3..0912a4ab2e6 100644 --- a/Make.rules.in +++ b/Make.rules.in @@ -66,7 +66,7 @@ MAKEDEP = $(TOOLSDIR)/tools/makedep WRC = $(TOOLSDIR)/tools/wrc/wrc WMC = $(TOOLSDIR)/tools/wmc/wmc WIDL = $(TOOLSDIR)/tools/widl/widl -WRCFLAGS = -m --nostdinc $(EXTRAWRCFLAGS) +WRCFLAGS = --nostdinc $(EXTRAWRCFLAGS) LDPATH = @LDPATH@ DLLDIR = $(TOPOBJDIR)/dlls LIBPORT = -L$(TOPOBJDIR)/libs/port -lwine_port diff --git a/tools/wrc/parser.y b/tools/wrc/parser.y index f5d847d52e1..1103e864968 100644 --- a/tools/wrc/parser.y +++ b/tools/wrc/parser.y @@ -2994,9 +2994,5 @@ static int rsrcid_to_token(int lookahead) return lookahead; } - if(remap) - return token; - else - yywarning("Usertype uses reserved type ID %d, which is used by %s", yylval.num, type); - return lookahead; + return token; } diff --git a/tools/wrc/wrc.c b/tools/wrc/wrc.c index cc9fb2096f2..04045084396 100644 --- a/tools/wrc/wrc.c +++ b/tools/wrc/wrc.c @@ -56,37 +56,39 @@ static char usage[] = "Usage: wrc [options...] [infile[.rc|.res]] [outfile]\n" - " -B x Set output byte-order x={n[ative], l[ittle], b[ig]}\n" - " (win32 only; default is " ENDIAN "-endian)\n" - " -d n Set debug level to 'n'\n" " -D id[=val] Define preprocessor identifier id=val\n" " -E Preprocess only\n" " -F target Ignored for compatibility with windres\n" - " -h Prints this summary.\n" - " -i file The name of the input file.\n" + " -h Prints this summary\n" + " -i file The name of the input file\n" " -I path Set include search dir to path (multiple -I allowed)\n" " -J format The input format (either `rc' or `rc16')\n" " -l lan Set default language to lan (default is neutral {0, 0})\n" - " -m Do not remap numerical resource IDs\n" " -o file Output to file (default is infile.res)\n" - " -O format The output format (either `res' or `res16`).\n" - " -v Enable verbose mode.\n" - " -W Enable pedantic warnings\n" + " -O format The output format (either `res' or `res16`)\n" + " -r Ignored for compatibility with rc\n" + " -U id Undefine preprocessor identifier id\n" + " -v Enable verbose mode\n" "The following long options are supported:\n" - " --input Synonym for -i.\n" - " --input-format Synonym for -J.\n" - " --output Synonym for -o.\n" - " --output-format Synonym for -O.\n" - " --target Synonym for -F.\n" - " --preprocessor Specifies the preprocessor to use, including arguments.\n" - " --include-dir Synonym for -I.\n" - " --define Synonym for -D.\n" - " --language Synonym for -l.\n" - " --nostdinc Disables searching the standard include path.\n" - " --use-temp-file Ignored for compatibility with windres.\n" - " --no-use-temp-file Ignored for compatibility with windres.\n" - " --help Synonym for -h.\n" - " --version Print version and exit.\n" + " --debug=nn Set debug level to 'nn'\n" + " --define Synonym for -D\n" + " --endianess=e Set output byte-order e={n[ative], l[ittle], b[ig]}\n" + " (win32 only; default is " ENDIAN "-endian)\n" + " --help Synonym for -h\n" + " --include-dir Synonym for -I\n" + " --input Synonym for -i\n" + " --input-format Synonym for -J\n" + " --language Synonym for -l\n" + " --no-use-temp-file Ignored for compatibility with windres\n" + " --nostdinc Disables searching the standard include path\n" + " --output Synonym for -o\n" + " --output-format Synonym for -O\n" + " --pedantic Enable pedantic warnings\n" + " --preprocessor Specifies the preprocessor to use, including arguments\n" + " --target Synonym for -F\n" + " --undefine Synonym for -U\n" + " --use-temp-file Ignored for compatibility with windres\n" + " --version Print version and exit\n" "Input is taken from stdin if no sourcefile specified.\n" "Debug level 'n' is a bitmask with following meaning:\n" " * 0x01 Tell which resource is parsed (verbose mode)\n" @@ -155,11 +157,6 @@ int preprocess_only = 0; */ int no_preprocess = 0; -/* - * Cleared when _not_ to remap resource types (-m option) - */ -int remap = 1; - char *output_name; /* The name given by the -o option */ char *input_name; /* The name given on the command-line */ char *temp_name; /* Temporary file for preprocess pipe */ @@ -177,21 +174,25 @@ static void rm_tempfile(void); static void segvhandler(int sig); static const char* short_options = - "B:d:D:EF:hi:I:J:l:mo:O:vW"; + "D:EF:hi:I:J:l:o:O:rU:v"; static struct option long_options[] = { + { "debug", 1, 0, 6 }, + { "define", 1, 0, 'D' }, + { "endianess", 1, 0, 7 }, + { "help", 0, 0, 'h' }, + { "include-dir", 1, 0, 'I' }, { "input", 1, 0, 'i' }, { "input-format", 1, 0, 'J' }, + { "language", 1, 0, 'l' }, + { "no-use-temp-file", 0, 0, 3 }, + { "nostdinc", 0, 0, 1 }, { "output", 1, 0, 'o' }, { "output-format", 1, 0, 'O' }, - { "target", 1, 0, 'F' }, + { "pendantic", 0, 0, 8 }, { "preprocessor", 1, 0, 4 }, - { "include-dir", 1, 0, 'I' }, - { "define", 1, 0, 'D' }, - { "language", 1, 0, 'l' }, - { "nostdinc", 0, 0, 1 }, + { "target", 1, 0, 'F' }, + { "undefine", 1, 0, 'U' }, { "use-temp-file", 0, 0, 2 }, - { "no-use-temp-file", 0, 0, 3 }, - { "help", 0, 0, 'h' }, { "version", 0, 0, 5 }, { 0, 0, 0, 0 } }; @@ -212,6 +213,16 @@ int main(int argc,char *argv[]) now = time(NULL); + /* Set the default defined stuff */ + wpp_add_cmdline_define("__WRC__=" WRC_EXP_STRINGIZE(WRC_MAJOR_VERSION)); + wpp_add_cmdline_define("__WRC_MINOR__=" WRC_EXP_STRINGIZE(WRC_MINOR_VERSION)); + wpp_add_cmdline_define("__WRC_MICRO__=" WRC_EXP_STRINGIZE(WRC_MICRO_VERSION)); + wpp_add_cmdline_define("__WRC_PATCH__=" WRC_EXP_STRINGIZE(WRC_MICRO_VERSION)); + + wpp_add_cmdline_define("RC_INVOKED=1"); + wpp_add_cmdline_define("__WIN32__=1"); + wpp_add_cmdline_define("__FLAT__=1"); + /* First rebuild the commandline to put in destination */ /* Could be done through env[], but not all OS-es support it */ cmdlen = 4; /* for "wrc " */ @@ -247,7 +258,10 @@ int main(int argc,char *argv[]) printf(version_string); exit(0); break; - case 'B': + case 6: + debuglevel = strtol(optarg, NULL, 0); + break; + case 7: switch(optarg[0]) { case 'n': @@ -267,8 +281,9 @@ int main(int argc,char *argv[]) lose++; } break; - case 'd': - debuglevel = strtol(optarg, NULL, 0); + case 8: + pedantic = 1; + wpp_set_pedantic(1); break; case 'D': wpp_add_cmdline_define(optarg); @@ -302,24 +317,28 @@ int main(int argc,char *argv[]) currentlanguage = new_language(PRIMARYLANGID(lan), SUBLANGID(lan)); } break; - case 'm': - remap = 0; - break; case 'o': if (!output_name) output_name = strdup(optarg); else error("Too many output files.\n"); break; case 'O': - if (strcmp(optarg, "res16") == 0) win32 = 0; + if (strcmp(optarg, "res16") == 0) + { + win32 = 0; + wpp_del_define("__WIN32__"); + wpp_del_define("__FLAT__"); + } else if (strcmp(optarg, "res")) warning("Output format %s not supported.", optarg); break; + case 'r': + /* ignored for compatibility with rc */ + break; + case 'U': + wpp_del_define(optarg); + break; case 'v': debuglevel = DEBUGLEVEL_CHAT; break; - case 'W': - pedantic = 1; - wpp_set_pedantic(1); - break; default: lose++; break; @@ -367,20 +386,6 @@ int main(int argc,char *argv[]) (debuglevel & DEBUGLEVEL_PPTRACE) != 0, (debuglevel & DEBUGLEVEL_PPMSG) != 0 ); - /* Set the default defined stuff */ - wpp_add_cmdline_define("__WRC__=" WRC_EXP_STRINGIZE(WRC_MAJOR_VERSION)); - wpp_add_cmdline_define("__WRC_MINOR__=" WRC_EXP_STRINGIZE(WRC_MINOR_VERSION)); - wpp_add_cmdline_define("__WRC_MICRO__=" WRC_EXP_STRINGIZE(WRC_MICRO_VERSION)); - wpp_add_cmdline_define("__WRC_PATCH__=" WRC_EXP_STRINGIZE(WRC_MICRO_VERSION)); - - wpp_add_cmdline_define("RC_INVOKED=1"); - - if(win32) - { - wpp_add_cmdline_define("__WIN32__=1"); - wpp_add_cmdline_define("__FLAT__=1"); - } - /* Check if the user set a language, else set default */ if(!currentlanguage) currentlanguage = new_language(0, 0); diff --git a/tools/wrc/wrc.h b/tools/wrc/wrc.h index a5e8c308de9..ec8db779348 100644 --- a/tools/wrc/wrc.h +++ b/tools/wrc/wrc.h @@ -56,7 +56,6 @@ extern int pedantic; extern int byteorder; extern int preprocess_only; extern int no_preprocess; -extern int remap; extern char *output_name; extern char *input_name; diff --git a/tools/wrc/wrc.man b/tools/wrc/wrc.man index 4eb8ec323cf..27229794e75 100644 --- a/tools/wrc/wrc.man +++ b/tools/wrc/wrc.man @@ -20,17 +20,17 @@ specified with \fI-o\fR, then \fBwrc\fR will write the output to no inputfile was given. .SH OPTIONS .TP -.I \fB\-B\fR \fIx\fR -Win32 only; set output byte\-ordering, where \fIx\fR is one of n[ative], +.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 \fIn\fR -Set debug level to \fIn\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\-D\fR, \fB\-\-define\fR=\fIid[=val]\fR Define preprocessor identifier \fIid\fR to (optionally) value \fIval\fR. See also @@ -43,7 +43,7 @@ outputfile was selected. The output is compatible with what gcc would generate. .TP .I \fB\-F\fR, \fB\-\-target\fR -Ignored for compatibility with windres. +Ignored for compatibility with \fIwindres\fR. .TP .I \fB\-h\fR, \fB\-\-help\fR Prints a summary message and exits. @@ -72,23 +72,12 @@ input to 'rc16' disables the recognition of win32 keywords. Set default language to \fIlan\fR. Default is the neutral language 0 (i.e. "LANGUAGE 0, 0"). .TP -.I \fB\-m\fR -Do not remap numerical resource type-IDs onto standard resources. This will -cause all numerical resource type\-IDs to be treated as user\-type resources -and will not be checked nor byte\-reversed. Without this option, resources -with, for example, type\-ID 2 are parsed as bitmaps and other type\-IDs will -map onto their respective standard type. -Use this option with caution because it can create problems when compiling for, -for example, big\-endian platforms. The \fI\-m\fR option is usefull for -source\-files that contain overlapping type\-IDs, or when the format of the -resource is not 100% compliant. -.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 windres. +Ignored for compatibility with \fIwindres\fR. .TP .I \fB\-o\fR, \fB\-\-output\fR=\fIfile\fR Write output to \fIfile\fR. Default is \fBinputfile.res\fR @@ -99,23 +88,34 @@ from standard input. 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 windres. +Ignored for compatibility with \fIwindres\fR. .TP .I \fB\-v\fR Turns on verbose mode (equivalent to -d 1). .TP .I \fB\-\-version\fR Print version end exit. -.TP -.I \fB\-W\fR -Enable pedantic warnings. Notably redefinition of #define statements can -be discovered with this option. .SH PREPROCESSOR The preprocessor is ANSI\-C compatible with some of the extensions of the gcc preprocessor.