From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-dev+bounces-84405-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id 9902C1382C5
	for <garchives@archives.gentoo.org>; Fri, 13 Apr 2018 22:01:52 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 587BDE0896;
	Fri, 13 Apr 2018 22:01:46 +0000 (UTC)
Received: from smtp.gentoo.org (dev.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id E3102E088B
	for <gentoo-dev@lists.gentoo.org>; Fri, 13 Apr 2018 22:01:45 +0000 (UTC)
Received: from sf (trofi-1-pt.tunnel.tserv1.lon2.ipv6.he.net [IPv6:2001:470:1f1c:a0f::2])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	(Authenticated sender: slyfox)
	by smtp.gentoo.org (Postfix) with ESMTPSA id B1CDB335C7F;
	Fri, 13 Apr 2018 22:01:43 +0000 (UTC)
Date: Fri, 13 Apr 2018 23:01:39 +0100
From: Sergei Trofimovich <slyfox@gentoo.org>
To: Mike Gilbert <floppym@gentoo.org>
Cc: gentoo-dev@lists.gentoo.org, toolchain@gentoo.org
Subject: [gentoo-dev] Re: [PATCH] flag-o-matic.eclass: treat "--param x" as a unit when
 testing flags
Message-ID: <20180413230139.1798ba1c@sf>
In-Reply-To: <20180413162147.18340-1-floppym@gentoo.org>
References: <20180413162147.18340-1-floppym@gentoo.org>
X-Mailer: Claws Mail 3.16.0 (GTK+ 2.24.31; x86_64-pc-linux-gnu)
Precedence: bulk
List-Post: <mailto:gentoo-dev@lists.gentoo.org>
List-Help: <mailto:gentoo-dev+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-dev+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-dev+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-dev.gentoo.org>
X-BeenThere: gentoo-dev@lists.gentoo.org
Reply-to: gentoo-dev@lists.gentoo.org
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Archives-Salt: dd4e9698-b939-4fe7-bb8d-0f9d1a6e8e44
X-Archives-Hash: 6adead3cf2ab41973d292ef23c766ef4

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