strip setup hook: Learn about only stripping host/target binaries alone
`dontStrip` is still a catch-all, but `dontStripHost` and `dontStripTarget` are also now available for finer-grained disabling.
This commit is contained in:
parent
4ad9a97e96
commit
a1cdc2011e
@ -3,24 +3,45 @@
|
|||||||
fixupOutputHooks+=(_doStrip)
|
fixupOutputHooks+=(_doStrip)
|
||||||
|
|
||||||
_doStrip() {
|
_doStrip() {
|
||||||
if [ -z "$dontStrip" ]; then
|
# We don't bother to strip build platform code because it shouldn't make it
|
||||||
|
# to $out anyways---if it does, that's a bigger problem that a lack of
|
||||||
|
# stripping will help catch.
|
||||||
|
local -ra flags=(dontStripHost dontStripTarget)
|
||||||
|
local -ra stripCmds=(STRIP TARGET_STRIP)
|
||||||
|
|
||||||
|
# Optimization
|
||||||
|
if [[ "$STRIP" == "$TARGET_STRIP" ]]; then
|
||||||
|
dontStripTarget+=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local i
|
||||||
|
for i in ${!stripCmds[@]}; do
|
||||||
|
local -n flag="${flags[$i]}"
|
||||||
|
local -n stripCmd="${stripCmds[$i]}"
|
||||||
|
|
||||||
|
# `dontStrip` disables them all
|
||||||
|
if [[ "$dontStrip" || "$flag" ]] || ! type -f "$stripCmd" 2>/dev/null
|
||||||
|
then continue; fi
|
||||||
|
|
||||||
stripDebugList=${stripDebugList:-lib lib32 lib64 libexec bin sbin}
|
stripDebugList=${stripDebugList:-lib lib32 lib64 libexec bin sbin}
|
||||||
if [ -n "$stripDebugList" ]; then
|
if [ -n "$stripDebugList" ]; then
|
||||||
stripDirs "$stripDebugList" "${stripDebugFlags:--S}"
|
stripDirs "$stripCmd" "$stripDebugList" "${stripDebugFlags:--S}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
stripAllList=${stripAllList:-}
|
stripAllList=${stripAllList:-}
|
||||||
if [ -n "$stripAllList" ]; then
|
if [ -n "$stripAllList" ]; then
|
||||||
stripDirs "$stripAllList" "${stripAllFlags:--s}"
|
stripDirs "$stripCmd" "$stripAllList" "${stripAllFlags:--s}"
|
||||||
fi
|
fi
|
||||||
fi
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
stripDirs() {
|
stripDirs() {
|
||||||
local dirs="$1"
|
local cmd="$1"
|
||||||
local stripFlags="$2"
|
local dirs="$2"
|
||||||
|
local stripFlags="$3"
|
||||||
local dirsNew=
|
local dirsNew=
|
||||||
|
|
||||||
|
local d
|
||||||
for d in ${dirs}; do
|
for d in ${dirs}; do
|
||||||
if [ -d "$prefix/$d" ]; then
|
if [ -d "$prefix/$d" ]; then
|
||||||
dirsNew="${dirsNew} $prefix/$d "
|
dirsNew="${dirsNew} $prefix/$d "
|
||||||
@ -29,8 +50,8 @@ stripDirs() {
|
|||||||
dirs=${dirsNew}
|
dirs=${dirsNew}
|
||||||
|
|
||||||
if [ -n "${dirs}" ]; then
|
if [ -n "${dirs}" ]; then
|
||||||
header "stripping (with flags $stripFlags) in$dirs"
|
header "stripping (with command $cmd and flags $stripFlags) in$dirs"
|
||||||
find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} $STRIP $commonStripFlags $stripFlags 2>/dev/null || true
|
find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} $cmd $commonStripFlags $stripFlags 2>/dev/null || true
|
||||||
stopNest
|
stopNest
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user