[ccache] [PATCH] Some patches for Xcode support

Bernhard Bauer bauerb at google.com
Mon May 24 16:58:18 MDT 2010


On Mon, May 17, 2010 at 05:27, Bernhard Bauer <bauerb at google.com> wrote:
> On Sunday, May 16, 2010, Joel Rosdahl  wrote:
>> On 2010-05-12 15:52, Bernhard Bauer wrote:
>>> attached are some patches needed to make compiling under Mac OS X with
>>> Xcode/distcc work.
>>
>> Thanks!
>>
>>> 0001-Add-Objective-C-to-the-mapping-from-source-files-to-.patch
>>
>> Sure. Applied.
>>
>>> 0002-Add-fpreprocessed-option-for-compiling-preprocessed-.patch
>>
>> Is this needed because GCC doesn't add -fpreprocessed implicitly like it
>> does for .i/.ii/.mi files?
>>
>> The patch looks OK, except that it seems that -fpreprocessed was added
>> in GCC 3.0, so GCC 2.95 wouldn't be supported anymore if we add the flag
>> unconditionally. I don't know if anyone still uses GCC 2.95, but maybe
>> we could do it like this instead:
>>
>> --- a/ccache.c
>> +++ b/ccache.c
>> @@ -497,6 +497,14 @@ static void to_cache(ARGS *args)
>>         putenv("DEPENDENCIES_OUTPUT");
>>
>>         if (compile_preprocessed_source_code) {
>> +               char *p = strrchr(i_tmpfile, '.');
>> +               if (p && strcmp(p, ".mii") == 0) {
>> +                       /*
>> +                        * GCC doesn't add -fpreprocessed implicitly for .mii
>> +                        * files, so we have to add it ourselves.
>> +                        */
>> +                       args_add(args, "-fpreprocessed");
>> +               }
>>                 args_add(args, i_tmpfile);
>>         } else {
>>                 args_add(args, input_file);
>>
>> What do you think?
>
> Or maybe it got confused by the -x option added by xcodebuild (for
> which I used Dirk Best's preliminary patch, so I didn't repeat it
> here). I'll find out which one is the case.

Turns out, the -x option was overriding the language auto-detection
based on the filename. I ended up rewriting the -x patch similar to
the way you suggested to Dirk, so now it supports properly changing
the language for preprocessed files, using a table mapping from file
extension to language, and one mapping from language to preprocessed
language (and it incorporates the first patch from my original mail).

You can find the patch at http://github.com/sheepmaster/ccache/commits/gcc_x .

Bernhard.


More information about the ccache mailing list