diff options
author | Joel Rosdahl <joel@rosdahl.net> | 2010-11-28 17:50:59 +0100 |
---|---|---|
committer | Joel Rosdahl <joel@rosdahl.net> | 2010-11-28 17:50:59 +0100 |
commit | 90e9de12fa4eb8c7b66355c274dc1689a1f8a184 (patch) | |
tree | 251fcb94f87d0ee7d82f95f9097c4b03fca7fc6d /ccache.c | |
parent | e1673bd81cb576a71d7e450f680ad8ced26f7581 (diff) | |
parent | d2b03fc9e10620baf85774154452864f880c0e1d (diff) | |
download | ccache-90e9de12fa4eb8c7b66355c274dc1689a1f8a184.tar.gz |
Merge branch 'maint'
* maint:
Prepare for version 3.1.3
Handle -MFarg, -MTarg and -MQarg compiler options correctly
Conflicts:
test/test_argument_processing.c
Diffstat (limited to 'ccache.c')
-rw-r--r-- | ccache.c | 26 |
1 files changed, 19 insertions, 7 deletions
@@ -1395,19 +1395,31 @@ cc_process_args(struct args *orig_args, struct args **preprocessor_args, continue; } if (i < argc - 1) { - if (str_eq(argv[i], "-MF")) { + if (str_startswith(argv[i], "-MF")) { + char *arg; dependency_filename_specified = true; free(output_dep); - output_dep = make_relative_path(x_strdup(argv[i + 1])); args_add(dep_args, argv[i]); - args_add(dep_args, argv[i + 1]); - i++; + if (strlen(argv[i]) == 3) { + /* -MF arg */ + arg = argv[i + 1]; + args_add(dep_args, argv[i + 1]); + i++; + } else { + /* -MFarg */ + arg = &argv[i][3]; + } + output_dep = make_relative_path(x_strdup(arg)); continue; - } else if (str_eq(argv[i], "-MQ") || str_eq(argv[i], "-MT")) { + } else if (str_startswith(argv[i], "-MQ") + || str_startswith(argv[i], "-MT")) { dependency_target_specified = true; args_add(dep_args, argv[i]); - args_add(dep_args, argv[i + 1]); - i++; + if (strlen(argv[i]) == 3) { + /* -MQ arg or -MT arg */ + args_add(dep_args, argv[i + 1]); + i++; + } continue; } } |