/[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.113 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.113 2006/11/15 22:46:52 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 \
118 -msecure-plt -D*"
116 119
117 # 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
118 # NOTE: currently -Os have issues with gcc3 and K6* arch's 121 # NOTE: currently -Os have issues with gcc3 and K6* arch's
119 export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks" 122 export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks"
120 return 0 123 return 0
163} 166}
164 167
165filter-flags() { 168filter-flags() {
166 _filter-hardened "$@" 169 _filter-hardened "$@"
167 _filter-var CFLAGS "$@" 170 _filter-var CFLAGS "$@"
171 _filter-var CPPFLAGS "$@"
168 _filter-var CXXFLAGS "$@" 172 _filter-var CXXFLAGS "$@"
169 return 0 173 return 0
170} 174}
171 175
172filter-lfs-flags() { 176filter-lfs-flags() {
173 [[ -n $@ ]] && die "filter-lfs-flags takes no arguments" 177 [[ -n $@ ]] && die "filter-lfs-flags takes no arguments"
174 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
175} 179}
176 180
181append-cppflags() {
182 [[ -z $* ]] && return 0
183 export CPPFLAGS="${CPPFLAGS} $*"
184 return 0
185}
186
177append-lfs-flags() { 187append-lfs-flags() {
178 [[ -n $@ ]] && die "append-lfs-flags takes no arguments" 188 [[ -n $@ ]] && die "append-lfs-flags takes no arguments"
179 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
180} 190}
181 191
182append-flags() { 192append-flags() {
183 [[ -z $* ]] && return 0 193 [[ -z $* ]] && return 0
184 export CFLAGS="${CFLAGS} $*" 194 export CFLAGS="${CFLAGS} $*"

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

  ViewVC Help
Powered by ViewVC 1.1.20