|
|
@@ -0,0 +1,64 @@
|
|
|
+#!/usr/bin/env bash
|
|
|
+
|
|
|
+DIR="$1"
|
|
|
+FOUND=0
|
|
|
+
|
|
|
+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
|
|
|
+
|
|
|
+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
|
|
|
+
|
|
|
+if [ $FOUND -lt 1 ]; then
|
|
|
+ echo "Failed to locate library directory!"
|
|
|
+ exit 1
|
|
|
+else
|
|
|
+ echo "Toolchain successfully patched."
|
|
|
+ exit 0
|
|
|
+fi
|