makedep: Add support for magic comments in .rc files so we can generate proper dependencies for them.
diff --git a/dlls/atl/Makefile.in b/dlls/atl/Makefile.in
index 4331990..d419a5d 100644
--- a/dlls/atl/Makefile.in
+++ b/dlls/atl/Makefile.in
@@ -19,6 +19,4 @@
@MAKE_DLL_RULES@
-rsrc.res: atl.rgs
-
@DEPENDENCIES@ # everything below this line is overwritten by make depend
diff --git a/dlls/atl/rsrc.rc b/dlls/atl/rsrc.rc
index 59cfb60..c559533 100644
--- a/dlls/atl/rsrc.rc
+++ b/dlls/atl/rsrc.rc
@@ -16,4 +16,5 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+/* @makedep: atl.rgs */
101 REGISTRY atl.rgs
diff --git a/dlls/itss/Makefile.in b/dlls/itss/Makefile.in
index 612e419..ccde6c2 100644
--- a/dlls/itss/Makefile.in
+++ b/dlls/itss/Makefile.in
@@ -19,6 +19,4 @@
@MAKE_DLL_RULES@
-rsrc.res: itss.inf
-
@DEPENDENCIES@ # everything below this line is overwritten by make depend
diff --git a/dlls/itss/rsrc.rc b/dlls/itss/rsrc.rc
index b9f961d..2b0edd8 100644
--- a/dlls/itss/rsrc.rc
+++ b/dlls/itss/rsrc.rc
@@ -16,4 +16,5 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+/* @makedep: itss.inf */
REGINST REGINST itss.inf
diff --git a/dlls/mshtml/Makefile.in b/dlls/mshtml/Makefile.in
index 0e8f988..919e5d0 100644
--- a/dlls/mshtml/Makefile.in
+++ b/dlls/mshtml/Makefile.in
@@ -49,6 +49,4 @@
@MAKE_DLL_RULES@
-rsrc.res: mshtml.inf blank.htm
-
@DEPENDENCIES@ # everything below this line is overwritten by make depend
diff --git a/dlls/mshtml/rsrc.rc b/dlls/mshtml/rsrc.rc
index 3e3daae..bbf7a81 100644
--- a/dlls/mshtml/rsrc.rc
+++ b/dlls/mshtml/rsrc.rc
@@ -48,6 +48,8 @@
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+/* @makedep: mshtml.inf */
REGINST REGINST mshtml.inf
+/* @makedep: blank.htm */
blank.htm HTML "blank.htm"
diff --git a/dlls/urlmon/Makefile.in b/dlls/urlmon/Makefile.in
index a19a78a..be3b6a4 100644
--- a/dlls/urlmon/Makefile.in
+++ b/dlls/urlmon/Makefile.in
@@ -25,6 +25,4 @@
@MAKE_DLL_RULES@
-rsrc.res: urlmon.inf
-
@DEPENDENCIES@ # everything below this line is overwritten by make depend
diff --git a/dlls/urlmon/rsrc.rc b/dlls/urlmon/rsrc.rc
index 2fa1a30..d71b2fa 100644
--- a/dlls/urlmon/rsrc.rc
+++ b/dlls/urlmon/rsrc.rc
@@ -16,6 +16,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+/* @makedep: urlmon.inf */
REGINST REGINST urlmon.inf
#include "version.rc"
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);
}