* [gentoo-dev] [PATCH] flag-o-matic.eclass: treat "--param x" as a unit when testing flags
@ 2018-04-13 16:21 Mike Gilbert
2018-04-13 22:01 ` [gentoo-dev] " Sergei Trofimovich
0 siblings, 1 reply; 2+ messages in thread
From: Mike Gilbert @ 2018-04-13 16:21 UTC (permalink / raw
To: gentoo-dev; +Cc: toolchain
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
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [gentoo-dev] Re: [PATCH] flag-o-matic.eclass: treat "--param x" as a unit when testing flags
2018-04-13 16:21 [gentoo-dev] [PATCH] flag-o-matic.eclass: treat "--param x" as a unit when testing flags Mike Gilbert
@ 2018-04-13 22:01 ` Sergei Trofimovich
0 siblings, 0 replies; 2+ messages in thread
From: Sergei Trofimovich @ 2018-04-13 22:01 UTC (permalink / raw
To: Mike Gilbert; +Cc: gentoo-dev, toolchain
On Fri, 13 Apr 2018 12:21:47 -0400
Mike Gilbert <floppym@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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-04-13 22:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-04-13 16:21 [gentoo-dev] [PATCH] flag-o-matic.eclass: treat "--param x" as a unit when testing flags Mike Gilbert
2018-04-13 22:01 ` [gentoo-dev] " Sergei Trofimovich
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox