[include] autotools.mk: implement PKG_FIXUP:=patch-libtool

This change allows to apply OpenWrt, Buildroot and OE libtool fixes to packages which fail badly at autoreconf.
The fixup covers the common libtool versions 1.5, 2.2 and 2.4 and automatically determines the correct
version to use.


git-svn-id: svn://svn.openwrt.org/openwrt/trunk@27855 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
Jo-Philipp Wich
2011-08-01 00:22:53 +00:00
parent 506daace14
commit 2b36cc83f3
4 changed files with 438 additions and 1 deletions

View File

@@ -1,5 +1,5 @@
#
# Copyright (C) 2007-2010 OpenWrt.org
# Copyright (C) 2007-2011 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@@ -49,6 +49,20 @@ define autoreconf
);
endef
# 1: build dir
define patch_libtool
(cd $(1); \
for lt in $$$$($$(STAGING_DIR_HOST)/bin/find . -name ltmain.sh); do \
lt_version="$$$$($$(STAGING_DIR_HOST)/bin/sed -ne 's,^[[:space:]]*VERSION=\([0-9]\.[0-9]\+\).*,\1,p' $$$$lt)"; \
case "$$$$lt_version" in \
1.5|2.2|2.4) echo "autotools.mk: Found libtool v$$$$lt_version - applying patch to $$$$lt"; \
(cd $$$$(dirname $$$$lt) && $$(PATCH) -s -p1 < $$(TOPDIR)/tools/libtool/files/libtool-v$$$$lt_version.patch) ;; \
*) echo "autotools.mk: error: Unsupported libtool version v$$$$lt_version - cannot patch $$$$lt"; exit 1 ;; \
esac; \
done; \
);
endef
PKG_LIBTOOL_PATHS?=$(CONFIGURE_PATH)
PKG_AUTOMAKE_PATHS?=$(CONFIGURE_PATH)
@@ -64,6 +78,15 @@ define autoreconf_target
$(STAGING_DIR)/host/share/aclocal $(STAGING_DIR)/usr/share/aclocal $(PKG_MACRO_PATHS)))
endef
define patch_libtool_target
$(strip $(call patch_libtool, \
$(PKG_BUILD_DIR)))
endef
ifneq ($(filter patch-libtool,$(PKG_FIXUP)),)
Hooks/Configure/Pre += patch_libtool_target
endif
ifneq ($(filter libtool,$(PKG_FIXUP)),)
PKG_BUILD_DEPENDS += libtool libintl libiconv
ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),)
@@ -98,6 +121,19 @@ define autoreconf_host
$(HOST_MACRO_PATHS)))
endef
define patch_libtool_host
$(strip $(call patch_libtool, \
$(HOST_BUILD_DIR)))
endef
ifneq ($(filter patch-libtool,$(PKG_FIXUP)),)
Hooks/HostConfigure/Pre += patch_libtool_host
endif
ifneq ($(filter patch-libtool,$(HOST_FIXUP)),)
Hooks/HostConfigure/Pre += $(strip $(call patch_libtool,$(HOST_BUILD_DIR)))
endif
ifneq ($(filter libtool,$(HOST_FIXUP)),)
ifeq ($(filter no-autoreconf,$(HOST_FIXUP)),)
Hooks/HostConfigure/Pre += autoreconf_host