create branch for barrier breaker (from trunk r41863)
git-svn-id: svn://svn.openwrt.org/openwrt/branches/barrier_breaker@41864 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
commit
e345c9a277
6686 changed files with 1844728 additions and 0 deletions
90
scripts/patch-specs.sh
Executable file
90
scripts/patch-specs.sh
Executable file
|
@ -0,0 +1,90 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
DIR="$1"
|
||||
|
||||
if [ -d "$DIR" ]; then
|
||||
DIR="$(cd "$DIR"; pwd)"
|
||||
else
|
||||
echo "Usage: $0 toolchain-dir"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -n "Locating cpp ... "
|
||||
for bin in bin usr/bin usr/local/bin; do
|
||||
for cmd in "$DIR/$bin/"*-cpp; do
|
||||
if [ -x "$cmd" ]; then
|
||||
echo "$cmd"
|
||||
CPP="$cmd"
|
||||
break
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if [ ! -x "$CPP" ]; then
|
||||
echo "Can't locate a cpp executable in '$DIR' !"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
patch_specs() {
|
||||
local found=0
|
||||
|
||||
for lib in $(STAGING_DIR="$DIR" "$CPP" -x c -v /dev/null 2>&1 | sed -ne 's#:# #g; s#^LIBRARY_PATH=##p'); do
|
||||
if [ -d "$lib" ]; then
|
||||
grep -qs "STAGING_DIR" "$lib/specs" && rm -f "$lib/specs"
|
||||
if [ $found -lt 1 ]; then
|
||||
echo -n "Patching specs ... "
|
||||
STAGING_DIR="$DIR" "$CPP" -dumpspecs | awk '
|
||||
mode ~ "link" {
|
||||
sub("%{L.}", "%{L*} -L %:getenv(STAGING_DIR /usr/lib) -rpath-link %:getenv(STAGING_DIR /usr/lib)")
|
||||
}
|
||||
mode ~ "cpp" {
|
||||
$0 = $0 " -idirafter %:getenv(STAGING_DIR /usr/include)"
|
||||
}
|
||||
{
|
||||
print $0
|
||||
mode = ""
|
||||
}
|
||||
/^\*cpp:/ {
|
||||
mode = "cpp"
|
||||
}
|
||||
/^\*link.*:/ {
|
||||
mode = "link"
|
||||
}
|
||||
' > "$lib/specs"
|
||||
echo "ok"
|
||||
found=1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
[ $found -gt 0 ]
|
||||
return $?
|
||||
}
|
||||
|
||||
|
||||
VERSION="$(STAGING_DIR="$DIR" "$CPP" --version | sed -ne 's/^.* (.*) //; s/ .*$//; 1p')"
|
||||
VERSION="${VERSION:-unknown}"
|
||||
|
||||
case "${VERSION##* }" in
|
||||
2.*|3.*|4.0.*|4.1.*|4.2.*)
|
||||
echo "The compiler version does not support getenv() in spec files."
|
||||
echo -n "Wrapping binaries instead ... "
|
||||
|
||||
if "${0%/*}/ext-toolchain.sh" --toolchain "$DIR" --wrap "${CPP%/*}"; then
|
||||
echo "ok"
|
||||
exit 0
|
||||
else
|
||||
echo "failed"
|
||||
exit $?
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if patch_specs; then
|
||||
echo "Toolchain successfully patched."
|
||||
exit 0
|
||||
else
|
||||
echo "Failed to locate library directory!"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
Loading…
Add table
Add a link
Reference in a new issue