|
@@ -1,7 +1,6 @@
|
|
|
#!/usr/bin/env bash
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
DIR="$1"
|
|
DIR="$1"
|
|
|
-FOUND=0
|
|
|
|
|
|
|
|
|
|
if [ -d "$DIR" ]; then
|
|
if [ -d "$DIR" ]; then
|
|
|
DIR="$(cd "$DIR"; pwd)"
|
|
DIR="$(cd "$DIR"; pwd)"
|
|
@@ -26,39 +25,66 @@ if [ ! -x "$CPP" ]; then
|
|
|
exit 1
|
|
exit 1
|
|
|
fi
|
|
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
|
|
|
|
|
|
|
+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
|
|
fi
|
|
|
- fi
|
|
|
|
|
-done
|
|
|
|
|
|
|
+ done
|
|
|
|
|
|
|
|
-if [ $FOUND -lt 1 ]; then
|
|
|
|
|
- echo "Failed to locate library directory!"
|
|
|
|
|
- exit 1
|
|
|
|
|
-else
|
|
|
|
|
- echo "Toolchain successfully patched."
|
|
|
|
|
- exit 0
|
|
|
|
|
-fi
|
|
|
|
|
|
|
+ [ $found -gt 0 ]
|
|
|
|
|
+ return $?
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+VERSION="$(STAGING_DIR="$DIR" "$CPP" --version | head -n1)"
|
|
|
|
|
+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
|