summaryrefslogtreecommitdiffstats
path: root/include/autotools.mk
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
commitbd982fb72c2636ccdbd559861f5c7ee60a7d60f9 (patch)
treecb001b7d0b8c4d6954fb9b65a2bb69ac1bed0102 /include/autotools.mk
parent62b8cba9c09e865c4bab9c635fda25213fd01286 (diff)
downloadmaster-31e0f0ae-bd982fb72c2636ccdbd559861f5c7ee60a7d60f9.tar.gz
master-31e0f0ae-bd982fb72c2636ccdbd559861f5c7ee60a7d60f9.tar.bz2
master-31e0f0ae-bd982fb72c2636ccdbd559861f5c7ee60a7d60f9.zip
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.
SVN-Revision: 27855
Diffstat (limited to 'include/autotools.mk')
-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