makedep: Add support for magic comments in .rc files so we can generate proper dependencies for them.
diff --git a/tools/makedep.c b/tools/makedep.c
index 759d3bd..1d070b2 100644
--- a/tools/makedep.c
+++ b/tools/makedep.c
@@ -629,6 +629,63 @@
/*******************************************************************
+ * parse_rc_file
+ */
+static void parse_rc_file( INCL_FILE *pFile, FILE *file )
+{
+ char *buffer, *include;
+
+ input_line = 0;
+ while ((buffer = get_line( file )))
+ {
+ char quote;
+ char *p = buffer;
+ while (*p && isspace(*p)) p++;
+
+ if (p[0] == '/' && p[1] == '*') /* check for magic makedep comment */
+ {
+ p += 2;
+ while (*p && isspace(*p)) p++;
+ if (strncmp( p, "@makedep:", 9 )) continue;
+ p += 9;
+ while (*p && isspace(*p)) p++;
+ quote = '"';
+ if (*p == quote)
+ {
+ include = ++p;
+ while (*p && *p != quote) p++;
+ }
+ else
+ {
+ include = p;
+ while (*p && !isspace(*p) && *p != '*') p++;
+ }
+ if (!*p)
+ fatal_error( "%s:%d: Malformed makedep comment\n", pFile->filename, input_line );
+ *p = 0;
+ }
+ else /* check for #include */
+ {
+ if (*p++ != '#') continue;
+ while (*p && isspace(*p)) p++;
+ if (strncmp( p, "include", 7 )) continue;
+ p += 7;
+ while (*p && isspace(*p)) p++;
+ if (*p != '\"' && *p != '<' ) continue;
+ quote = *p++;
+ if (quote == '<') quote = '>';
+ include = p;
+ while (*p && (*p != quote)) p++;
+ if (!*p) fatal_error( "%s:%d: Malformed #include directive\n",
+ pFile->filename, input_line );
+ *p = 0;
+ }
+ add_include( pFile, include, input_line, (quote == '>') );
+ }
+}
+
+
+/*******************************************************************
* parse_generated_idl
*/
static void parse_generated_idl( INCL_FILE *source )
@@ -688,8 +745,13 @@
parse_idl_file( pFile, file, 1 );
else if (strendswith( pFile->filename, ".idl" ))
parse_idl_file( pFile, file, 0 );
- else
+ else if (strendswith( pFile->filename, ".c" ) ||
+ strendswith( pFile->filename, ".h" ) ||
+ strendswith( pFile->filename, ".l" ) ||
+ strendswith( pFile->filename, ".y" ))
parse_c_file( pFile, file );
+ else if (strendswith( pFile->filename, ".rc" ))
+ parse_rc_file( pFile, file );
fclose(file);
}