[cfe-dev] Automatic target selection for Clang tools

Luke Zarko via cfe-dev cfe-dev at lists.llvm.org
Thu Sep 17 15:54:49 PDT 2015

The Clang gcc-compatible driver (clang/tools/driver/driver.cpp) has some
logic to select an alternate target based on the executable it was called
as. For instance, if you symlink i686-linux-android-gcc to clang and invoke
it, the driver will act as though it were called with another argument
("-target i686-linux-android"). This leads to visible effects even in
syntax-only compilations (like the __ANDROID__ preprocessor symbol being

This behavior is not replicated for tool invocations--for
instance, clang::createInvocationFromCommandLine will not choose an
alternate target based on ArgList[0]. This means that configurations stored
in compilation databases aren't accurately replayed.

One possible solution is to move the target-extracting logic from
driver/driver.cpp to a library (Frontend/Utils.h) and to be sure to call it
in any situation where an argv-equivalent array is used to initialize the
compiler. Is this appropriate, or does it violate some layering principle
that I don't understand?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150917/de5e6425/attachment.html>

More information about the cfe-dev mailing list