]>
Commit | Line | Data |
---|---|---|
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 | ||
6 | CC="$*" | |
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...) | |
11 | get_version_line() { | |
1fbfd96f | 12 | LANG=C LC_ALL=C $CC -v 2>&1 | grep ' version ' |
1da1580e NTND |
13 | } |
14 | ||
15 | get_family() { | |
33f13ad7 | 16 | get_version_line | sed 's/^\(.*\) version [0-9].*/\1/' |
1da1580e NTND |
17 | } |
18 | ||
19 | get_version() { | |
33f13ad7 | 20 | get_version_line | sed 's/^.* version \([0-9][^ ]*\).*/\1/' |
1da1580e NTND |
21 | } |
22 | ||
23 | print_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 | ||
37 | case "$(get_family)" in | |
38 | gcc) | |
39 | print_flags gcc | |
40 | ;; | |
f32c5d37 | 41 | clang | *" 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 | ;; | |
50 | esac |