|
|
echo "RUNNING FROM EXTRA_FUNCTIONS.SH" | echo "RUNNING FROM EXTRA_FUNCTIONS.SH" |
} | } |
| |
# ============================================================================ |
|
# Extracted from flag-o-matic -- March 10, 2003 |
|
# ============================================================================ |
|
|
|
#### filter-flags <flag> #### |
|
# Remove particular flags from C[XX]FLAGS |
|
# |
|
#### append-flags <flag> #### |
|
# Add extra flags to your current C[XX]FLAGS |
|
# |
|
#### replace-flags <orig.flag> <new.flag> ### |
|
# Replace a flag by another one |
|
# |
|
#### is-flag <flag> #### |
|
# Returns "true" if flag is set in C[XX]FLAGS |
|
# Matches only complete flag |
|
# |
|
#### strip-flags #### |
|
# Strip C[XX]FLAGS of everything except known |
|
# good options. |
|
# |
|
#### get-flag <flag> #### |
|
# Find and echo the value for a particular flag |
|
# |
|
|
|
ALLOWED_FLAGS="-O -mcpu -march -pipe -g" |
|
|
|
filter-flags() { |
|
for x in $1; do |
|
export CFLAGS="${CFLAGS/${x}}" |
|
export CXXFLAGS="${CXXFLAGS/${x}}" |
|
done |
|
} |
|
|
|
append-flags() { |
|
CFLAGS="${CFLAGS} $1" |
|
CXXFLAGS="${CXXFLAGS} $1" |
|
} |
|
|
|
replace-flags() { |
|
CFLAGS="${CFLAGS/${1}/${2} }" |
|
CXXFLAGS="${CXXFLAGS/${1}/${2} }" |
|
} |
|
|
|
is-flag() { |
|
for x in ${CFLAGS} ${CXXFLAGS}; do |
|
if [ "${x}" = "$1" ]; then |
|
echo true |
|
return 0 |
|
fi |
|
done |
|
return 1 |
|
} |
|
|
|
strip-flags() { |
|
local NEW_CFLAGS="" |
|
local NEW_CXXFLAGS="" |
|
|
|
set -f |
|
for x in ${CFLAGS}; do |
|
for y in ${ALLOWED_FLAGS}; do |
|
if [ "${x/${y}}" != "${x}" ]; then |
|
if [ -z "${NEW_CFLAGS}" ]; then |
|
NEW_CFLAGS="${x}" |
|
else |
|
NEW_CFLAGS="${NEW_CFLAGS} ${x}" |
|
fi |
|
fi |
|
done |
|
done |
|
|
|
for x in ${CXXFLAGS}; do |
|
for y in ${ALLOWED_FLAGS}; do |
|
if [ "${x/${y}}" != "${x}" ]; then |
|
if [ -z "${NEW_CXXFLAGS}" ]; then |
|
NEW_CXXFLAGS="${x}" |
|
else |
|
NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}" |
|
fi |
|
fi |
|
done |
|
done |
|
|
|
set +f |
|
|
|
export CFLAGS="${NEW_CFLAGS}" |
|
export CXXFLAGS="${NEW_CXXFLAGS}" |
|
} |
|
|
|
get-flag() { |
|
local findflag="$1" |
|
|
|
for f in ${CFLAGS} ${CXXFLAGS}; do |
|
if [ "${f/${findflag}}" != "${f}" ]; then |
|
echo "${f/-${findflag}=}" |
|
return |
|
fi |
|
done |
|
} |
|
|
|
# ---------------------------------------------------------------------------- | # ---------------------------------------------------------------------------- |
# ---------------------------------------------------------------------------- | # ---------------------------------------------------------------------------- |
# ---------------------------------------------------------------------------- | # ---------------------------------------------------------------------------- |