Gentoo Archives: gentoo-dev

From: Sam James <sam@g.o>
To: gentoo-dev@l.g.o
Cc: toolchain@g.o, "Jannik Glückert" <jannik.glueckert@×××××.com>, Sam James <sam@g.o>
Subject: [gentoo-dev] [PATCH 1/2] flag-o-matic.eclass: have is-flagq respect succeeding -fno-flag
Date: Mon, 27 Jun 2022 07:05:45
Message-Id: 20220627070456.1416244-1-sam@gentoo.org
1 From: Jannik Glückert <jannik.glueckert@×××××.com>
2
3 Handle bits like -flto -fno-lto.
4
5 Signed-off-by: Jannik Glückert <jannik.glueckert@×××××.com>
6 Signed-off-by: Sam James <sam@g.o>
7 ---
8 eclass/flag-o-matic.eclass | 20 +++++++++++++++-----
9 1 file changed, 15 insertions(+), 5 deletions(-)
10
11 diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
12 index 50caa401bacfb..eca39cd2bdfdc 100644
13 --- a/eclass/flag-o-matic.eclass
14 +++ b/eclass/flag-o-matic.eclass
15 @@ -372,19 +372,29 @@ replace-cpu-flags() {
16 # @USAGE: <variable> <flag>
17 # @INTERNAL
18 # @DESCRIPTION:
19 -# Returns shell true if <flag> is in a given <variable>, else returns shell false.
20 +# Returns shell true if <flag> is in a given <variable> and not surpassed by e.g. -fno-<flag>,
21 +# else returns shell false.
22 _is_flagq() {
23 - local x var="$1[*]"
24 + local x var="$1[*]" equal_str equal_pos flag_no ret=1
25 + equal_str=${2%%=*}
26 + equal_pos=${#equal_str}
27 + # This results in -fno-flag for -fflag=*
28 + flag_no=${2::2}no-${equal_str:2}
29 +
30 for x in ${!var} ; do
31 - [[ ${x} == $2 ]] && return 0
32 + case ${x} in
33 + $2) ret=0 ;;
34 + ${flag_no}) ret=1 ;;
35 + esac
36 done
37 - return 1
38 + return ${ret}
39 }
40
41 # @FUNCTION: is-flagq
42 # @USAGE: <flag>
43 # @DESCRIPTION:
44 -# Returns shell true if <flag> is in {C,CXX,F,FC}FLAGS, else returns shell false. Accepts shell globs.
45 +# Returns shell true if <flag> is in {C,CXX,F,FC}FLAGS and not surpassed by e.g. -fno-<flag>,
46 +# else returns shell false. Accepts shell globs.
47 is-flagq() {
48 [[ -n $2 ]] && die "Usage: is-flag <flag>"
49
50 --
51 2.36.1

Replies