Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 49179
Collapse All | Expand All

(-)/usr/lib/portage/bin/extra_functions.sh (-100 lines)
Lines 6-111 Link Here
6
	echo "RUNNING FROM EXTRA_FUNCTIONS.SH"
6
	echo "RUNNING FROM EXTRA_FUNCTIONS.SH"
7
}
7
}
8
8
9
# ============================================================================
10
# Extracted from flag-o-matic -- March 10, 2003
11
# ============================================================================
12
13
#### filter-flags <flag> ####
14
# Remove particular flags from C[XX]FLAGS
15
#
16
#### append-flags <flag> ####
17
# Add extra flags to your current C[XX]FLAGS
18
#
19
#### replace-flags <orig.flag> <new.flag> ###
20
# Replace a flag by another one
21
#
22
#### is-flag <flag> ####
23
# Returns "true" if flag is set in C[XX]FLAGS
24
# Matches only complete flag
25
#
26
#### strip-flags ####
27
# Strip C[XX]FLAGS of everything except known
28
# good options.
29
#
30
#### get-flag <flag> ####
31
# Find and echo the value for a particular flag
32
#
33
34
ALLOWED_FLAGS="-O -mcpu -march -pipe -g"
35
36
filter-flags() {
37
	for x in $1; do
38
		export CFLAGS="${CFLAGS/${x}}"
39
		export CXXFLAGS="${CXXFLAGS/${x}}"
40
	done
41
}
42
43
append-flags() {
44
	CFLAGS="${CFLAGS} $1"
45
	CXXFLAGS="${CXXFLAGS} $1"
46
}
47
48
replace-flags() {
49
	CFLAGS="${CFLAGS/${1}/${2} }"
50
	CXXFLAGS="${CXXFLAGS/${1}/${2} }"
51
}
52
53
is-flag() {
54
	for x in ${CFLAGS} ${CXXFLAGS};	do
55
		if [ "${x}" = "$1" ]; then
56
			echo true
57
			return 0
58
		fi
59
	done
60
	return 1
61
}
62
63
strip-flags() {
64
	local NEW_CFLAGS=""
65
	local NEW_CXXFLAGS=""
66
67
	set -f
68
	for x in ${CFLAGS}; do
69
		for y in ${ALLOWED_FLAGS}; do
70
			if [ "${x/${y}}" != "${x}" ]; then
71
				if [ -z "${NEW_CFLAGS}" ]; then
72
					NEW_CFLAGS="${x}"
73
				else
74
					NEW_CFLAGS="${NEW_CFLAGS} ${x}"
75
				fi
76
			fi
77
		done
78
	done
79
80
	for x in ${CXXFLAGS}; do
81
		for y in ${ALLOWED_FLAGS}; do
82
			if [ "${x/${y}}" != "${x}" ]; then
83
				if [ -z "${NEW_CXXFLAGS}" ]; then
84
					NEW_CXXFLAGS="${x}"
85
				else
86
					NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}"
87
				fi
88
			fi
89
		done
90
	done
91
92
	set +f
93
94
	export CFLAGS="${NEW_CFLAGS}"
95
	export CXXFLAGS="${NEW_CXXFLAGS}"
96
}
97
98
get-flag() {
99
	local findflag="$1"
100
101
	for f in ${CFLAGS} ${CXXFLAGS}; do
102
		if [ "${f/${findflag}}" != "${f}" ]; then
103
			echo "${f/-${findflag}=}"
104
			return
105
		fi
106
	done
107
}
108
109
# ----------------------------------------------------------------------------
9
# ----------------------------------------------------------------------------
110
# ----------------------------------------------------------------------------
10
# ----------------------------------------------------------------------------
111
# ----------------------------------------------------------------------------
11
# ----------------------------------------------------------------------------

Return to bug 49179