diff -r 6cd6af149326 -r 8090a68b6af5 make/autoconf/basics.m4 --- a/make/autoconf/basics.m4 Fri May 25 09:35:02 2018 +0200 +++ b/make/autoconf/basics.m4 Fri May 25 10:14:27 2018 +0200 @@ -120,6 +120,33 @@ ]) ############################################################################### +# Check if a list of space-separated words contains any word(s) from a list of +# space-separated illegal words. Typical use is to see if a user-specified +# set of words contains any from a set of illegal words. +# +# Sets the specified variable to list of matching illegal words, or to +# the empty string if no words are matching the illegal set. +# +# $1: result variable name +# $2: list of values to check +# $3: list of illegal values +AC_DEFUN([BASIC_GET_MATCHING_VALUES], +[ + # grep filter function inspired by a comment to http://stackoverflow.com/a/1617326 + # Notice that the original variant fails on SLES 10 and 11 + # Some grep versions (at least bsd) behaves strangely on the base case with + # no legal_values, so make it explicit. + values_to_check=`$ECHO $2 | $TR ' ' '\n'` + illegal_values=`$ECHO $3 | $TR ' ' '\n'` + if test -z "$illegal_values"; then + $1="" + else + result=`$GREP -Fx "$illegal_values" <<< "$values_to_check" | $GREP -v '^$'` + $1=${result//$'\n'/ } + fi +]) + +############################################################################### # Sort a space-separated list, and remove duplicates. # # Sets the specified variable to the resulting list.