1# 2# Copyright (C) 2007-2012 OpenWrt.org 3# 4# This is free software, licensed under the GNU General Public License v2. 5# See /LICENSE for more information. 6# 7 8autoconf_bool = $(patsubst %,$(if $($(1)),--enable,--disable)-%,$(2)) 9 10# delete *.la-files from staging_dir - we can not yet remove respective lines within all package 11# Makefiles, since backfire still uses libtool v1.5.x which (may) require those files 12define libtool_remove_files 13 find $(1) -name '*.la' | $(XARGS) rm -f; 14endef 15 16 17AM_TOOL_PATHS:= \ 18 AUTOM4TE=$(STAGING_DIR_HOST)/bin/autom4te \ 19 AUTOCONF=$(STAGING_DIR_HOST)/bin/autoconf \ 20 AUTOMAKE=$(STAGING_DIR_HOST)/bin/automake \ 21 ACLOCAL=$(STAGING_DIR_HOST)/bin/aclocal \ 22 AUTOHEADER=$(STAGING_DIR_HOST)/bin/autoheader \ 23 LIBTOOLIZE=$(STAGING_DIR_HOST)/bin/libtoolize \ 24 LIBTOOL=$(STAGING_DIR_HOST)/bin/libtool \ 25 M4=$(STAGING_DIR_HOST)/bin/m4 \ 26 AUTOPOINT=true 27 28# 1: build dir 29# 2: remove files 30# 3: automake paths 31# 4: libtool paths 32# 5: extra m4 dirs 33define autoreconf 34 (cd $(1); \ 35 $(patsubst %,rm -f %;,$(2)) \ 36 $(foreach p,$(3), \ 37 if [ -f $(p)/configure.ac ] || [ -f $(p)/configure.in ]; then \ 38 [ -d $(p)/autom4te.cache ] && rm -rf autom4te.cache; \ 39 [ -e $(p)/config.rpath ] || \ 40 ln -s $(SCRIPT_DIR)/config.rpath $(p)/config.rpath; \ 41 touch NEWS AUTHORS COPYING ABOUT-NLS ChangeLog; \ 42 $(AM_TOOL_PATHS) $(STAGING_DIR_HOST)/bin/autoreconf -v -f -i -s \ 43 $(if $(word 2,$(3)),--no-recursive) \ 44 -B $(STAGING_DIR_HOST)/share/aclocal \ 45 $(patsubst %,-I %,$(5)) \ 46 $(patsubst %,-I %,$(4)) $(p) || true; \ 47 fi; \ 48 ) \ 49 ); 50endef 51 52# 1: build dir 53define patch_libtool 54 @(cd $(1); \ 55 for lt in $$$$($$(STAGING_DIR_HOST)/bin/find . -name ltmain.sh); do \ 56 lt_version="$$$$($$(STAGING_DIR_HOST)/bin/sed -ne 's,^[[:space:]]*VERSION="\?\([0-9]\.[0-9]\+\).*,\1,p' $$$$lt)"; \ 57 case "$$$$lt_version" in \ 58 1.5|2.2|2.4) echo "autotools.mk: Found libtool v$$$$lt_version - applying patch to $$$$lt"; \ 59 (cd $$$$(dirname $$$$lt) && $$(PATCH) -N -s -p1 < $$(TOPDIR)/tools/libtool/files/libtool-v$$$$lt_version.patch || true) ;; \ 60 *) echo "autotools.mk: error: Unsupported libtool version v$$$$lt_version - cannot patch $$$$lt"; exit 1 ;; \ 61 esac; \ 62 done; \ 63 ); 64endef 65 66 67PKG_LIBTOOL_PATHS?=$(CONFIGURE_PATH) 68PKG_AUTOMAKE_PATHS?=$(CONFIGURE_PATH) 69PKG_MACRO_PATHS?=m4 70PKG_REMOVE_FILES?=aclocal.m4 71 72Hooks/InstallDev/Post += libtool_remove_files 73 74define autoreconf_target 75 $(strip $(call autoreconf, \ 76 $(PKG_BUILD_DIR), $(PKG_REMOVE_FILES), \ 77 $(PKG_AUTOMAKE_PATHS), $(PKG_LIBTOOL_PATHS), \ 78 $(STAGING_DIR)/host/share/aclocal $(STAGING_DIR)/usr/share/aclocal $(PKG_MACRO_PATHS))) 79endef 80 81define patch_libtool_target 82 $(strip $(call patch_libtool, \ 83 $(PKG_BUILD_DIR))) 84endef 85 86ifneq ($(filter patch-libtool,$(PKG_FIXUP)),) 87 Hooks/Configure/Pre += patch_libtool_target 88endif 89 90ifneq ($(filter libtool,$(PKG_FIXUP)),) 91 PKG_BUILD_DEPENDS += libtool libintl libiconv 92 ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),) 93 Hooks/Configure/Pre += autoreconf_target 94 endif 95endif 96 97ifneq ($(filter libtool-ucxx,$(PKG_FIXUP)),) 98 PKG_BUILD_DEPENDS += libtool libintl libiconv 99 ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),) 100 Hooks/Configure/Pre += autoreconf_target 101 endif 102endif 103 104ifneq ($(filter autoreconf,$(PKG_FIXUP)),) 105 ifeq ($(filter autoreconf,$(Hooks/Configure/Pre)),) 106 Hooks/Configure/Pre += autoreconf_target 107 endif 108endif 109 110 111HOST_FIXUP?=$(PKG_FIXUP) 112HOST_LIBTOOL_PATHS?=$(if $(PKG_LIBTOOL_PATHS),$(PKG_LIBTOOL_PATHS),.) 113HOST_AUTOMAKE_PATHS?=$(if $(PKG_AUTOMAKE_PATHS),$(PKG_AUTOMAKE_PATHS),.) 114HOST_MACRO_PATHS?=$(if $(PKG_MACRO_PATHS),$(PKG_MACRO_PATHS),m4) 115HOST_REMOVE_FILES?=$(PKG_REMOVE_FILES) 116 117define autoreconf_host 118 $(strip $(call autoreconf, \ 119 $(HOST_BUILD_DIR), $(HOST_REMOVE_FILES), \ 120 $(HOST_AUTOMAKE_PATHS), $(HOST_LIBTOOL_PATHS), \ 121 $(HOST_MACRO_PATHS))) 122endef 123 124define patch_libtool_host 125 $(strip $(call patch_libtool, \ 126 $(HOST_BUILD_DIR))) 127endef 128 129ifneq ($(filter patch-libtool,$(PKG_FIXUP)),) 130 Hooks/HostConfigure/Pre += patch_libtool_host 131endif 132 133ifneq ($(filter patch-libtool,$(HOST_FIXUP)),) 134 Hooks/HostConfigure/Pre += $(strip $(call patch_libtool,$(HOST_BUILD_DIR))) 135endif 136 137ifneq ($(filter libtool,$(HOST_FIXUP)),) 138 ifeq ($(filter no-autoreconf,$(HOST_FIXUP)),) 139 Hooks/HostConfigure/Pre += autoreconf_host 140 endif 141endif 142 143ifneq ($(filter libtool-ucxx,$(HOST_FIXUP)),) 144 ifeq ($(filter no-autoreconf,$(HOST_FIXUP)),) 145 Hooks/HostConfigure/Pre += autoreconf_host 146 endif 147endif 148 149ifneq ($(filter autoreconf,$(HOST_FIXUP)),) 150 ifeq ($(filter autoreconf,$(Hooks/HostConfigure/Pre)),) 151 Hooks/HostConfigure/Pre += autoreconf_host 152 endif 153endif 154