/[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.114 Revision 1.119
1# Copyright 1999-2006 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/flag-o-matic.eclass,v 1.114 2006/12/27 00:52:12 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/flag-o-matic.eclass,v 1.119 2007/05/12 11:45:51 vapier Exp $
4# 4#
5# Maintainer: base-system@gentoo.org 5# Maintainer: toolchain@gentoo.org
6 6
7# need access to emktemp() 7# need access to emktemp()
8inherit eutils toolchain-funcs multilib 8inherit eutils toolchain-funcs multilib
9 9
10# 10#
90# Returns true if the compiler by default or with current CFLAGS 90# Returns true if the compiler by default or with current CFLAGS
91# generates stack smash protections for most vulnerable functions 91# generates stack smash protections for most vulnerable functions
92# 92#
93 93
94# C[XX]FLAGS that we allow in strip-flags 94# C[XX]FLAGS that we allow in strip-flags
95# Note: shell globs and character lists are allowed
95setup-allowed-flags() { 96setup-allowed-flags() {
96 if [[ -z ${ALLOWED_FLAGS} ]] ; then 97 if [[ -z ${ALLOWED_FLAGS} ]] ; then
97 export ALLOWED_FLAGS="-pipe" 98 export ALLOWED_FLAGS="-pipe"
98 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune" 99 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune"
99 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all" 100 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all"
100 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking -fno-bounds-checking" 101 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking"
101 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time" 102 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time"
102 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g0 -g1 -g2 -g3 -ggdb -ggdb0 -ggdb1 -ggdb2 -ggdb3" 103 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+"
103 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident" 104 export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident"
104 fi 105 fi
105 # allow a bunch of flags that negate features / control ABI 106 # allow a bunch of flags that negate features / control ABI
106 ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all" 107 ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all \
108 -fno-strict-aliasing -fno-bounds-checking"
107 ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs \ 109 ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs \
108 -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow \ 110 -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow \
109 -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 \ 111 -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 \
110 -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu \ 112 -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu \
111 -mieee -mieee-with-inexact -mschedule \ 113 -mieee -mieee-with-inexact -mschedule \
112 -mtls-direct-seg-refs -mno-tls-direct-seg-refs \ 114 -mtls-direct-seg-refs -mno-tls-direct-seg-refs \
113 -mflat -mno-flat -mno-faster-structs -mfaster-structs \ 115 -mflat -mno-flat -mno-faster-structs -mfaster-structs \
114 -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC \ 116 -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC \
115 -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias \ 117 -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias \
116 -msecure-plt" 118 -msecure-plt -D*"
117 119
118 # C[XX]FLAGS that we are think is ok, but needs testing 120 # C[XX]FLAGS that we are think is ok, but needs testing
119 # NOTE: currently -Os have issues with gcc3 and K6* arch's 121 # NOTE: currently -Os have issues with gcc3 and K6* arch's
120 export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks" 122 export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks"
121 return 0 123 return 0
164} 166}
165 167
166filter-flags() { 168filter-flags() {
167 _filter-hardened "$@" 169 _filter-hardened "$@"
168 _filter-var CFLAGS "$@" 170 _filter-var CFLAGS "$@"
171 _filter-var CPPFLAGS "$@"
169 _filter-var CXXFLAGS "$@" 172 _filter-var CXXFLAGS "$@"
170 return 0 173 return 0
171} 174}
172 175
173filter-lfs-flags() { 176filter-lfs-flags() {
174 [[ -n $@ ]] && die "filter-lfs-flags takes no arguments" 177 [[ -n $@ ]] && die "filter-lfs-flags takes no arguments"
175 filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE 178 filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
176} 179}
177 180
181append-cppflags() {
182 [[ -z $* ]] && return 0
183 export CPPFLAGS="${CPPFLAGS} $*"
184 return 0
185}
186
178append-lfs-flags() { 187append-lfs-flags() {
179 [[ -n $@ ]] && die "append-lfs-flags takes no arguments" 188 [[ -n $@ ]] && die "append-lfs-flags takes no arguments"
180 append-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE 189 append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
181} 190}
182 191
183append-flags() { 192append-flags() {
184 [[ -z $* ]] && return 0 193 [[ -z $* ]] && return 0
185 export CFLAGS="${CFLAGS} $*" 194 export CFLAGS="${CFLAGS} $*"

Legend:
Removed from v.1.114  
changed lines
  Added in v.1.119

  ViewVC Help
Powered by ViewVC 1.1.20