[patch binutils]: Add --preprocessor-arg option to windres tool

Kai Tietz ktietz70@googlemail.com
Fri Apr 8 19:44:00 GMT 2011


Hello,

This patch adds feature to windres tool, so that user can pass via
--preprocessor-arg
additional options to the preprocessor.  This feature is necessary to
have a way to
invoke windres for multilib build so, that the bitness (-m32/-m64) can
be passed to
preprocessor.

ChangLog

2011-04-08  Kai Tietz

	* windres.c (usage): Add new --preprocessor-arg option.
	(option_values): Add new OPTION_PREPROCESSOR_ARG enumerator.
	(option long_options): Add preprocessor-arg option.
	(main): Handle it.

Tested for x86_64-w64-mingw32 and i686-w64-mingw32. Ok for apply?

Regards,
Kai
-------------- next part --------------
Index: src/binutils/windres.c
===================================================================
--- src.orig/binutils/windres.c	2010-06-19 10:31:05.000000000 +0200
+++ src/binutils/windres.c	2011-04-08 21:29:23.387259400 +0200
@@ -665,6 +665,7 @@ usage (FILE *stream, int status)
   -O --output-format=<format>  Specify output format\n\
   -F --target=<target>         Specify COFF target\n\
      --preprocessor=<program>  Program to use to preprocess rc file\n\
+     --preprocessor-arg=<arg>  Additional preprocessor argument\n\
   -I --include-dir=<dir>       Include directory when preprocessing rc file\n\
   -D --define <sym>[=<val>]    Define SYM when preprocessing rc file\n\
   -U --undefine <sym>          Undefine SYM when preprocessing rc file\n\
@@ -734,7 +735,8 @@ enum option_values
   OPTION_USE_TEMP_FILE,
   OPTION_NO_USE_TEMP_FILE,
   OPTION_YYDEBUG,
-  OPTION_INCLUDE_DIR
+  OPTION_INCLUDE_DIR,
+  OPTION_PREPROCESSOR_ARG
 };
 
 static const struct option long_options[] =
@@ -745,6 +747,7 @@ static const struct option long_options[
   {"output-format", required_argument, 0, 'O'},
   {"target", required_argument, 0, 'F'},
   {"preprocessor", required_argument, 0, OPTION_PREPROCESSOR},
+  {"preprocessor-arg", required_argument, 0, OPTION_PREPROCESSOR_ARG},
   {"include-dir", required_argument, 0, OPTION_INCLUDE_DIR},
   {"define", required_argument, 0, 'D'},
   {"undefine", required_argument, 0, 'U'},
@@ -888,6 +891,23 @@ main (int argc, char **argv)
 	case OPTION_PREPROCESSOR:
 	  preprocessor = optarg;
 	  break;
+	case OPTION_PREPROCESSOR_ARG:
+	  if (preprocargs == NULL)
+	    {
+	      quotedarg = quot (optarg);
+	      preprocargs = xstrdup (quotedarg);
+	    }
+	  else
+	    {
+	      char *n;
+
+	      quotedarg = quot (optarg);
+	      n = xmalloc (strlen (preprocargs) + strlen (quotedarg) + 2);
+	      sprintf (n, "%s %s", preprocargs, quotedarg);
+	      free (preprocargs);
+	      preprocargs = n;
+	    }
+	  break;
 
 	case 'D':
 	case 'U':


More information about the Binutils mailing list