commit:     1e64d3ebf9edf0f02cc271faa9c3eaedeb6d280d
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Fri Apr 13 16:04:53 2018 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Wed Apr 18 18:13:10 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1e64d3eb

flag-o-matic.eclass: treat "--param x" as a unit when testing flags

For clang and gcc, --param consumes the next argument. Testing --param
and its value separately is nonsensical.

Acked-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 eclass/flag-o-matic.eclass   | 33 +++++++++++++++++++++++----------
 eclass/tests/flag-o-matic.sh |  4 ++--
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index 14b84fbdbeb..5ab14b08d6e 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -421,9 +421,9 @@ strip-flags() {
 test-flag-PROG() {
        local comp=$1
        local lang=$2
-       local flag=$3
+       shift 2
 
-       [[ -z ${comp} || -z ${flag} ]] && return 1
+       [[ -z ${comp} || -z $1 ]] && return 1
 
        local cmdline=(
                $(tc-get${comp})
@@ -434,11 +434,11 @@ test-flag-PROG() {
                -c -o /dev/null
        )
        if "${cmdline[@]}" -x${lang} - </dev/null &>/dev/null ; then
-               cmdline+=( "${flag}" -x${lang} - )
+               cmdline+=( "$@" -x${lang} - )
        else
                # XXX: what's the purpose of this? does it even work with
                # any compiler?
-               cmdline+=( "${flag}" -c -o /dev/null /dev/null )
+               cmdline+=( "$@" -c -o /dev/null /dev/null )
        fi
 
        if ! "${cmdline[@]}" </dev/null &>/dev/null; then
@@ -455,25 +455,25 @@ test-flag-PROG() {
 # @USAGE: <flag>
 # @DESCRIPTION:
 # Returns shell true if <flag> is supported by the C compiler, else returns 
shell false.
-test-flag-CC() { test-flag-PROG "CC" c "$1"; }
+test-flag-CC() { test-flag-PROG "CC" c "$@"; }
 
 # @FUNCTION: test-flag-CXX
 # @USAGE: <flag>
 # @DESCRIPTION:
 # Returns shell true if <flag> is supported by the C++ compiler, else returns 
shell false.
-test-flag-CXX() { test-flag-PROG "CXX" c++ "$1"; }
+test-flag-CXX() { test-flag-PROG "CXX" c++ "$@"; }
 
 # @FUNCTION: test-flag-F77
 # @USAGE: <flag>
 # @DESCRIPTION:
 # Returns shell true if <flag> is supported by the Fortran 77 compiler, else 
returns shell false.
-test-flag-F77() { test-flag-PROG "F77" f77 "$1"; }
+test-flag-F77() { test-flag-PROG "F77" f77 "$@"; }
 
 # @FUNCTION: test-flag-FC
 # @USAGE: <flag>
 # @DESCRIPTION:
 # Returns shell true if <flag> is supported by the Fortran 90 compiler, else 
returns shell false.
-test-flag-FC() { test-flag-PROG "FC" f95 "$1"; }
+test-flag-FC() { test-flag-PROG "FC" f95 "$@"; }
 
 test-flags-PROG() {
        local comp=$1
@@ -484,8 +484,21 @@ test-flags-PROG() {
 
        [[ -z ${comp} ]] && return 1
 
-       for x ; do
-               test-flag-${comp} "${x}" && flags+=( "${x}" )
+       while (( $# )); do
+               case "$1" in
+                       --param)
+                               if test-flag-${comp} "$1" "$2"; then
+                                       flags+=( "$1" "$2" )
+                               fi
+                               shift 2
+                               ;;
+                       *)
+                               if test-flag-${comp} "$1"; then
+                                       flags+=( "$1" )
+                               fi
+                               shift 1
+                               ;;
+               esac
        done
 
        echo "${flags[*]}"

diff --git a/eclass/tests/flag-o-matic.sh b/eclass/tests/flag-o-matic.sh
index 53af9f862c4..97cd71d710a 100755
--- a/eclass/tests/flag-o-matic.sh
+++ b/eclass/tests/flag-o-matic.sh
@@ -6,7 +6,7 @@ source tests-common.sh
 
 inherit flag-o-matic
 
-CFLAGS="-a -b -c=1"
+CFLAGS="-a -b -c=1 --param l1-cache-size=32"
 CXXFLAGS="-x -y -z=2"
 LDFLAGS="-l -m -n=3"
 ftend() {
@@ -55,7 +55,7 @@ done <<<"
 
 tbegin "strip-unsupported-flags"
 strip-unsupported-flags
-[[ ${CFLAGS} == "" ]] && [[ ${CXXFLAGS} == "-z=2" ]] && [[ ${LDFLAGS} == "" ]]
+[[ ${CFLAGS} == "--param l1-cache-size=32" ]] && [[ ${CXXFLAGS} == "-z=2" ]] 
&& [[ ${LDFLAGS} == "" ]]
 ftend
 
 for var in $(all-flag-vars) ; do

Reply via email to