Re: [PATCH v2 0/3] detect-compiler: clang updates
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2021-08-07 15:37:50
On Sat, Aug 07 2021, Jeff King wrote:
On Sat, Aug 07, 2021 at 04:26:33PM +0200, Ævar Arnfjörð Bjarmason wrote:quoted
quoted
That would probably be better. I would be curious to hear from somebody with a mac if this technique gives more sensible version numbers for the Apple-clang compiler.It does, on the gcc304 box on the gccfarm (recent apple M1 Mac Mini): avar@minimac ~ % uname -a Darwin minimac.moose.housegordon.com 20.4.0 Darwin Kernel Version 20.4.0: Thu Apr 22 21:46:41 PDT 2021; root:xnu-7195.101.2~1/RELEASE_ARM64_T8101 arm64 avar@minimac ~ % clang --version Apple clang version 12.0.5 (clang-1205.0.22.9) Target: arm64-apple-darwin20.4.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin avar@minimac ~ % cat >f GNUC=__GNUC__ GNUC_MINOR=__GNUC_MINOR__ GNUC_PATCHLEVEL=__GNUC_PATCHLEVEL__ clang=__clang__ clang_major=__clang_major__ clang_minor=__clang_minor__ clang_patchlevel=__clang_patchlevel__ ^C avar@minimac ~ % clang -E - <f # 1 "<stdin>" # 1 "<built-in>" 1 # 1 "<built-in>" 3 # 384 "<built-in>" 3 # 1 "<command line>" 1 # 1 "<built-in>" 2 # 1 "<stdin>" 2 GNUC=4 GNUC_MINOR=2 GNUC_PATCHLEVEL=1 clang=1 clang_major=12 clang_minor=0 clang_patchlevel=5Hmm, now I'm really confused, though. Is that really clang 12 (for which there is no 12.0.5; 12.0.1 is the latest version, shipped in July)? Or is it XCode 12, shipping with LLVM 11, according to the table in: https://en.wikipedia.org/wiki/Xcode#Xcode_11.x_-_13.x_(since_SwiftUI_framework) (sorry, there are actually _two_ tables with that same anchor on the page; the one you want is the second one, under "Toolchain versions"). The distinction does not matter for our script (where we only care about "clang4" and up). I guess the most relevant test would be to get XCode 8.x and see what it says. I expect it to claim "clang 8.1.0" or similar, but actually be clang-3. And therefore not support -Wtautological-constant-out-of-range-compare. If we can't get easily get hold of such a platform, then maybe that is a good indication that this conversation is too academic for now, and we should wait until somebody wants to add a more recent version-specifier to config.mak.dev. ;)
I think it's clang 12.0.5, and Apple just takes upstream versions and increments them, e.g. I found this: https://gist.github.com/yamaya/2924292 So you can presumably rely on it for having clang 12 features, and we'd only ever care about the clang_major...