Re: [PATCH v2 0/3] detect-compiler: clang updates
From: Jeff King <hidden>
Date: 2021-08-07 14:14:01
On Sat, Aug 07, 2021 at 04:56:04AM +0200, Ævar Arnfjörð Bjarmason wrote:
quoted
On Sat, Aug 07, 2021 at 04:02:45AM +0200, Ævar Arnfjörð Bjarmason wrote:quoted
Perhaps I've missed some obvious reason not to do this, but why are we parsing the --version output of two modern compilers, as opposed to just asking them what type/version they are via their usual macro facilities? I.e. something like the below:That would probably work OK in practice, but it actually seems more complex to me (how do other random compilers react to "-E -"?We only care about gcc and clang in that script, which I think have supported that form of "-E" on stdin input for any version we're likely to care about for the purposes of config.mak.dev. It seems unlikely that we'll care about non-modern compilers in config.mak.dev, so using more modern features there seems fine (it's all for opting us into even more modern warning flags and the like...).
Yeah, but we don't find out what we have until we run the script in question. I guess it is OK as long as we redirect stderr, ignore the exit code, and only look for a positive outcome in the output (your patch does the latter two already). I also wondered how this might interact with CC="ccache gcc" (where caching might fail to notice version changes). But from some quick testing, it looks like it doesn't cache in this case (neither stdin, nor with -E).
quoted
Is it possible for us to get other output from the preprocessor that would confuse an eval?).Probably, I just meant that as a POC. We could pipe it into some awk/grep/cut/perl or whatever that would be more strict.
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. -Peff