diff options
author | Mike Gilbert <floppym@gentoo.org> | 2018-04-13 12:04:53 -0400 |
---|---|---|
committer | Mike Gilbert <floppym@gentoo.org> | 2018-04-18 14:13:10 -0400 |
commit | 1e64d3ebf9edf0f02cc271faa9c3eaedeb6d280d (patch) | |
tree | dc5392cb9ca40ae7d4b5263111ee5c875a9e0b25 /eclass/flag-o-matic.eclass | |
parent | www-plugins/chrome-binary-plugins: automated update (66.0.3359.117, 66.0.3359... (diff) | |
download | gentoo-1e64d3ebf9edf0f02cc271faa9c3eaedeb6d280d.tar.gz gentoo-1e64d3ebf9edf0f02cc271faa9c3eaedeb6d280d.tar.bz2 gentoo-1e64d3ebf9edf0f02cc271faa9c3eaedeb6d280d.zip |
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@gentoo.org>
Diffstat (limited to 'eclass/flag-o-matic.eclass')
-rw-r--r-- | eclass/flag-o-matic.eclass | 33 |
1 files changed, 23 insertions, 10 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[*]}" |