/trunk/CCache/debian/patches/06_md.diff
Unknown | 77 lines | 73 code | 4 blank | 0 comment | 0 complexity | 931e3f89290ddb668d787db3a9e985c4 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- --- 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 */