git

Форк
0
/
detect-compiler 
58 строк · 1.2 Кб
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() {
12
	LANG=C LC_ALL=C $CC -v 2>&1 | grep ' version '
13
}
14

15
get_family() {
16
	get_version_line | sed 's/^\(.*\) version [0-9].*/\1/'
17
}
18

19
get_version() {
20
	# A string that begins with a digit up to the next SP
21
	ver=$(get_version_line | sed 's/^.* version \([0-9][^ ]*\).*/\1/')
22

23
	# There are known -variant suffixes that do not affect the
24
	# meaning of the main version number.  Strip them.
25
	ver=${ver%-win32}
26
	ver=${ver%-posix}
27

28
	echo "$ver"
29
}
30

31
print_flags() {
32
	family=$1
33
	version=$(get_version | cut -f 1 -d .)
34

35
	# Print a feature flag not only for the current version, but also
36
	# for any prior versions we encompass. This avoids needing to do
37
	# numeric comparisons in make, which are awkward.
38
	while test "$version" -gt 0
39
	do
40
		echo $family$version
41
		version=$((version - 1))
42
	done
43
}
44

45
case "$(get_family)" in
46
gcc)
47
	print_flags gcc
48
	;;
49
clang | *" clang")
50
	print_flags clang
51
	;;
52
"Apple LLVM")
53
	print_flags clang
54
	;;
55
*)
56
	: unknown compiler family
57
	;;
58
esac
59

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.