/[gentoo-x86]/eclass/flag-o-matic.eclass
Gentoo

Diff of /eclass/flag-o-matic.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.143 Revision 1.150
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.143 2009/08/15 18:04:08 zmedico Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/flag-o-matic.eclass,v 1.150 2011/02/25 10:51:44 dirtyepic 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
34 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune" 34 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune"
35 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all" 35 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all"
36 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking -fno-strict-overflow" 36 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking -fno-strict-overflow"
37 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time" 37 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time"
38 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+" 38 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+"
39 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident" 39 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident -fpermissive"
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 -fno-omit-frame-pointer" 44 -fno-strict-aliasing -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer"
46 -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 \ 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 \ 47 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow \
48 -mno-popcnt -mno-abm \ 48 -mno-popcnt -mno-abm \
49 -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt \ 49 -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt \
50 -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu \ 50 -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu \
51 -mieee -mieee-with-inexact -mschedule \ 51 -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe \
52 -mtls-direct-seg-refs -mno-tls-direct-seg-refs \ 52 -mtls-direct-seg-refs -mno-tls-direct-seg-refs \
53 -mflat -mno-flat -mno-faster-structs -mfaster-structs \ 53 -mflat -mno-flat -mno-faster-structs -mfaster-structs \
54 -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC \ 54 -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC \
55 -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias \ 55 -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias \
56 -msecure-plt -m*-toc -D* -U*" 56 -msecure-plt -m*-toc -D* -U*"
57
58 # 4.5
59 ALLOWED_FLAGS="${ALLOWED_FLAGS} -mno-fma4 -mno-movbe -mno-xop -mno-lwp"
60 # 4.6
61 ALLOWED_FLAGS="${ALLOWED_FLAGS} -mno-fsgsbase -mno-rdrnd -mno-f16c \
62 -mno-bmi -mno-tbm"
57 63
58 # {C,CXX,F,FC}FLAGS that we are think is ok, but needs testing 64 # {C,CXX,F,FC}FLAGS that we are think is ok, but needs testing
59 # NOTE: currently -Os have issues with gcc3 and K6* arch's 65 # NOTE: currently -Os have issues with gcc3 and K6* arch's
60 export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks" 66 export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks"
61 return 0 67 return 0
323 local NEW_CXXFLAGS="" 329 local NEW_CXXFLAGS=""
324 local NEW_FFLAGS="" 330 local NEW_FFLAGS=""
325 local NEW_FCFLAGS="" 331 local NEW_FCFLAGS=""
326 332
327 # Allow unstable C[XX]FLAGS if we are using unstable profile ... 333 # Allow unstable C[XX]FLAGS if we are using unstable profile ...
328 if has \~$(tc-arch) ${ACCEPT_KEYWORDS} ; then 334 if has "~$(tc-arch)" ${ACCEPT_KEYWORDS} ; then
329 ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}" 335 ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}"
330 fi 336 fi
331 337
332 set -f # disable pathname expansion 338 set -f # disable pathname expansion
333 339
666 fi 672 fi
667 673
668 export CFLAGS CXXFLAGS 674 export CFLAGS CXXFLAGS
669} 675}
670 676
677# @FUNCTION: append-libs
678# @USAGE: <libs>
679# @DESCRIPTION:
680# Add extra <libs> to the current LIBS.
681append-libs() {
682 [[ -z $* ]] && return 0
683 local flag
684 for flag in "$@"; do
685 [[ ${flag} == -l* ]] && flag=${flag#-l}
686 export LIBS="${LIBS} -l${flag}"
687 done
688
689 return 0
690}
691
671# @FUNCTION: append-ldflags 692# @FUNCTION: append-ldflags
672# @USAGE: <flags> 693# @USAGE: <flags>
673# @DESCRIPTION: 694# @DESCRIPTION:
674# Add extra <flags> to the current LDFLAGS. 695# Add extra <flags> to the current LDFLAGS.
675append-ldflags() { 696append-ldflags() {
708 set -- "$@" ${x//,/ } 729 set -- "$@" ${x//,/ }
709 done 730 done
710 echo "$@" 731 echo "$@"
711} 732}
712 733
713# @FUNCTION: bindnow-flags 734# @FUNCTION: no-as-needed
714# @RETURN: Returns the flags to enable "now" binding in the current selected linker. 735# @RETURN: Flag to disable asneeded behavior for use with append-ldflags.
715# @DESCRIPTION: 736no-as-needed() {
716# DEPRECATED - Gets the flags needed for "NOW" binding 737 case $($(tc-getLD) -v 2>&1 </dev/null) in
717bindnow-flags() { 738 *GNU*) # GNU ld
718 eerror "QA: stop using the bindnow-flags function ... simply drop it from your ebuild" 739 echo "-Wl,--no-as-needed" ;;
719 die "Stop using bindnow-flags." 740 esac
720} 741}
721
722 742
723# Some tests for when we screw with things and want to make 743# Some tests for when we screw with things and want to make
724# sure we didn't break anything 744# sure we didn't break anything
725#TESTS() { 745#TESTS() {
726# CFLAGS="-a -b -c=1" 746# CFLAGS="-a -b -c=1"

Legend:
Removed from v.1.143  
changed lines
  Added in v.1.150

  ViewVC Help
Powered by ViewVC 1.1.20