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