Lines 382-421
filter-mfpmath() {
Link Here
|
382 |
# Strip *FLAGS of everything except known good/safe flags. This runs over all |
382 |
# Strip *FLAGS of everything except known good/safe flags. This runs over all |
383 |
# flags returned by all_flag_vars(). |
383 |
# flags returned by all_flag_vars(). |
384 |
strip-flags() { |
384 |
strip-flags() { |
385 |
local x y var |
385 |
local var flag has_o |
386 |
|
386 |
local -a ALLOWED_FLAGS old_flags new_flags |
387 |
local ALLOWED_FLAGS |
|
|
388 |
setup-allowed-flags |
387 |
setup-allowed-flags |
389 |
|
388 |
|
390 |
set -f # disable pathname expansion |
389 |
local -A safe |
|
|
390 |
for flag in "${ALLOWED_FLAGS[@]}"; do |
391 |
safe[$flag]= |
392 |
done |
391 |
|
393 |
|
392 |
for var in $(all-flag-vars) ; do |
394 |
for var in $(all-flag-vars); do |
393 |
local new=() |
395 |
new_flags=() |
394 |
|
396 |
read -ra old_flags <<<"${!var}" |
395 |
for x in ${!var} ; do |
397 |
for flag in "${old_flags[@]}"; do |
396 |
local flag=${x%%=*} |
398 |
if [[ -v "safe[${flag%%=*}]" ]]; then |
397 |
for y in "${ALLOWED_FLAGS[@]}" ; do |
399 |
new_flags+=( "$flag" ) |
398 |
if [[ -z ${flag%%${y}} ]] ; then |
400 |
if [[ $flag == -O* ]]; then |
399 |
new+=( "${x}" ) |
401 |
has_o=1 |
400 |
break |
|
|
401 |
fi |
402 |
fi |
402 |
done |
403 |
fi |
403 |
done |
404 |
done |
404 |
|
405 |
|
405 |
# In case we filtered out all optimization flags fallback to -O2 |
406 |
# In case we filtered out all optimization flags fallback to -O2 |
406 |
if _is_flagq ${var} "-O*" && ! _is_flagq new "-O*" ; then |
407 |
if (( ! has_o )) && _is_flagq "$var" '-O*'; then |
407 |
new+=( -O2 ) |
408 |
new_flags+=( -O2 ) |
408 |
fi |
409 |
fi |
409 |
|
410 |
|
410 |
if [[ ${!var} != "${new[*]}" ]] ; then |
411 |
if [[ ${old_flags[*]} != "${new_flags[*]}" ]]; then |
411 |
einfo "strip-flags: ${var}: changed '${!var}' to '${new[*]}'" |
412 |
einfo "strip-flags: ${var}: changed '${old_flags[*]}' to '${new_flags[*]}'" |
|
|
413 |
export "$var=${new_flags[*]}" |
412 |
fi |
414 |
fi |
413 |
export ${var}="${new[*]}" |
|
|
414 |
done |
415 |
done |
415 |
|
|
|
416 |
set +f # re-enable pathname expansion |
417 |
|
418 |
return 0 |
419 |
} |
416 |
} |
420 |
|
417 |
|
421 |
test-flag-PROG() { |
418 |
test-flag-PROG() { |