mgorny added a comment.

To explain this better, let's take the following example call:

  x86_64-pc-linux-gnu-clang --driver-mode=g++ -target i386

This maps to:

- effective triple: `i386` (from `-target`)
- effective mode: `clang++` (from `--driver-mode`)
- name prefix: `x86_64-pc-linux-gnu`
- "fixed" name prefix: `i386-pc-linux-gnu` (with arch substituted based on 
effective triple)
- name suffix: `clang`

The algorithm will first try to use the first of the following configuration 
files:

1. `i386-clang++.cfg` (effective triple + effective mode)
2. `i386-pc-linux-gnu-clang.cfg` ("fixed" prefix + suffix)
3. `x86_64-pc-linux-gnu-clang.cfg` (orig. prefix + suffix)

If neither of these files are found, it will try to load one config file for 
the target and another for the driver.

For target, it will try:

1. `i386.cfg` (effective triple)
2. `i386-pc-linux-gnu.cfg` ("fixed" prefix)
3. `x86_64-pc-linux-gnu.cfg` (orig. prefix)

For driver, it will try:

1. `clang++.cfg` (effective mode)
2. `clang.cfg` (suffix)

This version doesn't include any further fallback, i.e. assumes we need to 
cover all triples and driver modes we care about. However, adding one should be 
trivial.



================
Comment at: clang/lib/Driver/Driver.cpp:1065-1080
+  StringRef EffectiveDriverMode;
+  if (CLOptions)
+    EffectiveDriverMode = CLOptions->getLastArgValue(options::OPT_driver_mode);
+  if (EffectiveDriverMode.empty())
+    EffectiveDriverMode = ClangNameParts.DriverMode;
+
+  llvm::Triple EffectiveTriple =
----------------
This part is mostly proof-of-concept, I need to look into how to do this 
properly.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D134337/new/

https://reviews.llvm.org/D134337

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to