summaryrefslogtreecommitdiff
path: root/dist/examples/build/cxx/compilers.make
blob: 9f6e64ab9c0e643a3bad547c9eb99b70d8c37be8 (plain)
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# file      : examples/build/cxx/compilers.make
# author    : Boris Kolpackov <boris@codesynthesis.com>
# copyright : Copyright (c) 2006-2011 Code Synthesis Tools CC
# license   : GNU GPL v2 + exceptions; see accompanying LICENSE file

CXX := g++

cxx_sign := $(shell t=`$(CXX) -V 2>&1`; if test $$? -eq 0; then echo $$t; fi)

ifeq ($(cxx_sign),)
cxx_sign := $(shell t=`$(CXX) --version 2>&1`; if test $$? -eq 0; then echo $$t; fi)
endif

# IBM XL C++ V7.0 returns error code when called with the -qversion option. This
# complicates our life quite a bit.
#
ifeq ($(cxx_sign),)
cxx_sign := $(shell t=`$(CXX) -qversion 2>/dev/null`; echo $$t)
ifneq ($(shell echo '$(cxx_sign)' | sed -e 's/^.*IBM XL C\/C.. .*$$//'),)
cxx_sign :=
endif
endif

cxx_id :=

ifneq ($(cxx_sign),)

# GNU g++ (g++)
#
ifeq ($(cxx_id),)
ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* (GCC) .*$$//'),)
cxx_id := gnu
endif
endif

# g++ 4.3 removed GCC for some reason so check for g++ also.
ifeq ($(cxx_id),)
ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^g++.*$$//'),)
cxx_id := gnu
endif
endif

# Clang
#
ifeq ($(cxx_id),)
ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^.*clang.*$$//'),)
cxx_id := clang
endif
endif

ifeq ($(cxx_id),)
ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^.*Clang.*$$//'),)
cxx_id := clang
endif
endif

# Sun C++ (CC)
#
ifeq ($(cxx_id),)
ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* Sun C.. .*$$//'),)
cxx_id := sun
endif
endif


# HP C++ (aCC)
#
ifeq ($(cxx_id),)
ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* HP aC..\/ANSI C .* A\.06\..*$$//'),)
cxx_id := hp
endif
endif

ifeq ($(cxx_id),)
ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^[^ ]* HP C\/aC.. .* A\.06\..*$$//'),)
cxx_id := hp
endif
endif

# Intel C++ (icpc)
#

# 9.x
ifeq ($(cxx_id),)
ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^Intel(R) C.. .*$$//'),)
cxx_id := intel
endif
endif

# 8.x
ifeq ($(cxx_id),)
ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^8\..$$//'),)
cxx_id := intel
endif
endif


# IBM XL C++
#
ifeq ($(cxx_id),)
ifeq ($(shell echo '$(cxx_sign)' | sed -e 's/^.*IBM XL C\/C.. .*$$//'),)
cxx_id := ibm
endif
endif


# Unknown
#
ifeq ($(cxx_id),)
$(warning unknown C++ compiler signature '$(cxx_sign)', continuing anyway)
endif


else
$(warning unable to obtain compiler signature for '$(CXX)', continuing anyway)
endif

#$(warning $(cxx_sign))
#$(warning $(cxx_id))