From 1e64d3ebf9edf0f02cc271faa9c3eaedeb6d280d Mon Sep 17 00:00:00 2001 From: Mike Gilbert Date: Fri, 13 Apr 2018 12:04:53 -0400 Subject: 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 --- 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 ; 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; then @@ -455,25 +455,25 @@ test-flag-PROG() { # @USAGE: # @DESCRIPTION: # Returns shell true if 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: # @DESCRIPTION: # Returns shell true if 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: # @DESCRIPTION: # Returns shell true if 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: # @DESCRIPTION: # Returns shell true if 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 -- cgit v1.2.3-65-gdbad