From: Jannik Glückert <
jannik.glueckert@gmail.com>
Handle bits like -flto -fno-lto.
Signed-off-by: Jannik Glückert <
jannik.glueckert@gmail.com>
Signed-off-by: Sam James <
sam@gentoo.org>
---
eclass/flag-o-matic.eclass | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index 50caa401bacfb..eca39cd2bdfdc 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -372,19 +372,29 @@ replace-cpu-flags() {
# @USAGE: <variable> <flag>
# @INTERNAL
# @DESCRIPTION:
-# Returns shell true if <flag> is in a given <variable>, else returns shell false.
+# Returns shell true if <flag> is in a given <variable> and not surpassed by e.g. -fno-<flag>,
+# else returns shell false.
_is_flagq() {
- local x var="$1[*]"
+ local x var="$1[*]" equal_str equal_pos flag_no ret=1
+ equal_str=${2%%=*}
+ equal_pos=${#equal_str}
+ # This results in -fno-flag for -fflag=*
+ flag_no=${2::2}no-${equal_str:2}
+
for x in ${!var} ; do
- [[ ${x} == $2 ]] && return 0
+ case ${x} in
+ $2) ret=0 ;;
+ ${flag_no}) ret=1 ;;
+ esac
done
- return 1
+ return ${ret}
}
# @FUNCTION