eclass/tests/toolchain-funcs.sh: fix gold tests, bug #700812
[gentoo.git] / eclass / tests / toolchain-funcs.sh
1 #!/bin/bash
2 # Copyright 1999-2015 Gentoo Foundation
3 # Distributed under the terms of the GNU General Public License v2
4
5 source tests-common.sh
6
7 inherit toolchain-funcs
8
9 #
10 # TEST: tc-arch-kernel
11 #
12 test-tc-arch-kernel() {
13         local ret=0
14         KV=$1 ; shift
15         for CHOST in "$@" ; do
16                 exp=${CHOST##*:}
17                 CHOST=${CHOST%%:*}
18                 actual=$(tc-arch-kernel)
19
20                 if [[ ${actual} != ${exp:-${CHOST}} ]] ; then
21                         eerror "Failure for CHOST: ${CHOST} Expected: ${exp} != Actual: ${actual}"
22                         ((++ret))
23                 fi
24         done
25         return ${ret}
26 }
27 tbegin "tc-arch-kernel() (KV=2.6.30)"
28 test-tc-arch-kernel 2.6.30 \
29         i{3..6}86:x86 x86_64:x86 \
30         powerpc{,64}:powerpc i{3..6}86-gentoo-freebsd:i386
31 tend $?
32
33 #
34 # TEST: tc-arch
35 #
36 tbegin "tc-arch"
37 ret=0
38 for CHOST in \
39         alpha arm{,eb}:arm avr32:avr bfin cris hppa i{3..6}86:x86 ia64 m68k \
40         mips{,eb}:mips nios2 powerpc:ppc powerpc64:ppc64 s390{,x}:s390 \
41         sh{1..4}{,eb}:sh sparc{,64}:sparc vax x86_64:amd64
42 do
43         exp=${CHOST##*:}
44         CHOST=${CHOST%%:*}
45         actual=$(tc-arch)
46
47         if [[ ${actual} != ${exp:-${CHOST}} ]] ; then
48                 eerror "Failure for CHOST: ${CHOST} Expected: ${exp} != Actual: ${actual}"
49                 : $((++ret))
50         fi
51 done
52 tend ${ret}
53
54 #
55 # TEST: tc-ld-is-gold
56 #
57 tbegin "tc-ld-is-gold (ld=bfd cc=bfd)"
58 LD=ld.bfd LDFLAGS=-fuse-ld=bfd tc-ld-is-gold && ret=1 || ret=0
59 tend ${ret}
60
61 tbegin "tc-ld-is-gold (ld=gold cc=default)"
62 LD=ld.gold tc-ld-is-gold
63 ret=$?
64 tend ${ret}
65
66 tbegin "tc-ld-is-gold (ld=gold cc=bfd)"
67 LD=ld.gold LDFLAGS=-fuse-ld=bfd tc-ld-is-gold
68 ret=$?
69 tend ${ret}
70
71 tbegin "tc-ld-is-gold (ld=bfd cc=gold)"
72 LD=ld.bfd LDFLAGS=-fuse-ld=gold tc-ld-is-gold
73 ret=$?
74 tend ${ret}
75
76 #
77 # TEST: tc-ld-disable-gold
78 #
79 tbegin "tc-ld-disable-gold (bfd selected)"
80 (
81 export LD=ld.bfd LDFLAGS=-fuse-ld=bfd
82 ewarn() { :; }
83 tc-ld-disable-gold
84 [[ ${LD} == "ld.bfd" && ${LDFLAGS} == "-fuse-ld=bfd" ]]
85 )
86 tend $?
87
88 tbegin "tc-ld-disable-gold (ld=gold)"
89 (
90 export LD=ld.gold LDFLAGS=
91 ewarn() { :; }
92 tc-ld-disable-gold
93 [[ ${LD} == "ld.bfd" || ${LDFLAGS} == *"-fuse-ld=bfd"* ]]
94 )
95 tend $?
96
97 tbegin "tc-ld-disable-gold (cc=gold)"
98 (
99 export LD= LDFLAGS="-fuse-ld=gold"
100 ewarn() { :; }
101 tc-ld-disable-gold
102 [[ ${LD} == *"/ld.bfd" || ${LDFLAGS} == "-fuse-ld=gold -fuse-ld=bfd" ]]
103 )
104 tend $?
105
106 unset CPP
107
108 tbegin "tc-get-compiler-type (gcc)"
109 (
110 export CC=gcc
111 [[ $(tc-get-compiler-type) == gcc ]]
112 )
113 tend $?
114
115 tbegin "tc-is-gcc (gcc)"
116 (
117 export CC=gcc
118 tc-is-gcc
119 )
120 tend $?
121
122 tbegin "! tc-is-clang (gcc)"
123 (
124 export CC=gcc
125 ! tc-is-clang
126 )
127 tend $?
128
129 if type -P clang &>/dev/null; then
130         tbegin "tc-get-compiler-type (clang)"
131         (
132         export CC=clang
133         [[ $(tc-get-compiler-type) == clang ]]
134         )
135         tend $?
136
137         tbegin "! tc-is-gcc (clang)"
138         (
139         export CC=clang
140         ! tc-is-gcc
141         )
142         tend $?
143
144         tbegin "tc-is-clang (clang)"
145         (
146         export CC=clang
147         tc-is-clang
148         )
149         tend $?
150 fi
151
152 if type -P pathcc &>/dev/null; then
153         tbegin "tc-get-compiler-type (pathcc)"
154         (
155         export CC=pathcc
156         [[ $(tc-get-compiler-type) == pathcc ]]
157         )
158         tend $?
159
160         tbegin "! tc-is-gcc (pathcc)"
161         (
162         export CC=pathcc
163         ! tc-is-gcc
164         )
165         tend $?
166
167         tbegin "! tc-is-clang (pathcc)"
168         (
169         export CC=pathcc
170         ! tc-is-clang
171         )
172         tend $?
173 fi
174
175 for compiler in gcc clang not-really-a-compiler; do
176         if type -P ${compiler} &>/dev/null; then
177                 tbegin "tc-cpp-is-true ($compiler, defined)"
178                 (
179                         export CC=${compiler}
180                         tc-cpp-is-true "defined(SOME_DEFINED_SYMBOL)" -DSOME_DEFINED_SYMBOL
181                 )
182                 tend $?
183                 tbegin "tc-cpp-is-true ($compiler, not defined)"
184                 (
185                         export CC=${compiler}
186                         ! tc-cpp-is-true "defined(SOME_UNDEFINED_SYMBOL)"
187                 )
188                 tend $?
189
190                 tbegin "tc-cpp-is-true ($compiler, defined on -ggdb3)"
191                 (
192                         export CC=${compiler}
193                         tc-cpp-is-true "defined(SOME_DEFINED_SYMBOL)" -DSOME_DEFINED_SYMBOL -ggdb3
194                 )
195                 tend $?
196         fi
197 done
198
199 texit