Gentoo Archives: gentoo-commits

From: Mike Frysinger <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: eclass/
Date: Tue, 01 Sep 2015 04:14:49
Message-Id: 1441080857.b6f74df7a23d7e90bdb6adb4ef6fb05e4896fc7f.vapier@gentoo
1 commit: b6f74df7a23d7e90bdb6adb4ef6fb05e4896fc7f
2 Author: Mike Frysinger <vapier <AT> gentoo <DOT> org>
3 AuthorDate: Tue Sep 1 04:14:17 2015 +0000
4 Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org>
5 CommitDate: Tue Sep 1 04:14:17 2015 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b6f74df7
7
8 flag-o-matic.eclass: all-flag-vars: rewrite to use bash arrays
9
10 This makes quoting much saner.
11
12 eclass/flag-o-matic.eclass | 85 ++++++++++++++++++++++++----------------------
13 1 file changed, 44 insertions(+), 41 deletions(-)
14
15 diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
16 index 408aa47..aad71a8 100644
17 --- a/eclass/flag-o-matic.eclass
18 +++ b/eclass/flag-o-matic.eclass
19 @@ -23,48 +23,50 @@ all-flag-vars() {
20 # {C,CPP,CXX,CCAS,F,FC,LD}FLAGS that we allow in strip-flags
21 # Note: shell globs and character lists are allowed
22 setup-allowed-flags() {
23 - ALLOWED_FLAGS="-pipe"
24 - ALLOWED_FLAGS+=" -O -O1 -O2 -Os -Og -mcpu -march -mtune"
25 - ALLOWED_FLAGS+=" -fstack-protector* -fsanitize*"
26 - ALLOWED_FLAGS+=" -fbounds-check -fbounds-checking -fno-strict-overflow"
27 - ALLOWED_FLAGS+=" -fno-PIE -fno-pie -nopie -fno-unit-at-a-time"
28 - ALLOWED_FLAGS+=" -g -g[0-9] -ggdb -ggdb[0-9] -gdwarf-* gstabs -gstabs+"
29 - ALLOWED_FLAGS+=" -fno-ident -fpermissive -frecord-gcc-switches"
30 - ALLOWED_FLAGS+=" -fdiagnostics*"
31 - ALLOWED_FLAGS+=" -W* -w"
32 + ALLOWED_FLAGS=(
33 + -pipe -O '-O[12sg]' -mcpu -march -mtune
34 + '-fstack-protector*' '-fsanitize*'
35 + -fbounds-check -fbounds-checking -fno-strict-overflow
36 + -fno-PIE -fno-pie -nopie -fno-unit-at-a-time
37 + -g '-g[0-9]' -ggdb '-ggdb[0-9]' '-gdwarf-*' gstabs -gstabs+
38 + -fno-ident -fpermissive -frecord-gcc-switches
39 + '-fdiagnostics*'
40 + '-W*' -w
41 +
42 + # CPPFLAGS and LDFLAGS
43 + '-[DUILR]*' '-Wl,*'
44 + )
45
46 # allow a bunch of flags that negate features / control ABI
47 - ALLOWED_FLAGS+=" -fno-stack-protector* -fabi-version=* \
48 - -fno-strict-aliasing -fno-bounds-check -fno-bounds-checking -fstrict-overflow \
49 - -fno-omit-frame-pointer -fno-builtin*"
50 - ALLOWED_FLAGS+=" -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse \
51 - -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 \
52 - -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt \
53 - -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt \
54 - -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu \
55 - -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe \
56 - -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat \
57 - -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi \
58 - -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel \
59 - -mstack-bias -mno-stack-bias -msecure-plt -m*-toc -mfloat-abi \
60 - -mfix-r10000 -mno-fix-r10000 -D* -U*"
61 -
62 - # 4.5
63 - ALLOWED_FLAGS+=" -mno-fma4 -mno-movbe -mno-xop -mno-lwp"
64 - # 4.6
65 - ALLOWED_FLAGS+=" -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm"
66 - # 4.7
67 - ALLOWED_FLAGS+=" -mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt"
68 - # 4.8
69 - ALLOWED_FLAGS+=" -mno-fxsr -mno-rtm -mno-xsave -mno-xsaveopt"
70 - # 4.9
71 - ALLOWED_FLAGS+=" -mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha"
72 -
73 - # CPPFLAGS and LDFLAGS
74 - ALLOWED_FLAGS+=" -I* -L* -R* -Wl,*"
75 -
76 - export ALLOWED_FLAGS
77 - return 0
78 + ALLOWED_FLAGS+=(
79 + '-fno-stack-protector*' '-fabi-version=*'
80 + -fno-strict-aliasing -fno-bounds-check -fno-bounds-checking -fstrict-overflow
81 + -fno-omit-frame-pointer '-fno-builtin*'
82 + )
83 + ALLOWED_FLAGS+=(
84 + -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse
85 + -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2
86 + -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt
87 + -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt
88 + -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu
89 + -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe
90 + -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat
91 + -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi
92 + -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel
93 + -mstack-bias -mno-stack-bias -msecure-plt '-m*-toc' -mfloat-abi
94 + -mfix-r10000 -mno-fix-r10000
95 +
96 + # gcc 4.5
97 + -mno-fma4 -mno-movbe -mno-xop -mno-lwp
98 + # gcc 4.6
99 + -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm
100 + # gcc 4.7
101 + -mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt
102 + # gcc 4.8
103 + -mno-fxsr -mno-rtm -mno-xsave -mno-xsaveopt
104 + # gcc 4.9
105 + -mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha
106 + )
107 }
108
109 # inverted filters for hardened compiler. This is trying to unpick
110 @@ -375,6 +377,7 @@ filter-mfpmath() {
111 strip-flags() {
112 local x y var
113
114 + local ALLOWED_FLAGS
115 setup-allowed-flags
116
117 set -f # disable pathname expansion
118 @@ -384,7 +387,7 @@ strip-flags() {
119
120 for x in ${!var} ; do
121 local flag=${x%%=*}
122 - for y in ${ALLOWED_FLAGS} ; do
123 + for y in "${ALLOWED_FLAGS[@]}" ; do
124 if [[ -z ${flag%%${y}} ]] ; then
125 new+=( "${x}" )
126 break