Better error message when an include file is not found by makedep.
Added support for .mc extension. Do not try to open *.tab.h and *.mc.rc include files.
This commit is contained in:
parent
f3613815ba
commit
d19ad3962e
|
@ -32,8 +32,6 @@ EXTRA_OBJS = y.tab.o lex.yy.o
|
||||||
|
|
||||||
all: $(PROGRAMS)
|
all: $(PROGRAMS)
|
||||||
|
|
||||||
depend: y.tab.h
|
|
||||||
|
|
||||||
@MAKE_RULES@
|
@MAKE_RULES@
|
||||||
|
|
||||||
y.tab.c y.tab.h: dbg.y
|
y.tab.c y.tab.h: dbg.y
|
||||||
|
|
|
@ -22,8 +22,6 @@ RC_SRCS = rsrc.rc
|
||||||
|
|
||||||
all: $(PROGRAMS)
|
all: $(PROGRAMS)
|
||||||
|
|
||||||
depend: y.tab.h
|
|
||||||
|
|
||||||
@MAKE_RULES@
|
@MAKE_RULES@
|
||||||
|
|
||||||
$(SPEC_SRCS:.spec=.spec.c): $(RC_SRCS:.rc=.res)
|
$(SPEC_SRCS:.spec=.spec.c): $(RC_SRCS:.rc=.res)
|
||||||
|
|
|
@ -18,6 +18,8 @@ typedef struct _INCL_FILE
|
||||||
struct _INCL_FILE *next;
|
struct _INCL_FILE *next;
|
||||||
char *name;
|
char *name;
|
||||||
char *filename;
|
char *filename;
|
||||||
|
struct _INCL_FILE *included_by; /* file that included this one */
|
||||||
|
int included_line; /* line where this file was included */
|
||||||
struct _INCL_FILE *owner;
|
struct _INCL_FILE *owner;
|
||||||
struct _INCL_FILE *files[MAX_INCLUDES];
|
struct _INCL_FILE *files[MAX_INCLUDES];
|
||||||
} INCL_FILE;
|
} INCL_FILE;
|
||||||
|
@ -77,6 +79,23 @@ static char *xstrdup( const char *str )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
* is_generated
|
||||||
|
*
|
||||||
|
* Test if a given file type is generated during the make process
|
||||||
|
*/
|
||||||
|
static int is_generated( const char *name )
|
||||||
|
{
|
||||||
|
static const char * const extensions[] = { ".tab.h", ".mc.rc" };
|
||||||
|
int i, len = strlen(name);
|
||||||
|
for (i = 0; i < sizeof(extensions)/sizeof(extensions[0]); i++)
|
||||||
|
{
|
||||||
|
if (len <= strlen(extensions[i])) continue;
|
||||||
|
if (!strcmp( name + len - strlen(extensions[i]), extensions[i] )) return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
* add_include_path
|
* add_include_path
|
||||||
*
|
*
|
||||||
|
@ -115,7 +134,7 @@ static INCL_FILE *add_src_file( const char *name )
|
||||||
*
|
*
|
||||||
* Add an include file if it doesn't already exists.
|
* Add an include file if it doesn't already exists.
|
||||||
*/
|
*/
|
||||||
static INCL_FILE *add_include( INCL_FILE *pFile, const char *name )
|
static INCL_FILE *add_include( INCL_FILE *pFile, const char *name, int line )
|
||||||
{
|
{
|
||||||
INCL_FILE **p = &firstInclude;
|
INCL_FILE **p = &firstInclude;
|
||||||
int pos;
|
int pos;
|
||||||
|
@ -134,6 +153,8 @@ static INCL_FILE *add_include( INCL_FILE *pFile, const char *name )
|
||||||
*p = xmalloc( sizeof(INCL_FILE) );
|
*p = xmalloc( sizeof(INCL_FILE) );
|
||||||
memset( *p, 0, sizeof(INCL_FILE) );
|
memset( *p, 0, sizeof(INCL_FILE) );
|
||||||
(*p)->name = xstrdup(name);
|
(*p)->name = xstrdup(name);
|
||||||
|
(*p)->included_by = pFile;
|
||||||
|
(*p)->included_line = line;
|
||||||
}
|
}
|
||||||
pFile->files[pos] = *p;
|
pFile->files[pos] = *p;
|
||||||
return *p;
|
return *p;
|
||||||
|
@ -191,6 +212,12 @@ static FILE *open_include_file( INCL_FILE *pFile )
|
||||||
if (firstPath) perror( pFile->name );
|
if (firstPath) perror( pFile->name );
|
||||||
else fprintf( stderr, "%s: %s: File not found\n",
|
else fprintf( stderr, "%s: %s: File not found\n",
|
||||||
ProgramName, pFile->name );
|
ProgramName, pFile->name );
|
||||||
|
while (pFile->included_by)
|
||||||
|
{
|
||||||
|
fprintf( stderr, " %s was first included from %s:%d\n",
|
||||||
|
pFile->name, pFile->included_by->name, pFile->included_line );
|
||||||
|
pFile = pFile->included_by;
|
||||||
|
}
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
return file;
|
return file;
|
||||||
|
@ -205,8 +232,17 @@ static void parse_file( INCL_FILE *pFile, int src )
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
char *include;
|
char *include;
|
||||||
int line = 0;
|
int line = 0;
|
||||||
|
FILE *file;
|
||||||
|
|
||||||
|
if (is_generated( pFile->name ))
|
||||||
|
{
|
||||||
|
/* file is generated during make, don't try to open it */
|
||||||
|
pFile->filename = xstrdup( pFile->name );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
file = src ? open_src_file( pFile ) : open_include_file( pFile );
|
||||||
|
|
||||||
FILE *file = src ? open_src_file( pFile ) : open_include_file( pFile );
|
|
||||||
while (fgets( buffer, sizeof(buffer)-1, file ))
|
while (fgets( buffer, sizeof(buffer)-1, file ))
|
||||||
{
|
{
|
||||||
char *p = buffer;
|
char *p = buffer;
|
||||||
|
@ -227,7 +263,7 @@ static void parse_file( INCL_FILE *pFile, int src )
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
*p = 0;
|
*p = 0;
|
||||||
add_include( pFile, include );
|
add_include( pFile, include, line );
|
||||||
}
|
}
|
||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
|
@ -263,6 +299,7 @@ static void output_src( FILE *file, INCL_FILE *pFile, int *column )
|
||||||
{
|
{
|
||||||
char *obj = xstrdup( pFile->name );
|
char *obj = xstrdup( pFile->name );
|
||||||
char *ext = strrchr( obj, '.' );
|
char *ext = strrchr( obj, '.' );
|
||||||
|
if (ext && strchr( ext, '/' )) ext = NULL;
|
||||||
if (ext)
|
if (ext)
|
||||||
{
|
{
|
||||||
*ext++ = 0;
|
*ext++ = 0;
|
||||||
|
@ -278,9 +315,9 @@ static void output_src( FILE *file, INCL_FILE *pFile, int *column )
|
||||||
{
|
{
|
||||||
*column += fprintf( file, "%s.res: %s", obj, pFile->filename );
|
*column += fprintf( file, "%s.res: %s", obj, pFile->filename );
|
||||||
}
|
}
|
||||||
else if (!strcmp( ext, "rc16" )) /* Win16 resource file */
|
else if (!strcmp( ext, "mc" )) /* message file */
|
||||||
{
|
{
|
||||||
*column += fprintf( file, "%s.s: %s", obj, pFile->filename );
|
*column += fprintf( file, "%s.mc.rc: %s", obj, pFile->filename );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,7 +20,7 @@ EXTRA_OBJS = y.tab.o
|
||||||
|
|
||||||
all: $(PROGRAMS)
|
all: $(PROGRAMS)
|
||||||
|
|
||||||
depend mcl.o: y.tab.h
|
mcl.o: y.tab.h
|
||||||
|
|
||||||
@MAKE_RULES@
|
@MAKE_RULES@
|
||||||
|
|
||||||
|
|
|
@ -25,8 +25,6 @@ EXTRA_OBJS = y.tab.o lex.yy.o
|
||||||
|
|
||||||
all: $(PROGRAMS)
|
all: $(PROGRAMS)
|
||||||
|
|
||||||
depend: y.tab.h ppy.tab.h
|
|
||||||
|
|
||||||
@MAKE_RULES@
|
@MAKE_RULES@
|
||||||
|
|
||||||
wrc: $(OBJS) $(TOPOBJDIR)/libwine_unicode.$(LIBEXT)
|
wrc: $(OBJS) $(TOPOBJDIR)/libwine_unicode.$(LIBEXT)
|
||||||
|
|
Loading…
Reference in New Issue