git-commit-vandalism/detect-compiler
Carlo Marcelo Arenas Belón f6bb2099bf build: update detect-compiler for newer Xcode version
1da1580e4c (Makefile: detect compiler and enable more warnings in
DEVELOPER=1, 2018-04-14) uses the output of the compiler banner to
detect the compiler family.

Apple had since changed the wording used to refer to its compiler
as clang instead of LLVM as shown by:

  $ cc --version
  Apple clang version 12.0.5 (clang-1205.0.22.9)
  Target: x86_64-apple-darwin20.6.0
  Thread model: posix
  InstalledDir: /Library/Developer/CommandLineTools/usr/bin

so update the script to match, and allow DEVELOPER=1 to work as
expected again in macOS.

Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-08-06 13:29:00 -07:00

54 lines
1.0 KiB
Bash
Executable File

#!/bin/sh
#
# Probe the compiler for vintage, version, etc. This is used for setting
# optional make knobs under the DEVELOPER knob.
CC="$*"
# we get something like (this is at least true for gcc and clang)
#
# FreeBSD clang version 3.4.1 (tags/RELEASE...)
get_version_line() {
$CC -v 2>&1 | grep ' version '
}
get_family() {
get_version_line | sed 's/^\(.*\) version [0-9][^ ]* .*/\1/'
}
get_version() {
get_version_line | sed 's/^.* version \([0-9][^ ]*\) .*/\1/'
}
print_flags() {
family=$1
version=$(get_version | cut -f 1 -d .)
# Print a feature flag not only for the current version, but also
# for any prior versions we encompass. This avoids needing to do
# numeric comparisons in make, which are awkward.
while test "$version" -gt 0
do
echo $family$version
version=$((version - 1))
done
}
case "$(get_family)" in
gcc)
print_flags gcc
;;
clang)
print_flags clang
;;
"FreeBSD clang")
print_flags clang
;;
"Apple LLVM"|"Apple clang")
print_flags clang
;;
*)
: unknown compiler family
;;
esac