]> git.ipfire.org Git - thirdparty/git.git/blame - detect-compiler
Git 2.37-rc1
[thirdparty/git.git] / detect-compiler
CommitLineData
1da1580e
NTND
1#!/bin/sh
2#
3# Probe the compiler for vintage, version, etc. This is used for setting
4# optional make knobs under the DEVELOPER knob.
5
6CC="$*"
7
8# we get something like (this is at least true for gcc and clang)
9#
10# FreeBSD clang version 3.4.1 (tags/RELEASE...)
11get_version_line() {
1fbfd96f 12 LANG=C LC_ALL=C $CC -v 2>&1 | grep ' version '
1da1580e
NTND
13}
14
15get_family() {
33f13ad7 16 get_version_line | sed 's/^\(.*\) version [0-9].*/\1/'
1da1580e
NTND
17}
18
19get_version() {
33f13ad7 20 get_version_line | sed 's/^.* version \([0-9][^ ]*\).*/\1/'
1da1580e
NTND
21}
22
23print_flags() {
24 family=$1
25 version=$(get_version | cut -f 1 -d .)
26
27 # Print a feature flag not only for the current version, but also
28 # for any prior versions we encompass. This avoids needing to do
29 # numeric comparisons in make, which are awkward.
30 while test "$version" -gt 0
31 do
32 echo $family$version
33 version=$((version - 1))
34 done
35}
36
37case "$(get_family)" in
38gcc)
39 print_flags gcc
40 ;;
f32c5d37 41clang | *" clang")
1da1580e
NTND
42 print_flags clang
43 ;;
f32c5d37 44"Apple LLVM")
1da1580e
NTND
45 print_flags clang
46 ;;
47*)
48 : unknown compiler family
49 ;;
50esac