On Fri, Aug 06, 2021 at 11:11:31AM -0700, Junio C Hamano wrote: > > So maybe we could add another case for "Homebrew clang"? > > $ clang --version 2>&1 | sed -ne 's/ version .*//p' > Debian clang > > It might be necessary to cope with this "$VENDOR clang version" > convention better with something like the following. Good catch. Unfortunately your patch below isn't sufficient because get_family() is broken, too. :( It insists on there being an extra word after the actual version. There is for gcc, but not for clang on my system: $ CC=gcc get_version_line gcc version 10.2.1 20210110 (Debian 10.2.1-6) $ CC=clang get_version_line Debian clang version 11.0.1-2 Doing this on top of your patch makes "./detect-compiler clang" behave as expected: diff --git a/detect-compiler b/detect-compiler index a80442a327..fd388ae783 100755 --- a/detect-compiler +++ b/detect-compiler @@ -13,11 +13,11 @@ get_version_line() { } get_family() { - get_version_line | sed 's/^\(.*\) version [0-9][^ ]* .*/\1/' + get_version_line | sed 's/^\(.*\) version [0-9].*/\1/' } get_version() { - get_version_line | sed 's/^.* version \([0-9][^ ]*\) .*/\1/' + get_version_line | sed 's/^.* version \([0-9][^ ]*\).*/\1/' } print_flags() { > I am afraid that this patch is being a bit too aggressive about > LLVM, as I do not know if "$VENDOR LLVM version" is also a thing, or > it is just oddity only at Apple, though. I think even before this issue, all of the versioning of Apple's clang is suspect. The "Apple LLVM" bit comes from Eric in: https://lore.kernel.org/git/20180318090607.GA26226@flurp.local/ But downthread we realized that the version numbers there don't match the clang ones: https://lore.kernel.org/git/CAPig+cRQXQ_DowS2Dsc1x3TAGJjnWig7P4eYS4kQ+C2piAdSWA@xxxxxxxxxxxxxx/ Duy indicated in the cover letter: https://lore.kernel.org/git/20180324125348.6614-1-pclouds@xxxxxxxxx/ that the apple support was probably wrong, but it looks like nobody stepped up in the meantime to fix it. In practice I think it mostly works anyway because "clang4" is the only version check we have for clang. So if we err "ahead" a few versions (which is what Apple's scheme does), you only get bit if you have a pretty old version of Xcode. I think if we wanted to get it right, we'd need to encode into the script some form of the version table here: https://en.wikipedia.org/wiki/Xcode#Xcode_11.x_-_13.x_%28since_SwiftUI_framework%29 -Peff