Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 646856 | Differences between
and this patch

Collapse All | Expand All

(-)a/eclass/flag-o-matic.eclass (-23 / +20 lines)
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() {

Return to bug 646856