done
endef
+#
+# Hook to patch common issue with configure on powerpc64{,le} failing
+# to detect shared library support:
+#
+define CONFIGURE_FIX_POWERPC64_HOOK
+ @$(call MESSAGE,"Checking configure (powerpc64/powerpc64le)")
+ support/scripts/fix-configure-powerpc64.sh $($(PKG)_DIR)
+endef
+
#
# Hook to gettextize the package if needed
#
endif
+# Append a configure hook if building for a powerpc64 (or powerpc64le) arch.
+# Must be added after other pre-configure hooks that might regenerate the
+# configure script and overwrite the changes made here.
+ifneq ($$(filter powerpc64%,$$(if $$(filter target,$(4)),$$(ARCH),$$(HOSTARCH))),)
+$(2)_PRE_CONFIGURE_HOOKS += CONFIGURE_FIX_POWERPC64_HOOK
+endif
+
#
# Build step. Only define it if not already defined by the package .mk
# file.
--- /dev/null
+#!/bin/bash
+
+# This is a script to find, and correct, a problem with old versions of
+# configure that affect powerpc64 and powerpc64le.
+
+# The issue causes configure to incorrectly determine that shared library
+# support is not present in the linker. This causes the package to build a
+# static library rather than a dynamic one and although the build will succeed,
+# it may cause packages that link with the static library it to fail due to
+# undefined symbols.
+
+# This script searches for files named 'configure' that appear to have this
+# issue (by searching for a known bad pattern) and patching them.
+
+set -e
+
+if [ $# -ne 1 ]; then
+ echo "Usage: $0 <package build directory>"
+ exit 2
+fi
+
+srcdir="$1"
+files=$(cd "$srcdir" && find . -name configure \
+-exec grep -qF 'Generated by GNU Autoconf' {} \; \
+-exec grep -qF 'ppc*-*linux*|powerpc*-*linux*)' {} \; -print)
+
+# --ignore-whitespace is needed because some packages have included
+# copies of configure scripts where tabs have been replaced with spaces.
+for c in $files; do
+ patch --ignore-whitespace "$srcdir"/"$c" <<'EOF'
+--- a/configure 2016-11-16 15:31:46.097447271 +1100
++++ b/configure 2008-07-21 12:17:23.000000000 +1000
+@@ -4433,7 +4433,10 @@
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+- ppc*-*linux*|powerpc*-*linux*)
++ powerpcle-*linux*)
++ LD="${LD-ld} -m elf64lppc"
++ ;;
++ powerpc-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+EOF
+done
+