apply debian/patches/06_md.diff
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10907 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
55246d6c1c
commit
6f3603a05a
1 changed files with 54 additions and 0 deletions
|
|
@ -646,6 +646,13 @@ static void process_args(int argc, char **argv)
|
|||
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);
|
||||
|
||||
|
|
@ -724,6 +731,18 @@ static void process_args(int argc, char **argv)
|
|||
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",
|
||||
|
|
@ -836,6 +855,41 @@ static void process_args(int argc, char **argv)
|
|||
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 */
|
||||
if (strcmp(output_file,"/dev/null") != 0 && stat(output_file, &st) == 0 && !S_ISREG(st.st_mode)) {
|
||||
cc_log("Not a regular file %s\n", output_file);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue