1 | # Copyright 1999-2009 Gentoo Foundation |
1 | # Copyright 1999-2009 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/flag-o-matic.eclass,v 1.132 2009/01/21 00:42:20 gengor Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/flag-o-matic.eclass,v 1.143 2009/08/15 18:04:08 zmedico Exp $ |
4 | |
4 | |
5 | # @ECLASS: flag-o-matic.eclass |
5 | # @ECLASS: flag-o-matic.eclass |
6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
7 | # toolchain@gentoo.org |
7 | # toolchain@gentoo.org |
8 | # @BLURB: common functions to manipulate and query toolchain flags |
8 | # @BLURB: common functions to manipulate and query toolchain flags |
… | |
… | |
39 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident" |
39 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident" |
40 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -W* -w" |
40 | export ALLOWED_FLAGS="${ALLOWED_FLAGS} -W* -w" |
41 | fi |
41 | fi |
42 | # allow a bunch of flags that negate features / control ABI |
42 | # allow a bunch of flags that negate features / control ABI |
43 | ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all \ |
43 | ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all \ |
44 | -fno-strict-aliasing -fno-bounds-checking -fstrict-overflow" |
44 | -fno-strict-aliasing -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer" |
45 | ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs \ |
45 | ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs \ |
46 | -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow \ |
46 | -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 \ |
|
|
47 | -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow \ |
|
|
48 | -mno-popcnt -mno-abm \ |
47 | -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 \ |
49 | -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt \ |
48 | -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu \ |
50 | -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu \ |
49 | -mieee -mieee-with-inexact -mschedule \ |
51 | -mieee -mieee-with-inexact -mschedule \ |
50 | -mtls-direct-seg-refs -mno-tls-direct-seg-refs \ |
52 | -mtls-direct-seg-refs -mno-tls-direct-seg-refs \ |
51 | -mflat -mno-flat -mno-faster-structs -mfaster-structs \ |
53 | -mflat -mno-flat -mno-faster-structs -mfaster-structs \ |
52 | -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC \ |
54 | -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC \ |
… | |
… | |
134 | [[ -z $* ]] && return 0 |
136 | [[ -z $* ]] && return 0 |
135 | export CPPFLAGS="${CPPFLAGS} $*" |
137 | export CPPFLAGS="${CPPFLAGS} $*" |
136 | return 0 |
138 | return 0 |
137 | } |
139 | } |
138 | |
140 | |
|
|
141 | # @FUNCTION: append-cflags |
|
|
142 | # @USAGE: <flags> |
|
|
143 | # @DESCRIPTION: |
|
|
144 | # Add extra <flags> to the current CFLAGS. |
|
|
145 | append-cflags() { |
|
|
146 | [[ -z $* ]] && return 0 |
|
|
147 | export CFLAGS="${CFLAGS} $*" |
|
|
148 | return 0 |
|
|
149 | } |
|
|
150 | |
139 | # @FUNCTION: append-cxxflags |
151 | # @FUNCTION: append-cxxflags |
140 | # @USAGE: <flags> |
152 | # @USAGE: <flags> |
141 | # @DESCRIPTION: |
153 | # @DESCRIPTION: |
142 | # Add extra <flags> to the current CXXFLAGS. |
154 | # Add extra <flags> to the current CXXFLAGS. |
143 | append-cxxflags() { |
155 | append-cxxflags() { |
… | |
… | |
169 | # @USAGE: <flags> |
181 | # @USAGE: <flags> |
170 | # @DESCRIPTION: |
182 | # @DESCRIPTION: |
171 | # Add extra <flags> to your current {C,CXX,F,FC}FLAGS. |
183 | # Add extra <flags> to your current {C,CXX,F,FC}FLAGS. |
172 | append-flags() { |
184 | append-flags() { |
173 | [[ -z $* ]] && return 0 |
185 | [[ -z $* ]] && return 0 |
174 | export CFLAGS="${CFLAGS} $*" |
186 | append-cflags "$@" |
175 | export CXXFLAGS="${CXXFLAGS} $*" |
187 | append-cxxflags "$@" |
176 | export FFLAGS="${FFLAGS} $*" |
188 | append-fflags "$@" |
177 | export FCFLAGS="${FCFLAGS} $*" |
|
|
178 | return 0 |
189 | return 0 |
179 | } |
190 | } |
180 | |
191 | |
181 | # @FUNCTION: replace-flags |
192 | # @FUNCTION: replace-flags |
182 | # @USAGE: <old> <new> |
193 | # @USAGE: <old> <new> |
… | |
… | |
312 | local NEW_CXXFLAGS="" |
323 | local NEW_CXXFLAGS="" |
313 | local NEW_FFLAGS="" |
324 | local NEW_FFLAGS="" |
314 | local NEW_FCFLAGS="" |
325 | local NEW_FCFLAGS="" |
315 | |
326 | |
316 | # Allow unstable C[XX]FLAGS if we are using unstable profile ... |
327 | # Allow unstable C[XX]FLAGS if we are using unstable profile ... |
317 | if has ~$(tc-arch) ${ACCEPT_KEYWORDS} ; then |
328 | if has \~$(tc-arch) ${ACCEPT_KEYWORDS} ; then |
318 | ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}" |
329 | ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}" |
319 | fi |
330 | fi |
320 | |
331 | |
321 | set -f # disable pathname expansion |
332 | set -f # disable pathname expansion |
322 | |
333 | |
… | |
… | |
702 | # @FUNCTION: bindnow-flags |
713 | # @FUNCTION: bindnow-flags |
703 | # @RETURN: Returns the flags to enable "now" binding in the current selected linker. |
714 | # @RETURN: Returns the flags to enable "now" binding in the current selected linker. |
704 | # @DESCRIPTION: |
715 | # @DESCRIPTION: |
705 | # DEPRECATED - Gets the flags needed for "NOW" binding |
716 | # DEPRECATED - Gets the flags needed for "NOW" binding |
706 | bindnow-flags() { |
717 | bindnow-flags() { |
707 | ewarn "QA: stop using the bindnow-flags function ... simply drop it from your ebuild" |
718 | eerror "QA: stop using the bindnow-flags function ... simply drop it from your ebuild" |
|
|
719 | die "Stop using bindnow-flags." |
708 | } |
720 | } |
709 | |
721 | |
710 | |
722 | |
711 | # Some tests for when we screw with things and want to make |
723 | # Some tests for when we screw with things and want to make |
712 | # sure we didn't break anything |
724 | # sure we didn't break anything |