vapier      14/06/01 17:29:42

  Modified:             toolchain.eclass
  Log:
  downgrade_arch_flags: simplify bash logic a bit

Revision  Changes    Path
1.631                eclass/toolchain.eclass

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/toolchain.eclass?rev=1.631&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/toolchain.eclass?rev=1.631&content-type=text/plain
diff : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/eclass/toolchain.eclass?r1=1.630&r2=1.631

Index: toolchain.eclass
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/toolchain.eclass,v
retrieving revision 1.630
retrieving revision 1.631
diff -u -r1.630 -r1.631
--- toolchain.eclass    21 May 2014 21:30:26 -0000      1.630
+++ toolchain.eclass    1 Jun 2014 17:29:42 -0000       1.631
@@ -1,6 +1,6 @@
 # Copyright 1999-2014 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/toolchain.eclass,v 1.630 2014/05/21 
21:30:26 rhill Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/toolchain.eclass,v 1.631 2014/06/01 
17:29:42 vapier Exp $
 
 # Maintainer: Toolchain Ninjas <[email protected]>
 
@@ -619,7 +619,6 @@
 
 # configure to build with the hardened GCC specs as the default
 make_gcc_hard() {
-       
        # we want to be able to control the pie patch logic via something other
        # than ALL_CFLAGS...
        sed -e '/^ALL_CFLAGS/iHARD_CFLAGS = ' \
@@ -1222,8 +1221,8 @@
        # If -march=native isn't supported we have to tease out the actual arch
        if [[ ${myarch} == native || ${mytune} == native ]] ; then
                if [[ ${bver} < 4.2 ]] ; then
-                       arch=$(echo "" | $(tc-getCC) -march=native -v -E - 2>&1 
\
-                                | grep cc1 | sed -e 's:.*-march=\([^ 
]*\).*:\1:')
+                       arch=$($(tc-getCC) -march=native -v -E -P - </dev/null 
2>&1 \
+                               | sed -rn "/cc1.*-march/s:.*-march=([^ 
']*).*:\1:p")
                        replace-cpu-flags native ${arch}
                fi
        fi
@@ -1234,55 +1233,56 @@
        [[ ${mytune} == x86-64 ]] && filter-flags '-mtune=*'
        [[ ${bver} < 3.4 ]] && filter-flags '-mtune=*'
 
-       declare -a archlist
-       # "arch" "added" "replacement"
-       archlist=("bdver4 4.9 bdver3")
-       archlist+=("bonnell 4.9 atom")
-       archlist+=("broadwell 4.9 core-avx2")
-       archlist+=("haswell 4.9 core-avx2")
-       archlist+=("ivybridge 4.9 core-avx-i")
-       archlist+=("nehalem 4.9 corei7")
-       archlist+=("sandybridge 4.9 corei7-avx")
-       archlist+=("silvermont 4.9 corei7")
-       archlist+=("westmere 4.9 corei7")
-       archlist+=("bdver3 4.8 bdver2")
-       archlist+=("btver2 4.8 btver1")
-       archlist+=("bdver2 4.7 bdver1")
-       archlist+=("core-avx2 4.7 core-avx-i")
-       archlist+=("bdver1 4.6 amdfam10")
-       archlist+=("btver1 4.6 amdfam10")
-       archlist+=("core-avx-i 4.6 core2")
-       archlist+=("corei7 4.6 core2")
-       archlist+=("corei7-avx 4.6 core2")
-       archlist+=("atom 4.5 core2")
-       archlist+=("amdfam10 4.3 k8")
-       archlist+=("athlon64-sse3 4.3 k8")
-       archlist+=("barcelona 4.3 k8")
-       archlist+=("core2 4.3 nocona")
-       archlist+=("geode 4.3 k6-2") # gcc.gnu.org/PR41989#c22
-       archlist+=("k8-sse3 4.3 k8")
-       archlist+=("opteron-sse3 4.3 k8")
-       archlist+=("athlon-fx 3.4 x86-64")
-       archlist+=("athlon64 3.4 x86-64")
-       archlist+=("c3-2 3.4 c3")
-       archlist+=("k8 3.4 x86-64")
-       archlist+=("opteron 3.4 x86-64")
-       archlist+=("pentium-m 3.4 pentium3")
-       archlist+=("pentium3m 3.4 pentium3")
-       archlist+=("pentium4m 3.4 pentium4")
+       local archlist=(
+               # "added" "arch" "replacement"
+               4.9 bdver4 bdver3
+               4.9 bonnell atom
+               4.9 broadwell core-avx2
+               4.9 haswell core-avx2
+               4.9 ivybridge core-avx-i
+               4.9 nehalem corei7
+               4.9 sandybridge corei7-avx
+               4.9 silvermont corei7
+               4.9 westmere corei7
+               4.8 bdver3 bdver2
+               4.8 btver2 btver1
+               4.7 bdver2 bdver1
+               4.7 core-avx2 core-avx-i
+               4.6 bdver1 amdfam10
+               4.6 btver1 amdfam10
+               4.6 core-avx-i core2
+               4.6 corei7 core2
+               4.6 corei7-avx core2
+               4.5 atom core2
+               4.3 amdfam10 k8
+               4.3 athlon64-sse3 k8
+               4.3 barcelona k8
+               4.3 core2 nocona
+               4.3 geode k6-2 # gcc.gnu.org/PR41989#c22
+               4.3 k8-sse3 k8
+               4.3 opteron-sse3 k8
+               3.4 athlon-fx x86-64
+               3.4 athlon64 x86-64
+               3.4 c3-2 c3
+               3.4 k8 x86-64
+               3.4 opteron x86-64
+               3.4 pentium-m pentium3
+               3.4 pentium3m pentium3
+               3.4 pentium4m pentium4
+       )
 
        myarch=$(get-flag march)
        mytune=$(get-flag mtune)
 
-       for ((i=0; i < ${#archlist[@]}; i++)) ; do
-               arch=${archlist[i]%% *}
-               ver=${archlist[i]#* } ver=${ver% *}
-               rep=${archlist[i]##* }
+       for ((i = 0; i < ${#archlist[@]}; i += 3)) ; do
+               ver=${archlist[i]}
+               arch=${archlist[i + 1]}
+               rep=${archlist[i + 2]}
 
                [[ ${myarch} != ${arch} && ${mytune} != ${arch} ]] && continue
-               
+
                if [[ ${ver} > ${bver} ]] ; then
-                       einfo "Replacing ${myarch} (added in ${ver}) with 
${rep}..."
+                       einfo "Replacing ${myarch} (added in gcc ${ver}) with 
${rep}..."
                        [[ ${myarch} == ${arch} ]] && replace-cpu-flags 
${myarch} ${rep}
                        [[ ${mytune} == ${arch} ]] && replace-cpu-flags 
${mytune} ${rep}
                        downgrade_arch_flags ${1:-${GCC_BRANCH_VER}}
@@ -1292,45 +1292,46 @@
                fi
        done
 
-       declare -a isalist
-       # we only check -mno* here since -m* get removed by strip-flags later on
-       isalist=("-mno-sha 4.9")
-       isalist+=("-mno-avx512pf 4.9")
-       isalist+=("-mno-avx512f 4.9")
-       isalist+=("-mno-avx512er 4.9")
-       isalist+=("-mno-avx512cd 4.9")
-       isalist+=("-mno-xsaveopt 4.8")
-       isalist+=("-mno-xsave 4.8")
-       isalist+=("-mno-rtm 4.8")
-       isalist+=("-mno-fxsr 4.8")
-       isalist+=("-mno-lzcnt 4.7")
-       isalist+=("-mno-bmi2 4.7")
-       isalist+=("-mno-avx2 4.7")
-       isalist+=("-mno-tbm 4.6")
-       isalist+=("-mno-rdrnd 4.6")
-       isalist+=("-mno-fsgsbase 4.6")
-       isalist+=("-mno-f16c 4.6")
-       isalist+=("-mno-bmi 4.6")
-       isalist+=("-mno-xop 4.5")
-       isalist+=("-mno-movbe 4.5")
-       isalist+=("-mno-lwp 4.5")
-       isalist+=("-mno-fma4 4.5")
-       isalist+=("-mno-pclmul 4.4")
-       isalist+=("-mno-fma 4.4")
-       isalist+=("-mno-avx 4.4")
-       isalist+=("-mno-aes 4.4")
-       isalist+=("-mno-ssse3 4.3")
-       isalist+=("-mno-sse4a 4.3")
-       isalist+=("-mno-sse4 4.3")
-       isalist+=("-mno-sse4.2 4.3")
-       isalist+=("-mno-sse4.1 4.3")
-       isalist+=("-mno-popcnt 4.3")
-       isalist+=("-mno-abm 4.3")
-
-       for ((i=0; i < ${#isalist[@]}; i++)) ; do
-               isa=${isalist[i]%% *}
-               ver=${isalist[i]##* }
-               [[ ${ver} > ${bver} ]] && filter-flags ${isa}
+       local isalist=(
+               # we only check -mno* here since -m* get removed by strip-flags 
later on
+               4.9 -mno-sha
+               4.9 -mno-avx512pf
+               4.9 -mno-avx512f
+               4.9 -mno-avx512er
+               4.9 -mno-avx512cd
+               4.8 -mno-xsaveopt
+               4.8 -mno-xsave
+               4.8 -mno-rtm
+               4.8 -mno-fxsr
+               4.7 -mno-lzcnt
+               4.7 -mno-bmi2
+               4.7 -mno-avx2
+               4.6 -mno-tbm
+               4.6 -mno-rdrnd
+               4.6 -mno-fsgsbase
+               4.6 -mno-f16c
+               4.6 -mno-bmi
+               4.5 -mno-xop
+               4.5 -mno-movbe
+               4.5 -mno-lwp
+               4.5 -mno-fma4
+               4.4 -mno-pclmul
+               4.4 -mno-fma
+               4.4 -mno-avx
+               4.4 -mno-aes
+               4.3 -mno-ssse3
+               4.3 -mno-sse4a
+               4.3 -mno-sse4
+               4.3 -mno-sse4.2
+               4.3 -mno-sse4.1
+               4.3 -mno-popcnt
+               4.3 -mno-abm
+       )
+
+       for ((i = 0; i < ${#isalist[@]}; i += 2)) ; do
+               ver=${isalist[i]}
+               isa=${isalist[i + 1]}
+               [[ ${ver} > ${bver} ]] && filter-flags ${isa} ${isa/-m/-mno-}
        done
 }
 
@@ -1361,9 +1362,9 @@
                case $(tc-arch) in
                        amd64|x86)
                                filter-flags '-mcpu=*'
-                               
+
                                tc_version_is_between 4.4 4.5 && append-flags 
-mno-avx # 357287
-                               
+
                                if tc_version_is_between 4.6 4.7 ; then
                                        # https://bugs.gentoo.org/411333
                                        # https://bugs.gentoo.org/466454
@@ -1485,7 +1486,7 @@
        #       gcc_do_make all-target-libstdc++-v3
 
        [[ -n ${1} ]] && GCC_MAKE_TARGET=${1}
-       
+
        # default target
        if is_crosscompile || tc-is-cross-compiler ; then
                # 3 stage bootstrapping doesnt quite work when you cant run the




Reply via email to