* windres.c: add verbose option
(main): process verbose option * resrc.c (look_for_default): new. Look for the default preprocessor in a given location. (read_rc_file): for foo/bar-windres, look for foo/bar-gcc, foo/gcc (in case of foo/windres), and then gcc (the old default).
This commit is contained in:
parent
fa0e42e457
commit
751d21b5b9
5 changed files with 141 additions and 11 deletions
|
@ -1,3 +1,12 @@
|
|||
1999-05-17 DJ Delorie <dj@cygnus.com>
|
||||
|
||||
* windres.c: add verbose option
|
||||
(main): process verbose option
|
||||
* resrc.c (look_for_default): new. Look for the default
|
||||
preprocessor in a given location.
|
||||
(read_rc_file): for foo/bar-windres, look for foo/bar-gcc,
|
||||
foo/gcc (in case of foo/windres), and then gcc (the old default).
|
||||
|
||||
1999-05-16 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* dlltool.c (deduce_name): New function: Deduce name of program to
|
||||
|
|
|
@ -2048,10 +2048,15 @@ Specify an include directory to use when reading an @code{rc} file.
|
|||
option. @code{windres} will also search this directory when looking for
|
||||
files named in the @code{rc} file.
|
||||
|
||||
@item -D @var{target}
|
||||
@item --define @var{sym[=val]}
|
||||
Specify a @code{-D} option to pass to the preprocessor when reading an
|
||||
@code{rc} file.
|
||||
|
||||
@item -v
|
||||
Enable verbose mode. This tells you what the preprocessor is if you
|
||||
didn't specify one.
|
||||
|
||||
@item --language @var{val}
|
||||
Specify the default language to use when reading an @code{rc} file.
|
||||
@var{val} should be a hexadecimal language code. The low eight bits are
|
||||
|
|
109
binutils/resrc.c
109
binutils/resrc.c
|
@ -120,6 +120,52 @@ static void get_data
|
|||
PARAMS ((FILE *, unsigned char *, unsigned long, const char *));
|
||||
static void define_fontdirs PARAMS ((void));
|
||||
|
||||
/* look for the preprocessor program */
|
||||
|
||||
FILE *
|
||||
look_for_default (cmd, prefix, end_prefix, preprocargs, filename)
|
||||
char *cmd;
|
||||
char *prefix;
|
||||
int end_prefix;
|
||||
char *preprocargs;
|
||||
char *filename;
|
||||
{
|
||||
char *path = getenv ("PATH");
|
||||
char *space;
|
||||
int found;
|
||||
struct stat s;
|
||||
|
||||
strcpy (cmd, prefix);
|
||||
|
||||
sprintf (cmd+end_prefix, "%s", DEFAULT_PREPROCESSOR);
|
||||
space = strchr (cmd+end_prefix, ' ');
|
||||
if (space)
|
||||
*space = 0;
|
||||
|
||||
if (strchr (cmd, '/'))
|
||||
{
|
||||
found = stat (cmd, &s);
|
||||
|
||||
if (found < 0)
|
||||
{
|
||||
if (verbose)
|
||||
fprintf (stderr, "Tried `%s'\n", cmd);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
strcpy (cmd, prefix);
|
||||
|
||||
sprintf (cmd+end_prefix, "%s %s %s",
|
||||
DEFAULT_PREPROCESSOR, preprocargs, filename);
|
||||
|
||||
if (verbose)
|
||||
fprintf (stderr, "Using `%s'\n", cmd);
|
||||
|
||||
cpp_pipe = popen (cmd, FOPEN_RT);
|
||||
return cpp_pipe;
|
||||
}
|
||||
|
||||
/* Read an rc file. */
|
||||
|
||||
struct res_directory *
|
||||
|
@ -131,14 +177,13 @@ read_rc_file (filename, preprocessor, preprocargs, language)
|
|||
{
|
||||
char *cmd;
|
||||
|
||||
if (preprocessor == NULL)
|
||||
preprocessor = DEFAULT_PREPROCESSOR;
|
||||
|
||||
if (preprocargs == NULL)
|
||||
preprocargs = "";
|
||||
if (filename == NULL)
|
||||
filename = "-";
|
||||
|
||||
if (preprocessor)
|
||||
{
|
||||
cmd = xmalloc (strlen (preprocessor)
|
||||
+ strlen (preprocargs)
|
||||
+ strlen (filename)
|
||||
|
@ -146,6 +191,64 @@ read_rc_file (filename, preprocessor, preprocargs, language)
|
|||
sprintf (cmd, "%s %s %s", preprocessor, preprocargs, filename);
|
||||
|
||||
cpp_pipe = popen (cmd, FOPEN_RT);
|
||||
}
|
||||
else
|
||||
{
|
||||
char *dash, *slash, *cp;
|
||||
|
||||
preprocessor = DEFAULT_PREPROCESSOR;
|
||||
|
||||
cmd = xmalloc (strlen (program_name)
|
||||
+ strlen (preprocessor)
|
||||
+ strlen (preprocargs)
|
||||
+ strlen (filename)
|
||||
+ 10);
|
||||
|
||||
|
||||
dash = slash = 0;
|
||||
for (cp=program_name; *cp; cp++)
|
||||
{
|
||||
if (*cp == '-')
|
||||
dash = cp;
|
||||
if (
|
||||
#if defined(__DJGPP__) || defined (__CYGWIN__) || defined(__WIN32__)
|
||||
*cp == ':' || *cp == '\\' ||
|
||||
#endif
|
||||
*cp == '/')
|
||||
{
|
||||
slash = cp;
|
||||
dash = 0;
|
||||
}
|
||||
}
|
||||
|
||||
cpp_pipe = 0;
|
||||
|
||||
if (dash)
|
||||
{
|
||||
/* First, try looking for a prefixed gcc in the windres
|
||||
directory, with the same prefix as windres */
|
||||
|
||||
cpp_pipe = look_for_default (cmd, program_name, dash-program_name+1,
|
||||
preprocargs, filename);
|
||||
}
|
||||
|
||||
if (slash && !cpp_pipe)
|
||||
{
|
||||
/* Next, try looking for a gcc in the same directory as
|
||||
that windres */
|
||||
|
||||
cpp_pipe = look_for_default (cmd, program_name, slash-program_name+1,
|
||||
preprocargs, filename);
|
||||
}
|
||||
|
||||
if (!cpp_pipe)
|
||||
{
|
||||
/* Sigh, try the default */
|
||||
|
||||
cpp_pipe = look_for_default (cmd, "", 0, preprocargs, filename);
|
||||
}
|
||||
|
||||
}
|
||||
if (cpp_pipe == NULL)
|
||||
fatal (_("can't popen `%s': %s"), cmd, strerror (errno));
|
||||
free (cmd);
|
||||
|
|
|
@ -46,6 +46,10 @@
|
|||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
|
||||
/* used by resrc.c at least */
|
||||
|
||||
int verbose = 0;
|
||||
|
||||
/* An enumeration of format types. */
|
||||
|
||||
enum res_format
|
||||
|
@ -122,6 +126,7 @@ static const struct option long_options[] =
|
|||
{"output-format", required_argument, 0, 'O'},
|
||||
{"preprocessor", required_argument, 0, OPTION_PREPROCESSOR},
|
||||
{"target", required_argument, 0, 'F'},
|
||||
{"verbose", no_argument, 0, 'v'},
|
||||
{"version", no_argument, 0, OPTION_VERSION},
|
||||
{"yydebug", no_argument, 0, OPTION_YYDEBUG},
|
||||
{0, no_argument, 0, 0}
|
||||
|
@ -705,7 +710,9 @@ Options:\n\
|
|||
-F TARGET, --target TARGET Specify COFF target\n\
|
||||
--preprocessor PROGRAM Program to use to preprocess rc file\n\
|
||||
--include-dir DIR Include directory when preprocessing rc file\n\
|
||||
--define SYM[=VAL] Define SYM when preprocessing rc file\n\
|
||||
-DSYM[=VAL], --define SYM[=VAL]\n\
|
||||
Define SYM when preprocessing rc file\n\
|
||||
-v Verbose - tells you what it's doing\n\n
|
||||
--language VAL Set language when reading rc file\n"));
|
||||
#ifdef YYDEBUG
|
||||
fprintf (stream, _("\
|
||||
|
@ -794,7 +801,7 @@ main (argc, argv)
|
|||
preprocargs = NULL;
|
||||
language = -1;
|
||||
|
||||
while ((c = getopt_long (argc, argv, "i:o:I:O:F:D:", long_options,
|
||||
while ((c = getopt_long (argc, argv, "i:o:I:O:F:D:v", long_options,
|
||||
(int *) 0)) != EOF)
|
||||
{
|
||||
switch (c)
|
||||
|
@ -843,6 +850,10 @@ main (argc, argv)
|
|||
}
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
verbose ++;
|
||||
break;
|
||||
|
||||
case OPTION_INCLUDE_DIR:
|
||||
if (preprocargs == NULL)
|
||||
{
|
||||
|
|
|
@ -742,6 +742,8 @@ struct bindata
|
|||
unsigned char *data;
|
||||
};
|
||||
|
||||
extern int verbose;
|
||||
|
||||
/* Function declarations. */
|
||||
|
||||
extern struct res_directory *read_rc_file
|
||||
|
|
Loading…
Reference in a new issue