| 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.129 2009/01/04 17:22:16 vapier Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/flag-o-matic.eclass,v 1.132 2009/01/21 00:42:20 gengor 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 |
| … | |
… | |
| 71 | -fPIC|-fpic|-fPIE|-fpie|-Wl,pie|-pie) |
71 | -fPIC|-fpic|-fPIE|-fpie|-Wl,pie|-pie) |
| 72 | gcc-specs-pie || continue |
72 | gcc-specs-pie || continue |
| 73 | is-flagq -nopie || append-flags -nopie;; |
73 | is-flagq -nopie || append-flags -nopie;; |
| 74 | -fstack-protector) |
74 | -fstack-protector) |
| 75 | gcc-specs-ssp || continue |
75 | gcc-specs-ssp || continue |
| 76 | is-flagq -fno-stack-protector || append-flags -fno-stack-protector;; |
76 | is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector);; |
| 77 | -fstack-protector-all) |
77 | -fstack-protector-all) |
| 78 | gcc-specs-ssp-to-all || continue |
78 | gcc-specs-ssp-to-all || continue |
| 79 | is-flagq -fno-stack-protector-all || append-flags -fno-stack-protector-all;; |
79 | is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all);; |
| 80 | -fno-strict-overflow) |
80 | -fno-strict-overflow) |
| 81 | gcc-specs-nostrict || continue |
81 | gcc-specs-nostrict || continue |
| 82 | is-flagq -fstrict-overflow || append-flags -fstrict-overflow;; |
82 | is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow);; |
| 83 | esac |
83 | esac |
| 84 | done |
84 | done |
| 85 | } |
85 | } |
| 86 | |
86 | |
| 87 | # Remove occurrences of strings from variable given in $1 |
87 | # Remove occurrences of strings from variable given in $1 |
| … | |
… | |
| 131 | # @DESCRIPTION: |
131 | # @DESCRIPTION: |
| 132 | # Add extra <flags> to the current CPPFLAGS. |
132 | # Add extra <flags> to the current CPPFLAGS. |
| 133 | append-cppflags() { |
133 | append-cppflags() { |
| 134 | [[ -z $* ]] && return 0 |
134 | [[ -z $* ]] && return 0 |
| 135 | export CPPFLAGS="${CPPFLAGS} $*" |
135 | export CPPFLAGS="${CPPFLAGS} $*" |
|
|
136 | return 0 |
|
|
137 | } |
|
|
138 | |
|
|
139 | # @FUNCTION: append-cxxflags |
|
|
140 | # @USAGE: <flags> |
|
|
141 | # @DESCRIPTION: |
|
|
142 | # Add extra <flags> to the current CXXFLAGS. |
|
|
143 | append-cxxflags() { |
|
|
144 | [[ -z $* ]] && return 0 |
|
|
145 | export CXXFLAGS="${CXXFLAGS} $*" |
| 136 | return 0 |
146 | return 0 |
| 137 | } |
147 | } |
| 138 | |
148 | |
| 139 | # @FUNCTION: append-fflags |
149 | # @FUNCTION: append-fflags |
| 140 | # @USAGE: <flags> |
150 | # @USAGE: <flags> |
| … | |
… | |
| 556 | ewarn "has_ssp_all: deprecated, please use gcc-specs-ssp()!" >&2 |
566 | ewarn "has_ssp_all: deprecated, please use gcc-specs-ssp()!" >&2 |
| 557 | |
567 | |
| 558 | # note; this matches only -fstack-protector-all |
568 | # note; this matches only -fstack-protector-all |
| 559 | [[ ${CFLAGS/-fstack-protector-all} != ${CFLAGS} || \ |
569 | [[ ${CFLAGS/-fstack-protector-all} != ${CFLAGS} || \ |
| 560 | -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP_ALL__) ]] || \ |
570 | -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP_ALL__) ]] || \ |
| 561 | gcc-specs-ssp-all |
571 | gcc-specs-ssp-to-all |
| 562 | } |
572 | } |
| 563 | |
573 | |
| 564 | # @FUNCTION: has_ssp |
574 | # @FUNCTION: has_ssp |
| 565 | # @DESCRIPTION: |
575 | # @DESCRIPTION: |
| 566 | # DEPRECATED - use gcc-specs-ssp from toolchain-funcs |
576 | # DEPRECATED - use gcc-specs-ssp from toolchain-funcs |