File: mkc_check_compiler.in

package info (click to toggle)
mk-configure 0.36.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 3,996 kB
  • sloc: ansic: 4,974; makefile: 1,387; sh: 1,087; cpp: 177; perl: 101; yacc: 85; lex: 21
file content (99 lines) | stat: -rwxr-xr-x 2,176 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/sh

############################################################
# Copyright (c) 2009-2010 by Aleksey Cheusov
#
# See LICENSE file in the distribution.
############################################################

set -e

LC_ALL=C
export LC_ALL

: ${CHECK_COMMON_SH_DIR:=@mkc_libexecdir@}

: ${TMPDIR:=/tmp}
: ${CC:=cc}
: ${CXX:=c++}

tmpfile="$TMPDIR/mk-c.$$.c"
trap 'rm -f "$tmpfile"' 0

##################################################

##################################################

pathpart=cc_type
langname='C'

while getopts x f; do
    case "$f" in
	x)
	    pathpart=cxx_type
	    langname='C++'
	    CC="$CXX"
	    export CC;;
	*)
	    exit 2;;
    esac
done

##################################################
checks() {
    cat <<'EOF'
       __clang__   clang   __clang_major__.__clang_minor__.__clang_patchlevel__
           __ICC   icc     __ICC
__INTEL_COMPILER   icc     __INTEL_COMPILER
         __PCC__   pcc     __PCC__.__PCC_MINOR__.__PCC_MINORMINOR__
        __GNUC__   gcc     __GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__
 __ARMCC_VERSION   armcc    __ARMCC_VERSION
        _MSC_VER   msc     _MSC_VER
        __HP_aCC   hpc     __HP_aCC
         __HP_cc   hpc     __HP_aCC
   __SUNPRO_C      sunpro  __SUNPRO_C
  __SUNPRO_CC      sunpro  __SUNPRO_CC
     __IBMCPP__    ibmc    __xlC__
       __IBMC__    ibmc    __xlC__
    __BORLANDC__   bcc     __BORLANDC__
  __WATCOMC__      watcom  __WATCOMC__
       __COMO__    como    __COMO_VERSION__
         __DECC    decc    __DECC_VER
       __DECCXX    decc    __DECCXX_VER
_COMPILER_VERSION  mipspro __COMPILER_VERSION
EOF
}

check_itself (){
    checks |
    @AWK@ '
BEGIN {
   printf "#"
}
{
   printf "if defined(%s)\ncompiler %s %s\n#el", $1, $2, $3
}
END {
   printf "se\ncompiler unknown 0\n#endif\n"
}' >"$tmpfile"

    $CC -E "$tmpfile" |
    @AWK@ 'BEGIN { ret="unknown"}
	$1 == "compiler" {
	    sub(/\r$/, "")
	    compiler = $2
	    $1 = $2 = ""
	    gsub(/ /, "", $0)
	    ret=(compiler " " $0)
	    exit
	}
	END { print ret }' 
}

. ${CHECK_COMMON_SH_DIR}/mkc_check_common.sh

check_and_cache "checking $langname compiler type" "$cache"

printme '%s\n' "$ret" 1>&2

echo "$ret"