Skip to content

preprocessor cache/direct mode doesn't produce -MF output #2194

@glandium

Description

@glandium

STR:

touch foo.h
echo '#include "foo.h"' > foo.c
sccache gcc -o foo.o -c foo.c -MD -MF foo.pp

On the first run, sccache calls the preprocessor, which produces the foo.pp file, with contents:

foo.o: foo.c /usr/include/stdc-predef.h foo.h

Typically, this would be used by a build system to know when to rebuild foo.o. Without this file, the build system wouldn't know to rebuild foo.o when e.g. foo.h changes.

Now, clean your build directory and try again:

rm foo.o foo.pp
sccache gcc -o foo.o -c foo.c -MD -MF foo.pp

Now here's the problem: since the preprocessor wasn't called, and since the preprocessor cache doesn't store what would normally be in foo.pp, foo.pp is not created.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions