Permalink
Cannot retrieve contributors at this time
executable file
53 lines (46 sloc)
1016 Bytes
| #!/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") | |
| print_flags clang | |
| ;; | |
| *) | |
| : unknown compiler family | |
| ;; | |
| esac |