| 1 | # Copyright 1999-2005 Gentoo Foundation |
1 | # Copyright 1999-2006 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.49 2006/01/04 04:59:54 vapier Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/toolchain-funcs.eclass,v 1.57 2006/03/28 21:25:14 kevquinn Exp $ |
| 4 | # |
4 | # |
| 5 | # Author: Toolchain Ninjas <toolchain@gentoo.org> |
5 | # Author: 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...) |
| … | |
… | |
| 94 | [[ -z ${host} ]] && host=${CTARGET:-${CHOST}} |
94 | [[ -z ${host} ]] && host=${CTARGET:-${CHOST}} |
| 95 | |
95 | |
| 96 | case ${host} in |
96 | case ${host} in |
| 97 | alpha*) echo alpha;; |
97 | alpha*) echo alpha;; |
| 98 | arm*) echo arm;; |
98 | arm*) echo arm;; |
|
|
99 | bfin*) ninj blackfin bfin;; |
| 99 | cris*) echo cris;; |
100 | cris*) echo cris;; |
| 100 | hppa*) ninj parisc hppa;; |
101 | hppa*) ninj parisc hppa;; |
| 101 | i?86*) ninj i386 x86;; |
102 | i?86*) ninj i386 x86;; |
| 102 | ia64*) echo ia64;; |
103 | ia64*) echo ia64;; |
| 103 | m68*) echo m68k;; |
104 | m68*) echo m68k;; |
| 104 | mips*) echo mips;; |
105 | mips*) echo mips;; |
| 105 | powerpc64*) echo ppc64;; |
106 | nios2*) echo nios2;; |
|
|
107 | nios*) echo nios;; |
| 106 | powerpc*) |
108 | powerpc*) |
| 107 | # Starting with linux-2.6.15, the 'ppc' and 'ppc64' trees |
109 | # Starting with linux-2.6.15, the 'ppc' and 'ppc64' trees |
| 108 | # have been unified into simply 'powerpc' |
110 | # have been unified into simply 'powerpc', but until 2.6.16, |
|
|
111 | # ppc32 is still using ARCH="ppc" as default |
| 109 | if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.15) ]] ; then |
112 | if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]] && [[ ${type} == "kern" ]] ; then |
| 110 | echo powerpc |
113 | echo powerpc |
|
|
114 | elif [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]] && [[ ${type} == "kern" ]] ; then |
|
|
115 | if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]] ; then |
|
|
116 | echo powerpc |
|
|
117 | else |
|
|
118 | echo ppc |
|
|
119 | fi |
| 111 | elif [[ ${host} == powerpc64* ]] ; then |
120 | elif [[ ${host} == powerpc64* ]] ; then |
| 112 | echo ppc64 |
121 | echo ppc64 |
|
|
122 | elif [[ ${PROFILE_ARCH} == "ppc64" ]] ; then |
|
|
123 | ninj ppc64 ppc |
| 113 | else |
124 | else |
| 114 | echo ppc |
125 | echo ppc |
| 115 | fi |
126 | fi |
| 116 | ;; |
127 | ;; |
| 117 | s390*) echo s390;; |
128 | s390*) echo s390;; |
| … | |
… | |
| 184 | # Note; later specs normally overwrite earlier ones; however if a later |
195 | # Note; later specs normally overwrite earlier ones; however if a later |
| 185 | # spec starts with '+' then it appends. |
196 | # spec starts with '+' then it appends. |
| 186 | # gcc -dumpspecs is parsed first, followed by files listed by "gcc -v" |
197 | # gcc -dumpspecs is parsed first, followed by files listed by "gcc -v" |
| 187 | # as "Reading <file>", in order. |
198 | # as "Reading <file>", in order. |
| 188 | gcc-specs-directive() { |
199 | gcc-specs-directive() { |
|
|
200 | local cc=$(tc-getCC) |
| 189 | local specfiles=$($(tc-getCC) -v 2>&1 | awk '$1=="Reading" {print $NF}') |
201 | local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}') |
| 190 | $(tc-getCC) -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 \ |
202 | ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 \ |
| 191 | 'BEGIN { pspec=""; spec=""; outside=1 } |
203 | 'BEGIN { pspec=""; spec=""; outside=1 } |
| 192 | $1=="*"directive":" { pspec=spec; spec=""; outside=0; next } |
204 | $1=="*"directive":" { pspec=spec; spec=""; outside=0; next } |
| 193 | outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next } |
205 | outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next } |
| 194 | spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next } |
206 | spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next } |
| 195 | { spec=spec $0 } |
207 | { spec=spec $0 } |