diff --git a/scripts/patch-specs.sh b/scripts/patch-specs.sh
index 4d02a009ecbfd84d3a1babfd3094198a3be4dc14..2ab779084b8a78c9d4c3140116d7098d5ee204f6 100755
--- a/scripts/patch-specs.sh
+++ b/scripts/patch-specs.sh
@@ -1,7 +1,6 @@
 #!/usr/bin/env bash
 
 DIR="$1"
-FOUND=0
 
 if [ -d "$DIR" ]; then
 	DIR="$(cd "$DIR"; pwd)"
@@ -26,39 +25,66 @@ if [ ! -x "$CPP" ]; then
 	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
+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
-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