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