mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-05 12:38:09 -07:00
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>
This commit is contained in:
@@ -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[*]}"
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user