--- ccache.c	Mon Sep 13 11:38:30 2004
+++ ccache.c	Thu Jun 21 22:17:32 2007
@@ -627,6 +627,13 @@ static void process_args(int argc, char 
 	int found_S_opt = 0;
 	struct stat st;
 	char *e;
+	/* is gcc being asked to output dependencies? */
+	int generating_dependencies = 0;
+	/* is the dependency makefile name overridden with -MF? */
+	int dependency_filename_specified = 0;
+	/* is the dependency makefile target name specified with -MQ or -MF? */
+	int dependency_target_specified = 0;
+
 
 	stripped_args = args_init(0, NULL);
 
@@ -702,6 +709,18 @@ static void process_args(int argc, char 
 			continue;
 		}
 
+		/* These options require special handling, because they
+		   behave differently with gcc -E, when the output
+		   file is not specified. */
+
+		if (strcmp(argv[i], "-MD") == 0 || strcmp(argv[i], "-MMD") == 0) {
+			generating_dependencies = 1;
+		} else if (strcmp(argv[i], "-MF") == 0) {
+			dependency_filename_specified = 1;
+		} else if (strcmp(argv[i], "-MQ") == 0 || strcmp(argv[i], "-MT") == 0) {
+			dependency_target_specified = 1;
+		}
+
 		/* options that take an argument */
 		{
 			const char *opts[] = {"-I", "-include", "-imacros", "-iprefix",
@@ -812,6 +831,41 @@ static void process_args(int argc, char 
 		}
 		p[1] = found_S_opt ? 's' : 'o';
 		p[2] = 0;
+	}
+
+	/* If dependencies are generated, configure the preprocessor */
+
+	if (generating_dependencies && output_file) {
+		if (!dependency_filename_specified) {
+			char *default_depfile_name = x_strdup(output_file);
+			char *p = strrchr(default_depfile_name, '.');
+
+			if (p) {
+				if (strlen(p) < 2) {
+					stats_update(STATS_ARGS);
+					failed();
+					return;
+				}
+				*p = 0;
+			}
+			else  {
+				int len = p - default_depfile_name;
+				
+				p = x_malloc(len + 3);
+				strncpy(default_depfile_name, p, len - 1);
+				free(default_depfile_name);
+				default_depfile_name = p;
+			}
+
+			strcat(default_depfile_name, ".d");
+			args_add(stripped_args, "-MF");
+			args_add(stripped_args, default_depfile_name);
+		}
+
+		if (!dependency_target_specified) {
+			args_add(stripped_args, "-MT");
+			args_add(stripped_args, output_file);
+		}
 	}
 
 	/* cope with -o /dev/null */
