| 1 | # Copyright 1999-2007 Gentoo Foundation |
1 | # Copyright 1999-2007 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/toolchain-funcs.eclass,v 1.68 2007/03/15 15:55:59 kevquinn Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/toolchain-funcs.eclass,v 1.73 2007/07/22 19:59:48 vapier Exp $ |
| 4 | # |
4 | # |
| 5 | # Maintainer: Toolchain Ninjas <toolchain@gentoo.org> |
5 | # Maintainer: Toolchain Ninjas <toolchain@gentoo.org> |
| 6 | # |
6 | # |
| 7 | # This eclass contains (or should) functions to get common info |
7 | # This eclass contains (or should) functions to get common info |
| 8 | # about the toolchain (libc/compiler/binutils/etc...) |
8 | # about the toolchain (libc/compiler/binutils/etc...) |
| 9 | |
9 | |
| 10 | inherit multilib |
10 | ___ECLASS_RECUR_TOOLCHAIN_FUNCS="yes" |
|
|
11 | [[ -z ${___ECLASS_RECUR_MULTILIB} ]] && inherit multilib |
| 11 | |
12 | |
| 12 | DESCRIPTION="Based on the ${ECLASS} eclass" |
13 | DESCRIPTION="Based on the ${ECLASS} eclass" |
| 13 | |
14 | |
| 14 | tc-getPROG() { |
15 | tc-getPROG() { |
| 15 | local var=$1 |
16 | local var=$1 |
| … | |
… | |
| 121 | [[ -z ${host} ]] && host=${CTARGET:-${CHOST}} |
122 | [[ -z ${host} ]] && host=${CTARGET:-${CHOST}} |
| 122 | |
123 | |
| 123 | case ${host} in |
124 | case ${host} in |
| 124 | alpha*) echo alpha;; |
125 | alpha*) echo alpha;; |
| 125 | arm*) echo arm;; |
126 | arm*) echo arm;; |
|
|
127 | avr*) ninj avr32 avr;; |
| 126 | bfin*) ninj blackfin bfin;; |
128 | bfin*) ninj blackfin bfin;; |
| 127 | cris*) echo cris;; |
129 | cris*) echo cris;; |
| 128 | hppa*) ninj parisc hppa;; |
130 | hppa*) ninj parisc hppa;; |
| 129 | i?86*) ninj i386 x86;; |
131 | i?86*) ninj i386 x86;; |
| 130 | ia64*) echo ia64;; |
132 | ia64*) echo ia64;; |
| … | |
… | |
| 160 | && ninj sparc64 sparc \ |
162 | && ninj sparc64 sparc \ |
| 161 | || echo sparc |
163 | || echo sparc |
| 162 | ;; |
164 | ;; |
| 163 | vax*) echo vax;; |
165 | vax*) echo vax;; |
| 164 | x86_64*) ninj x86_64 amd64;; |
166 | x86_64*) ninj x86_64 amd64;; |
| 165 | *) echo ${ARCH};; |
167 | |
|
|
168 | # since our usage of tc-arch is largely concerned with |
|
|
169 | # normalizing inputs for testing ${CTARGET}, let's filter |
|
|
170 | # other cross targets (mingw and such) into the unknown. |
|
|
171 | *) echo unknown;; |
| 166 | esac |
172 | esac |
| 167 | } |
173 | } |
| 168 | tc-arch-kernel() { |
174 | tc-arch-kernel() { |
| 169 | tc-ninja_magic_to_arch kern $@ |
175 | tc-ninja_magic_to_arch kern $@ |
| 170 | } |
176 | } |
| 171 | tc-arch() { |
177 | tc-arch() { |
| 172 | tc-ninja_magic_to_arch portage $@ |
178 | tc-ninja_magic_to_arch portage $@ |
|
|
179 | } |
|
|
180 | tc-endian() { |
|
|
181 | local host=$1 |
|
|
182 | [[ -z ${host} ]] && host=${CTARGET:-${CHOST}} |
|
|
183 | host=${host%%-*} |
|
|
184 | |
|
|
185 | case ${host} in |
|
|
186 | alpha*) echo big;; |
|
|
187 | arm*b*) echo big;; |
|
|
188 | arm*) echo little;; |
|
|
189 | cris*) echo little;; |
|
|
190 | hppa*) echo big;; |
|
|
191 | i?86*) echo little;; |
|
|
192 | ia64*) echo little;; |
|
|
193 | m68*) echo big;; |
|
|
194 | mips*l*) echo little;; |
|
|
195 | mips*) echo big;; |
|
|
196 | powerpc*) echo big;; |
|
|
197 | s390*) echo big;; |
|
|
198 | sh*b*) echo big;; |
|
|
199 | sh*) echo little;; |
|
|
200 | sparc*) echo big;; |
|
|
201 | x86_64*) echo little;; |
|
|
202 | *) echo wtf;; |
|
|
203 | esac |
| 173 | } |
204 | } |
| 174 | |
205 | |
| 175 | # Returns the version as by `$CC -dumpversion` |
206 | # Returns the version as by `$CC -dumpversion` |
| 176 | gcc-fullversion() { |
207 | gcc-fullversion() { |
| 177 | $(tc-getCC "$@") -dumpversion |
208 | $(tc-getCC "$@") -dumpversion |
| … | |
… | |
| 290 | # gen_usr_ldscript libfoo.so |
321 | # gen_usr_ldscript libfoo.so |
| 291 | # |
322 | # |
| 292 | # Note that you should in general use the unversioned name of |
323 | # Note that you should in general use the unversioned name of |
| 293 | # the library, as ldconfig should usually update it correctly |
324 | # the library, as ldconfig should usually update it correctly |
| 294 | # to point to the latest version of the library present. |
325 | # to point to the latest version of the library present. |
| 295 | _tc_gen_usr_ldscript() { |
326 | gen_usr_ldscript() { |
| 296 | local lib libdir=$(get_libdir) output_format="" |
327 | local lib libdir=$(get_libdir) output_format="" |
| 297 | # Just make sure it exists |
328 | # Just make sure it exists |
| 298 | dodir /usr/${libdir} |
329 | dodir /usr/${libdir} |
| 299 | |
330 | |
| 300 | # OUTPUT_FORMAT gives hints to the linker as to what binary format |
331 | # OUTPUT_FORMAT gives hints to the linker as to what binary format |
| … | |
… | |
| 322 | END_LDSCRIPT |
353 | END_LDSCRIPT |
| 323 | fi |
354 | fi |
| 324 | fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}" |
355 | fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}" |
| 325 | done |
356 | done |
| 326 | } |
357 | } |
| 327 | gen_usr_ldscript() { _tc_gen_usr_ldscript "$@" ; } |
|
|