diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2011-08-01 00:22:53 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2011-08-01 00:22:53 +0000 |
commit | bd982fb72c2636ccdbd559861f5c7ee60a7d60f9 (patch) | |
tree | cb001b7d0b8c4d6954fb9b65a2bb69ac1bed0102 /include/autotools.mk | |
parent | 62b8cba9c09e865c4bab9c635fda25213fd01286 (diff) | |
download | openwrt-bd982fb72c2636ccdbd559861f5c7ee60a7d60f9.tar.gz openwrt-bd982fb72c2636ccdbd559861f5c7ee60a7d60f9.tar.bz2 openwrt-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.mk | 38 |
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 |