On 2010-05-11 13:03, Bernhard Bauer wrote: > I agree, with a single -arch option gcc should behave fully identical.
The change was made as a "better safe than sorry" reaction to this bug report: <https://bugzilla.samba.org/show_bug.cgi?id=7401>. I didn't realize that the -arch option was used for one architecture builds. Here's a fix: --- a/ccache.c +++ b/ccache.c @@ -1214,6 +1214,7 @@ static void process_args(int argc, char **argv, ARGS **preprocessor_args, int i; int found_c_opt = 0; int found_S_opt = 0; + int found_arch_opt = 0; struct stat st; /* is the dependency makefile name overridden with -MF? */ int dependency_filename_specified = 0; @@ -1238,7 +1239,6 @@ static void process_args(int argc, char **argv, ARGS **preprocessor_args, strcmp(argv[i], "--coverage") == 0 || strcmp(argv[i], "-M") == 0 || strcmp(argv[i], "-MM") == 0 || - strcmp(argv[i], "-arch") == 0 || strcmp(argv[i], "-fbranch-probabilities") == 0 || strcmp(argv[i], "-fprofile-arcs") == 0 || strcmp(argv[i], "-fprofile-generate") == 0 || @@ -1261,6 +1261,18 @@ static void process_args(int argc, char **argv, ARGS **preprocessor_args, } } + /* Multiple -arch options are too hard. */ + if (strcmp(argv[i], "-arch") == 0) { + if (found_arch_opt) { + cc_log("More than one -arch compiler option" + " is unsupported"); + stats_update(STATS_UNSUPPORTED); + failed(); + } else { + found_arch_opt = 1; + } + } + /* we must have -c */ if (strcmp(argv[i], "-c") == 0) { args_add(stripped_args, argv[i]); > And even with multiple architectures we should be fine, because ccache > doesn't really depend on the output format of the compiler, as long as > the semantics of how the output file depends on the input files and > the compiler options are the same. The problem is that ccache needs to run the preprocessor explicitly, and that fails when there are multiple -arch options. -- Joel _______________________________________________ ccache mailing list [email protected] https://lists.samba.org/mailman/listinfo/ccache
