diff --git a/include/autotools.mk b/include/autotools.mk new file mode 100644 index 0000000000..fd57e64727 --- /dev/null +++ b/include/autotools.mk @@ -0,0 +1,30 @@ +# +# Copyright (C) 2007 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define replace + if [ -f "$(PKG_BUILD_DIR)/$(3)$(1)" -a -e "$(2)/$(1)" ]; then \ + rm -f $(PKG_BUILD_DIR)/$(3)$(1); \ + ln -s $(2)/$(1) $(PKG_BUILD_DIR)/$(3); \ + fi + +endef + +# replace copies of ltmain.sh with the build system's version +update_libtool=$(call replace,libtool,$(STAGING_DIR)/host/bin,$(CONFIGURE_PATH)/)$(call replace,ltmain.sh,$(STAGING_DIR)/host/share/libtool,$(CONFIGURE_PATH)/) + +# prevent libtool from linking against host development libraries +define libtool_fixup_libdir + find $(PKG_BUILD_DIR) -name '*.la' | $(XARGS) \ + $(SED) "s,^libdir='/usr/lib',libdir='$(strip $(1))/usr/lib',g" +endef + +ifneq ($(filter libtool,$(PKG_FIXUP)),) + PKG_BUILD_DEPENDS += libtool + Hooks/Configure/Pre += update_libtool + Hooks/Configure/Post += update_libtool + Hooks/Build/Post += libtool_fixup_libdir +endif diff --git a/include/package.mk b/include/package.mk index 7e6b750da0..d5d39d8f33 100644 --- a/include/package.mk +++ b/include/package.mk @@ -27,6 +27,7 @@ include $(INCLUDE_DIR)/package-defaults.mk include $(INCLUDE_DIR)/package-dumpinfo.mk include $(INCLUDE_DIR)/package-ipkg.mk include $(INCLUDE_DIR)/package-bin.mk +include $(INCLUDE_DIR)/autotools.mk override MAKEFLAGS= export CONFIG_SITE:=$(INCLUDE_DIR)/site/$(REAL_GNU_TARGET_NAME) @@ -50,6 +51,10 @@ define Download/default MD5SUM:=$(PKG_MD5SUM) endef +define sep + +endef + define Build/DefaultTargets $(if $(QUILT),$(Build/Quilt)) $(if $(strip $(PKG_SOURCE_URL)),$(call Download,default)) @@ -58,15 +63,21 @@ define Build/DefaultTargets $(STAMP_PREPARED): @-rm -rf $(PKG_BUILD_DIR) @mkdir -p $(PKG_BUILD_DIR) + $(foreach hook,$(Hooks/Prepare/Pre),$(call $(hook))$(sep)) $(Build/Prepare) + $(foreach hook,$(Hooks/Prepare/Post),$(call $(hook))$(sep)) touch $$@ $(STAMP_CONFIGURED): $(STAMP_PREPARED) + $(foreach hook,$(Hooks/Configure/Pre),$(call $(hook))$(sep)) $(Build/Configure) + $(foreach hook,$(Hooks/Configure/Post),$(call $(hook))$(sep)) touch $$@ $(STAMP_BUILT): $(STAMP_CONFIGURED) + $(foreach hook,$(Hooks/Compile/Pre),$(call $(hook))$(sep)) $(Build/Compile) + $(foreach hook,$(Hooks/Compile/Post),$(call $(hook))$(sep)) touch $$@ $(STAMP_INSTALLED): $(STAMP_BUILT) @@ -126,18 +137,6 @@ endif $(if $(DUMP),,$(call Build/DefaultTargets,$(1))) endef -# prevent libtool from setting rpath when linking -define libtool_disable_rpath - find $(PKG_BUILD_DIR) -name 'libtool' | $(XARGS) \ - $(SED) 's,^hardcode_libdir_flag_spec=.*,hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ ",g' -endef - -# prevent libtool from linking against host development libraries -define libtool_fixup_libdir - find $(PKG_BUILD_DIR) -name '*.la' | $(XARGS) \ - $(SED) "s,^libdir='/usr/lib',libdir='$(strip $(1))/usr/lib',g" -endef - define pkg_install_files $(foreach install_file,$(1),$(INSTALL_DIR) $(3)/`dirname $(install_file)`; $(INSTALL_DATA) $(2)/$(install_file) $(3)/`dirname $(install_file)`;) endef