On Fri, 13 Apr 2018 12:21:47 -0400
Mike Gilbert <flop...@gentoo.org> wrote:

> For clang and gcc, --param consumes the next argument. Testing --param
> and its value separately is nonsensical.
> ---
>  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 14b84fbdbebe..5ab14b08d6ec 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 53af9f862c41..97cd71d710a2 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
> -- 
> 2.17.0.rc2
> 

Looks good. I personally use '--param=l1-cache-line-size=64' form :)

-- 

  Sergei

Reply via email to