libtool: use a different way to avoid autoreconfiguration
authorArnout Vandecappelle <arnout@mind.be>
Wed, 19 Mar 2014 23:03:00 +0000 (00:03 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Thu, 17 Apr 2014 21:37:47 +0000 (23:37 +0200)
In 4268d39, a patch was added to update libtool.m4 for MIPS n64 targets.
However, this caused the configure script to be regenerated during the
build steps, which in turn caused build failures on Fedora 12 hosts. In
ed73d1d, this was fixed by patching the installed libtool.m4 file
instead of the source file.

However, ed73d1d did not take into account that the target libtool will
also install libtool.m4 to staging, and that that version has
precedence over the one in HOST_DIR.

Therefore, this patch takes a different approach: the source file is
patched in the usual way, and instead the reconfigure is avoided by
touching the generated files.

On the target, we also cannot use the AUTORECONF mechanism because of
some mysterious Makefile.inc file. So just use the same approach and
wait for upstream to make a new release.

Fixes:
   http://autobuild.buildroot.net/results/b86/b86a83c6549004f226e7255242e54ef4e50c5ec3/

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/libtool/libtool-01-mips64-n64-linking.patch [new file with mode: 0644]
package/libtool/libtool-mips64-n64-linking.post-install-patch [deleted file]
package/libtool/libtool.mk

diff --git a/package/libtool/libtool-01-mips64-n64-linking.patch b/package/libtool/libtool-01-mips64-n64-linking.patch
new file mode 100644 (file)
index 0000000..ef9084d
--- /dev/null
@@ -0,0 +1,47 @@
+sets correct linker ABI flags on MIPS64
+http://git.savannah.gnu.org/cgit/libtool.git/commit/?id=5f7f7d9615bf650cf99d581a33b3e18357f79951
+
+Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
+
+diff -ru libtool-2.4.2.orig/libltdl/m4/libtool.m4 libtool-2.4.2/libltdl/m4/libtool.m4
+--- libtool-2.4.2.orig/libltdl/m4/libtool.m4   2013-11-11 11:44:30.419396295 +0000
++++ libtool-2.4.2/libltdl/m4/libtool.m4        2013-11-11 11:44:07.055032308 +0000
+@@ -1312,6 +1312,38 @@
+   rm -rf conftest*
+   ;;
++mips64*-*linux*)
++  # Find out what ABI is being produced by ac_compile, and set linker
++  # options accordingly.
++  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
++  if AC_TRY_EVAL(ac_compile); then
++    emul=elf
++    case `/usr/bin/file conftest.$ac_objext` in
++      *32-bit*)
++      emul="${emul}32"
++      ;;
++      *64-bit*)
++      emul="${emul}64"
++      ;;
++    esac
++    case `/usr/bin/file conftest.$ac_objext` in
++      *MSB*)
++      emul="${emul}btsmip"
++      ;;
++      *LSB*)
++      emul="${emul}ltsmip"
++      ;;
++    esac
++    case `/usr/bin/file conftest.$ac_objext` in
++      *N32*)
++      emul="${emul}n32"
++      ;;
++    esac
++    LD="${LD-ld} -m $emul"
++    fi
++  rm -rf conftest*
++  ;;
++
+ x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+   # Find out which ABI we are using.
diff --git a/package/libtool/libtool-mips64-n64-linking.post-install-patch b/package/libtool/libtool-mips64-n64-linking.post-install-patch
deleted file mode 100644 (file)
index ef9084d..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-sets correct linker ABI flags on MIPS64
-http://git.savannah.gnu.org/cgit/libtool.git/commit/?id=5f7f7d9615bf650cf99d581a33b3e18357f79951
-
-Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
-
-diff -ru libtool-2.4.2.orig/libltdl/m4/libtool.m4 libtool-2.4.2/libltdl/m4/libtool.m4
---- libtool-2.4.2.orig/libltdl/m4/libtool.m4   2013-11-11 11:44:30.419396295 +0000
-+++ libtool-2.4.2/libltdl/m4/libtool.m4        2013-11-11 11:44:07.055032308 +0000
-@@ -1312,6 +1312,38 @@
-   rm -rf conftest*
-   ;;
-+mips64*-*linux*)
-+  # Find out what ABI is being produced by ac_compile, and set linker
-+  # options accordingly.
-+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
-+  if AC_TRY_EVAL(ac_compile); then
-+    emul=elf
-+    case `/usr/bin/file conftest.$ac_objext` in
-+      *32-bit*)
-+      emul="${emul}32"
-+      ;;
-+      *64-bit*)
-+      emul="${emul}64"
-+      ;;
-+    esac
-+    case `/usr/bin/file conftest.$ac_objext` in
-+      *MSB*)
-+      emul="${emul}btsmip"
-+      ;;
-+      *LSB*)
-+      emul="${emul}ltsmip"
-+      ;;
-+    esac
-+    case `/usr/bin/file conftest.$ac_objext` in
-+      *N32*)
-+      emul="${emul}n32"
-+      ;;
-+    esac
-+    LD="${LD-ld} -m $emul"
-+    fi
-+  rm -rf conftest*
-+  ;;
-+
- x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
- s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-   # Find out which ABI we are using.
index 603f1f1c2c25f9a436526b221de49917fb653b52..a039267fb615400ca113f3a98ed762715f93dc6b 100644 (file)
@@ -13,18 +13,25 @@ LIBTOOL_LICENSE_FILES = COPYING
 
 HOST_LIBTOOL_LIBTOOL_PATCH = NO
 
-# libtool-mips64-n64-linking.post-install-patch is an upstream patch that
-# fixes MIPS64 n64 link failures. However, because the patch touches an m4
-# file, applying it triggers a run of autoconf, automake, etc. This sometimes
-# leads to build failures due to incompatible system autotools. We cannot
-# simply set HOST_LIBTOOL_AUTORECONF = YES because that would create a
-# circular dependency on host-libtool. Therefore, just apply the patch
-# directly on the installed file.
-define HOST_LIBTOOL_FIXUP_LIBTOOL_M4
-       patch $(HOST_DIR)/usr/share/aclocal/libtool.m4 < \
-               package/libtool/libtool-mips64-n64-linking.post-install-patch
+# We have a patch that affects libtool.m4, which triggers an autoreconf
+# in the build step. Normally we would set AUTORECONF = YES, but this
+# doesn't work for host-libtool because that creates a circular
+# dependency. Instead, touch the generated files so autoreconf is not
+# triggered in the build step. Note that aclocal.m4 has to be touched
+# first since the rest depends on it. Note that we don't need the changes
+# in libtool.m4 in our configure script, because we're not actually
+# running it on the target.
+# For the target, we would normally be able to use AUTORECONF, but it
+# fails on libltdl/Makefile.inc. Rather than trying to fix that failure,
+# just use the same hack as on the host.
+define LIBTOOL_AVOID_AUTORECONF_HOOK
+       find $(@D) -name aclocal.m4 -exec touch '{}' \;
+       find $(@D) -name config-h.in -exec touch '{}' \;
+       find $(@D) -name configure -exec touch '{}' \;
+       find $(@D) -name Makefile.in -exec touch '{}' \;
 endef
-HOST_LIBTOOL_POST_INSTALL_HOOKS += HOST_LIBTOOL_FIXUP_LIBTOOL_M4
+LIBTOOL_PRE_CONFIGURE_HOOKS += LIBTOOL_AVOID_AUTORECONF_HOOK
+HOST_LIBTOOL_PRE_CONFIGURE_HOOKS += LIBTOOL_AVOID_AUTORECONF_HOOK
 
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))