HomePhabricator

[JSONCompilationDatabase] Strip distcc/ccache/gomacc wrappers from parsed…

Description

[JSONCompilationDatabase] Strip distcc/ccache/gomacc wrappers from parsed commands.

Summary:
It's common to use compiler wrappers by setting CC="gomacc clang++".
This results in both args appearing in compile_commands.json, and clang's driver
can't handle this.

This patch attempts to recognize this pattern (by looking for well-known
wrappers) and dropping argv0 in this case.

It conservatively ignores other cases for now:

  • wrappers with unknown names
  • wrappers that accept -flags
  • wrappers where the compiler to use is implied (usually cc or gcc)

This is done at the JSONCompilationDatabase level rather than somewhere more
fundamental, as (hopefully) this isn't a general conceptual problem, but a messy
aspect of the nature of the ecosystem around compile_commands.json.
i.e. compilation databases more tightly tied to the build system should not have
this problem.

Reviewers: phosek, klimek

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D64297

Details

Committed
sammccallJul 12 2019, 3:11 AM
Differential Revision
D64297: [JSONCompilationDatabase] Strip distcc/ccache/gomacc wrappers from parsed commands.
Branches
Unknown
Tags
Unknown