summaryrefslogtreecommitdiff
path: root/ccache.c
diff options
context:
space:
mode:
authorJoel Rosdahl <joel@rosdahl.net>2010-11-28 17:50:59 +0100
committerJoel Rosdahl <joel@rosdahl.net>2010-11-28 17:50:59 +0100
commit90e9de12fa4eb8c7b66355c274dc1689a1f8a184 (patch)
tree251fcb94f87d0ee7d82f95f9097c4b03fca7fc6d /ccache.c
parente1673bd81cb576a71d7e450f680ad8ced26f7581 (diff)
parentd2b03fc9e10620baf85774154452864f880c0e1d (diff)
downloadccache-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.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/ccache.c b/ccache.c
index 84eec435..5e68269d 100644
--- a/ccache.c
+++ b/ccache.c
@@ -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;
}
}