Gentoo Archives: gentoo-commits

From: "Donnie Berkholz (dberkholz)" <dberkholz@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in eclass: flag-o-matic.eclass
Date: Thu, 03 Jul 2008 05:31:01
Message-Id: E1KEHPC-0002dB-OE@stork.gentoo.org
1 dberkholz 08/07/03 05:30:54
2
3 Modified: flag-o-matic.eclass
4 Log:
5 [Fortran] Add Fortran support to filter-flags(), append-flags(), is-flagq(), strip-flags(), strip-unsupported-flags(), get-flag(). Add new functions parallel to existing ones for Fortran: append-fflags(), test-flag-F77(), test-flags-FC().
6
7 Revision Changes Path
8 1.124 eclass/flag-o-matic.eclass
9
10 file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/eclass/flag-o-matic.eclass?rev=1.124&view=markup
11 plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/eclass/flag-o-matic.eclass?rev=1.124&content-type=text/plain
12 diff : http://sources.gentoo.org/viewcvs.py/gentoo-x86/eclass/flag-o-matic.eclass?r1=1.123&r2=1.124
13
14 Index: flag-o-matic.eclass
15 ===================================================================
16 RCS file: /var/cvsroot/gentoo-x86/eclass/flag-o-matic.eclass,v
17 retrieving revision 1.123
18 retrieving revision 1.124
19 diff -u -r1.123 -r1.124
20 --- flag-o-matic.eclass 7 Jun 2008 16:42:32 -0000 1.123
21 +++ flag-o-matic.eclass 3 Jul 2008 05:30:54 -0000 1.124
22 @@ -1,6 +1,6 @@
23 # Copyright 1999-2008 Gentoo Foundation
24 # Distributed under the terms of the GNU General Public License v2
25 -# $Header: /var/cvsroot/gentoo-x86/eclass/flag-o-matic.eclass,v 1.123 2008/06/07 16:42:32 flameeyes Exp $
26 +# $Header: /var/cvsroot/gentoo-x86/eclass/flag-o-matic.eclass,v 1.124 2008/07/03 05:30:54 dberkholz Exp $
27
28 # @ECLASS: flag-o-matic.eclass
29 # @MAINTAINER:
30 @@ -26,7 +26,7 @@
31 # has_ssp
32
33
34 -# C[XX]FLAGS that we allow in strip-flags
35 +# {C,CXX,F,FC}FLAGS that we allow in strip-flags
36 # Note: shell globs and character lists are allowed
37 setup-allowed-flags() {
38 if [[ -z ${ALLOWED_FLAGS} ]] ; then
39 @@ -53,7 +53,7 @@
40 -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias \
41 -msecure-plt -D*"
42
43 - # C[XX]FLAGS that we are think is ok, but needs testing
44 + # {C,CXX,F,FC}FLAGS that we are think is ok, but needs testing
45 # NOTE: currently -Os have issues with gcc3 and K6* arch's
46 export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks"
47 return 0
48 @@ -104,12 +104,14 @@
49 # @FUNCTION: filter-flags
50 # @USAGE: <flags>
51 # @DESCRIPTION:
52 -# Remove particular <flags> from {C,CPP,CXX}FLAGS. Accepts shell globs.
53 +# Remove particular <flags> from {C,CPP,CXX,F,FC}FLAGS. Accepts shell globs.
54 filter-flags() {
55 _filter-hardened "$@"
56 _filter-var CFLAGS "$@"
57 _filter-var CPPFLAGS "$@"
58 _filter-var CXXFLAGS "$@"
59 + _filter-var FFLAGS "$@"
60 + _filter-var FCFLAGS "$@"
61 return 0
62 }
63
64 @@ -131,6 +133,17 @@
65 return 0
66 }
67
68 +# @FUNCTION: append-fflags
69 +# @USAGE: <flags>
70 +# @DESCRIPTION:
71 +# Add extra <flags> to the current {F,FC}FLAGS.
72 +append-fflags() {
73 + [[ -z $* ]] && return 0
74 + export FFLAGS="${FFLAGS} $*"
75 + export FCFLAGS="${FCFLAGS} $*"
76 + return 0
77 +}
78 +
79 # @FUNCTION: append-lfs-flags
80 # @DESCRIPTION:
81 # Add flags that enable Large File Support.
82 @@ -142,11 +155,13 @@
83 # @FUNCTION: append-flags
84 # @USAGE: <flags>
85 # @DESCRIPTION:
86 -# Add extra <flags> to your current C[XX]FLAGS.
87 +# Add extra <flags> to your current {C,CXX,F,FC}FLAGS.
88 append-flags() {
89 [[ -z $* ]] && return 0
90 export CFLAGS="${CFLAGS} $*"
91 export CXXFLAGS="${CXXFLAGS} $*"
92 + export FFLAGS="${FFLAGS} $*"
93 + export FCFLAGS="${FCFLAGS} $*"
94 return 0
95 }
96
97 @@ -162,7 +177,7 @@
98 local f fset
99 declare -a new_CFLAGS new_CXXFLAGS
100
101 - for fset in CFLAGS CXXFLAGS; do
102 + for fset in CFLAGS CXXFLAGS FFLAGS FCFLAGS; do
103 # Looping over the flags instead of using a global
104 # substitution ensures that we're working with flag atoms.
105 # Otherwise globs like -O* have the potential to wipe out the
106 @@ -207,16 +222,16 @@
107 # @FUNCTION: is-flagq
108 # @USAGE: <flag>
109 # @DESCRIPTION:
110 -# Returns shell true if <flag> is in C[XX]FLAGS, else returns shell false. Accepts shell globs.
111 +# Returns shell true if <flag> is in {C,CXX,F,FC}FLAGS, else returns shell false. Accepts shell globs.
112 is-flagq() {
113 [[ -n $2 ]] && die "Usage: is-flag <flag>"
114 - _is_flagq CFLAGS $1 || _is_flagq CXXFLAGS $1
115 + _is_flagq CFLAGS $1 || _is_flagq CXXFLAGS $1 || _is_flagq FFLAGS $1 || _is_flagq FCFLAGS $1
116 }
117
118 # @FUNCTION: is-flag
119 # @USAGE: <flag>
120 # @DESCRIPTION:
121 -# Echo's "true" if flag is set in C[XX]FLAGS. Accepts shell globs.
122 +# Echo's "true" if flag is set in {C,CXX,F,FC}FLAGS. Accepts shell globs.
123 is-flag() {
124 is-flagq "$@" && echo true
125 }
126 @@ -276,12 +291,14 @@
127 # @DESCRIPTION:
128 # Strip C[XX]FLAGS of everything except known good/safe flags.
129 strip-flags() {
130 - local x y flag NEW_CFLAGS NEW_CXXFLAGS
131 + local x y flag NEW_CFLAGS NEW_CXXFLAGS NEW_FFLAGS NEW_FCFLAGS
132
133 setup-allowed-flags
134
135 local NEW_CFLAGS=""
136 local NEW_CXXFLAGS=""
137 + local NEW_FFLAGS=""
138 + local NEW_FCFLAGS=""
139
140 # Allow unstable C[XX]FLAGS if we are using unstable profile ...
141 if has ~$(tc-arch) ${ACCEPT_KEYWORDS} ; then
142 @@ -310,6 +327,26 @@
143 done
144 done
145
146 + for x in ${FFLAGS}; do
147 + for y in ${ALLOWED_FLAGS}; do
148 + flag=${x%%=*}
149 + if [ "${flag%%${y}}" = "" ] ; then
150 + NEW_FFLAGS="${NEW_FFLAGS} ${x}"
151 + break
152 + fi
153 + done
154 + done
155 +
156 + for x in ${FCFLAGS}; do
157 + for y in ${ALLOWED_FLAGS}; do
158 + flag=${x%%=*}
159 + if [ "${flag%%${y}}" = "" ] ; then
160 + NEW_FCFLAGS="${NEW_FCFLAGS} ${x}"
161 + break
162 + fi
163 + done
164 + done
165 +
166 # In case we filtered out all optimization flags fallback to -O2
167 if [ "${CFLAGS/-O}" != "${CFLAGS}" -a "${NEW_CFLAGS/-O}" = "${NEW_CFLAGS}" ]; then
168 NEW_CFLAGS="${NEW_CFLAGS} -O2"
169 @@ -317,11 +354,19 @@
170 if [ "${CXXFLAGS/-O}" != "${CXXFLAGS}" -a "${NEW_CXXFLAGS/-O}" = "${NEW_CXXFLAGS}" ]; then
171 NEW_CXXFLAGS="${NEW_CXXFLAGS} -O2"
172 fi
173 + if [ "${FFLAGS/-O}" != "${FFLAGS}" -a "${NEW_FFLAGS/-O}" = "${NEW_FFLAGS}" ]; then
174 + NEW_FFLAGS="${NEW_FFLAGS} -O2"
175 + fi
176 + if [ "${FCFLAGS/-O}" != "${FCFLAGS}" -a "${NEW_FCFLAGS/-O}" = "${NEW_FCFLAGS}" ]; then
177 + NEW_FCFLAGS="${NEW_FCFLAGS} -O2"
178 + fi
179
180 set +f # re-enable pathname expansion
181
182 export CFLAGS="${NEW_CFLAGS}"
183 export CXXFLAGS="${NEW_CXXFLAGS}"
184 + export FFLAGS="${NEW_FFLAGS}"
185 + export FCFLAGS="${NEW_FCFLAGS}"
186 return 0
187 }
188
189 @@ -349,6 +394,18 @@
190 # Returns shell true if <flag> is supported by the C++ compiler, else returns shell false.
191 test-flag-CXX() { test-flag-PROG "CXX" "$1"; }
192
193 +# @FUNCTION: test-flag-F77
194 +# @USAGE: <flag>
195 +# @DESCRIPTION:
196 +# Returns shell true if <flag> is supported by the Fortran 77 compiler, else returns shell false.
197 +test-flag-F77() { test-flag-PROG "F77" "$1"; }
198 +
199 +# @FUNCTION: test-flag-FC
200 +# @USAGE: <flag>
201 +# @DESCRIPTION:
202 +# Returns shell true if <flag> is supported by the Fortran 90 compiler, else returns shell false.
203 +test-flag-FC() { test-flag-PROG "FC" "$1"; }
204 +
205 test-flags-PROG() {
206 local comp=$1
207 local flags
208 @@ -381,6 +438,18 @@
209 # Returns shell true if <flags> are supported by the C++ compiler, else returns shell false.
210 test-flags-CXX() { test-flags-PROG "CXX" "$@"; }
211
212 +# @FUNCTION: test-flags-F77
213 +# @USAGE: <flags>
214 +# @DESCRIPTION:
215 +# Returns shell true if <flags> are supported by the Fortran 77 compiler, else returns shell false.
216 +test-flags-F77() { test-flags-PROG "F77" "$@"; }
217 +
218 +# @FUNCTION: test-flags-FC
219 +# @USAGE: <flags>
220 +# @DESCRIPTION:
221 +# Returns shell true if <flags> are supported by the Fortran 90 compiler, else returns shell false.
222 +test-flags-FC() { test-flags-PROG "FC" "$@"; }
223 +
224 # @FUNCTION: test-flags
225 # @USAGE: <flags>
226 # @DESCRIPTION:
227 @@ -412,10 +481,12 @@
228
229 # @FUNCTION: strip-unsupported-flags
230 # @DESCRIPTION:
231 -# Strip C[XX]FLAGS of any flags not supported by the active toolchain.
232 +# Strip {C,CXX,F,FC}FLAGS of any flags not supported by the active toolchain.
233 strip-unsupported-flags() {
234 export CFLAGS=$(test-flags-CC ${CFLAGS})
235 export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS})
236 + export FFLAGS=$(test-flags-F77 ${FFLAGS})
237 + export FCFLAGS=$(test-flags-FC ${FCFLAGS})
238 }
239
240 # @FUNCTION: get-flag
241 @@ -430,7 +501,7 @@
242 # for example, if CFLAGS="-march=i686":
243 # `get-flag -march` == "-march=i686"
244 # `get-flag march` == "i686"
245 - for f in ${CFLAGS} ${CXXFLAGS} ; do
246 + for f in ${CFLAGS} ${CXXFLAGS} ${FFLAGS} ${FCFLAGS} ; do
247 if [ "${f/${findflag}}" != "${f}" ] ; then
248 printf "%s\n" "${f/-${findflag}=}"
249 return 0
250
251
252
253 --
254 gentoo-commits@l.g.o mailing list