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 |