aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2011-08-01 00:22:53 +0000
committerJo-Philipp Wich <jow@openwrt.org>2011-08-01 00:22:53 +0000
commit2b36cc83f31e44e37d31ae61536bb0c7e678f403 (patch)
tree2cc6d9058f5680663a0d73b24003c141b6449e3c /include
parent506daace14cdd6b7a55a1afb6c99721ac8221eb8 (diff)
downloadupstream-2b36cc83f31e44e37d31ae61536bb0c7e678f403.tar.gz
upstream-2b36cc83f31e44e37d31ae61536bb0c7e678f403.tar.bz2
upstream-2b36cc83f31e44e37d31ae61536bb0c7e678f403.zip
[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
Diffstat (limited to 'include')
-rw-r--r--include/autotools.mk38
1 files changed, 37 insertions, 1 deletions
diff --git a/include/autotools.mk b/include/autotools.mk
index 7fe376cc15..1472b5a781 100644
--- a/include/autotools.mk
+++ b/include/autotools.mk
@@ -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