- implement hooks for hostbuilds - use host build hooks to implement fixups for host...
authorJo-Philipp Wich <jow@openwrt.org>
Mon, 13 Dec 2010 19:04:33 +0000 (19:04 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Mon, 13 Dec 2010 19:04:33 +0000 (19:04 +0000)
SVN-Revision: 24551

include/autotools.mk
include/host-build.mk
include/package.mk
rules.mk

index b204f80dba910b331107b3b7d3dfab45a134da91..2ab42df61fff471f4b1e905209bee0845b8361f5 100644 (file)
@@ -5,10 +5,6 @@
 # See /LICENSE for more information.
 #
 
 # See /LICENSE for more information.
 #
 
-PKG_LIBTOOL_PATHS?=$(CONFIGURE_PATH)
-PKG_AUTOMAKE_PATHS?=$(CONFIGURE_PATH)
-PKG_REMOVE_FILES?=aclocal.m4
-
 autoconf_bool = $(patsubst %,$(if $($(1)),--enable,--disable)-%,$(2))
 
 # delete *.la-files from staging_dir - we can not yet remove respective lines within all package
 autoconf_bool = $(patsubst %,$(if $($(1)),--enable,--disable)-%,$(2))
 
 # delete *.la-files from staging_dir - we can not yet remove respective lines within all package
@@ -17,10 +13,15 @@ define libtool_remove_files
        find $(1) -name '*.la' | $(XARGS) rm -f;
 endef
 
        find $(1) -name '*.la' | $(XARGS) rm -f;
 endef
 
+# 1: build dir
+# 2: remove files
+# 3: automake paths
+# 4: libtool paths
+# 5: extra m4 dirs
 define autoreconf
 define autoreconf
-       (cd $(PKG_BUILD_DIR); \
-               $(patsubst %,rm -f %;,$(PKG_REMOVE_FILES)) \
-               $(foreach p,$(PKG_AUTOMAKE_PATHS), \
+       (cd $(1); \
+               $(patsubst %,rm -f %;,$(2)) \
+               $(foreach p,$(3), \
                        if [ -x $(p)/autogen.sh ]; then \
                                $(p)/autogen.sh || true; \
                        elif [ -f $(p)/configure.ac ] || [ -f $(p)/configure.in ]; then \
                        if [ -x $(p)/autogen.sh ]; then \
                                $(p)/autogen.sh || true; \
                        elif [ -f $(p)/configure.ac ] || [ -f $(p)/configure.in ]; then \
@@ -28,32 +29,75 @@ define autoreconf
                                [ -d $(p)/autom4te.cache ] && rm -rf autom4te.cache; \
                                $(STAGING_DIR_HOST)/bin/autoreconf -v -f -i -s \
                                        -B $(STAGING_DIR_HOST)/share/aclocal \
                                [ -d $(p)/autom4te.cache ] && rm -rf autom4te.cache; \
                                $(STAGING_DIR_HOST)/bin/autoreconf -v -f -i -s \
                                        -B $(STAGING_DIR_HOST)/share/aclocal \
-                                       -B $(STAGING_DIR)/host/share/aclocal \
-                                       -B $(STAGING_DIR)/usr/share/aclocal \
-                                       $(patsubst %,-I %,$(PKG_LIBTOOL_PATHS)) $(PKG_LIBTOOL_PATHS) || true; \
+                                       $(patsubst %,-B %,$(5)) \
+                                       $(patsubst %,-I %,$(4)) $(4) || true; \
                        fi; \
                ) \
        );
 endef
 
                        fi; \
                ) \
        );
 endef
 
+
+PKG_LIBTOOL_PATHS?=$(CONFIGURE_PATH)
+PKG_AUTOMAKE_PATHS?=$(CONFIGURE_PATH)
+PKG_REMOVE_FILES?=aclocal.m4
+
 Hooks/InstallDev/Post += libtool_remove_files
 
 Hooks/InstallDev/Post += libtool_remove_files
 
+define autoreconf_target
+  $(strip $(call autoreconf, \
+    $(PKG_BUILD_DIR), $(PKG_REMOVE_FILES), \
+    $(PKG_AUTOMAKE_PATHS), $(PKG_LIBTOOL_PATHS), \
+    $(STAGING_DIR)/host/share/aclocal $(STAGING_DIR)/usr/share/aclocal))
+endef
+
 ifneq ($(filter libtool,$(PKG_FIXUP)),)
   PKG_BUILD_DEPENDS += libtool
  ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),)
 ifneq ($(filter libtool,$(PKG_FIXUP)),)
   PKG_BUILD_DEPENDS += libtool
  ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),)
-  Hooks/Configure/Pre += autoreconf
+  Hooks/Configure/Pre += autoreconf_target
  endif
 endif
  endif
 endif
+
 ifneq ($(filter libtool-ucxx,$(PKG_FIXUP)),)
   PKG_BUILD_DEPENDS += libtool
  ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),)
 ifneq ($(filter libtool-ucxx,$(PKG_FIXUP)),)
   PKG_BUILD_DEPENDS += libtool
  ifeq ($(filter no-autoreconf,$(PKG_FIXUP)),)
-  Hooks/Configure/Pre += autoreconf
+  Hooks/Configure/Pre += autoreconf_target
  endif
 endif
 
 ifneq ($(filter autoreconf,$(PKG_FIXUP)),)
   ifeq ($(filter autoreconf,$(Hooks/Configure/Pre)),)
  endif
 endif
 
 ifneq ($(filter autoreconf,$(PKG_FIXUP)),)
   ifeq ($(filter autoreconf,$(Hooks/Configure/Pre)),)
-    Hooks/Configure/Pre += autoreconf
+    Hooks/Configure/Pre += autoreconf_target
+  endif
+endif
+
+
+HOST_FIXUP?=$(PKG_FIXUP)
+HOST_LIBTOOL_PATHS?=$(if $(PKG_LIBTOOL_PATHS),$(PKG_LIBTOOL_PATHS),.)
+HOST_AUTOMAKE_PATHS?=$(if $(PKG_AUTOMAKE_PATHS),$(PKG_AUTOMAKE_PATHS),.)
+HOST_REMOVE_FILES?=$(PKG_REMOVE_FILES)
+
+define autoreconf_host
+  $(strip $(call autoreconf, \
+    $(HOST_BUILD_DIR), $(HOST_REMOVE_FILES), \
+    $(HOST_AUTOMAKE_PATHS), $(HOST_LIBTOOL_PATHS)))
+endef
+
+ifneq ($(filter libtool,$(HOST_FIXUP)),)
+  HOST_BUILD_DEPENDS += libtool
+ ifeq ($(filter no-autoreconf,$(HOST_FIXUP)),)
+  Hooks/HostConfigure/Pre += autoreconf_host
+ endif
+endif
+
+ifneq ($(filter libtool-ucxx,$(HOST_FIXUP)),)
+  HOST_BUILD_DEPENDS += libtool
+ ifeq ($(filter no-autoreconf,$(HOST_FIXUP)),)
+  Hooks/HostConfigure/Pre += autoreconf_host
+ endif
+endif
+
+ifneq ($(filter autoreconf,$(HOST_FIXUP)),)
+  ifeq ($(filter autoreconf,$(Hooks/HostConfigure/Pre)),)
+    Hooks/HostConfigure/Pre += autoreconf_host
   endif
 endif
   endif
 endif
index 161192c3bb71d28f106b01f02e78ca69cfec3d54..dbd1c3aa45818458e10e667ac8f80ed21bc8f904 100644 (file)
@@ -30,6 +30,7 @@ override MAKEFLAGS=
 
 include $(INCLUDE_DIR)/download.mk
 include $(INCLUDE_DIR)/quilt.mk
 
 include $(INCLUDE_DIR)/download.mk
 include $(INCLUDE_DIR)/quilt.mk
+include $(INCLUDE_DIR)/autotools.mk
 
 Host/Patch:=$(Host/Patch/Default)
 ifneq ($(strip $(HOST_UNPACK)),)
 
 Host/Patch:=$(Host/Patch/Default)
 ifneq ($(strip $(HOST_UNPACK)),)
@@ -130,12 +131,16 @@ ifndef DUMP
   $(HOST_STAMP_PREPARED):
        @-rm -rf $(HOST_BUILD_DIR)
        @mkdir -p $(HOST_BUILD_DIR)
   $(HOST_STAMP_PREPARED):
        @-rm -rf $(HOST_BUILD_DIR)
        @mkdir -p $(HOST_BUILD_DIR)
+       $(foreach hook,$(Hooks/HostPrepare/Pre),$(call $(hook))$(sep))
        $(call Host/Prepare)
        $(call Host/Prepare)
+       $(foreach hook,$(Hooks/HostPrepare/Post),$(call $(hook))$(sep))
        touch $$@
 
   $(call Host/Exports,$(HOST_STAMP_CONFIGURED))
   $(HOST_STAMP_CONFIGURED): $(HOST_STAMP_PREPARED)
        touch $$@
 
   $(call Host/Exports,$(HOST_STAMP_CONFIGURED))
   $(HOST_STAMP_CONFIGURED): $(HOST_STAMP_PREPARED)
+       $(foreach hook,$(Hooks/HostConfigure/Pre),$(call $(hook))$(sep))
        $(call Host/Configure)
        $(call Host/Configure)
+       $(foreach hook,$(Hooks/HostConfigure/Post),$(call $(hook))$(sep))
        touch $$@
 
   $(call Host/Exports,$(HOST_STAMP_BUILT))
        touch $$@
 
   $(call Host/Exports,$(HOST_STAMP_BUILT))
@@ -151,17 +156,23 @@ ifndef DUMP
     update: host-update
 
     $(HOST_STAMP_BUILT): $(HOST_STAMP_CONFIGURED)
     update: host-update
 
     $(HOST_STAMP_BUILT): $(HOST_STAMP_CONFIGURED)
+               $(foreach hook,$(Hooks/HostCompile/Pre),$(call $(hook))$(sep))
                $(call Host/Compile)
                $(call Host/Compile)
+               $(foreach hook,$(Hooks/HostCompile/Post),$(call $(hook))$(sep))
                touch $$@
 
     $(HOST_STAMP_INSTALLED): $(HOST_STAMP_BUILT) $(if $(FORCE_HOST_INSTALL),FORCE)
                $(call Host/Install)
                touch $$@
 
     $(HOST_STAMP_INSTALLED): $(HOST_STAMP_BUILT) $(if $(FORCE_HOST_INSTALL),FORCE)
                $(call Host/Install)
+               $(foreach hook,$(Hooks/HostInstall/Post),$(call $(hook))$(sep))
                mkdir -p $$(shell dirname $$@)
                touch $$@
   else
     $(HOST_STAMP_BUILT): $(HOST_STAMP_CONFIGURED) $(if $(FORCE_HOST_INSTALL),FORCE)
                mkdir -p $$(shell dirname $$@)
                touch $$@
   else
     $(HOST_STAMP_BUILT): $(HOST_STAMP_CONFIGURED) $(if $(FORCE_HOST_INSTALL),FORCE)
+               $(foreach hook,$(Hooks/HostCompile/Pre),$(call $(hook))$(sep))
                $(call Host/Compile)
                $(call Host/Compile)
+               $(foreach hook,$(Hooks/HostCompile/Post),$(call $(hook))$(sep))
                $(call Host/Install)
                $(call Host/Install)
+               $(foreach hook,$(Hooks/HostInstall/Post),$(call $(hook))$(sep))
                touch $$@
   endif
   host-prepare: $(HOST_STAMP_PREPARED)
                touch $$@
   endif
   host-prepare: $(HOST_STAMP_PREPARED)
@@ -182,4 +193,3 @@ ifndef DUMP
   clean:
 
 endif
   clean:
 
 endif
-
index 06f3a839c6187b920cdb9226e42af8cf5685ea11..580774134c916c4aff3fad0040a90881c4fa0aa6 100644 (file)
@@ -75,10 +75,6 @@ define Download/default
   MD5SUM:=$(PKG_MD5SUM)
 endef
 
   MD5SUM:=$(PKG_MD5SUM)
 endef
 
-define sep
-
-endef
-
 define Build/Exports/Default
   $(1) : export ACLOCAL_INCLUDE=$$(foreach p,$$(wildcard $$(STAGING_DIR)/usr/share/aclocal $$(STAGING_DIR)/usr/share/aclocal-* $$(STAGING_DIR)/host/share/aclocal $$(STAGING_DIR)/host/share/aclocal-*),-I $$(p))
   $(1) : export STAGING_PREFIX=$$(STAGING_DIR)/usr
 define Build/Exports/Default
   $(1) : export ACLOCAL_INCLUDE=$$(foreach p,$$(wildcard $$(STAGING_DIR)/usr/share/aclocal $$(STAGING_DIR)/usr/share/aclocal-* $$(STAGING_DIR)/host/share/aclocal $$(STAGING_DIR)/host/share/aclocal-*),-I $$(p))
   $(1) : export STAGING_PREFIX=$$(STAGING_DIR)/usr
index d3521649a52da662301b3f29eafc6486fe60e3b5..09b4f5447a9d6e56ab5ef3022375e6b49c4c5708 100644 (file)
--- a/rules.mk
+++ b/rules.mk
@@ -28,6 +28,10 @@ merge=$(subst $(space),,$(1))
 confvar=$(call merge,$(foreach v,$(1),$(if $($(v)),y,n)))
 strip_last=$(patsubst %.$(lastword $(subst .,$(space),$(1))),%,$(1))
 
 confvar=$(call merge,$(foreach v,$(1),$(if $($(v)),y,n)))
 strip_last=$(patsubst %.$(lastword $(subst .,$(space),$(1))),%,$(1))
 
+define sep
+
+endef
+
 _SINGLE=export MAKEFLAGS=$(space);
 CFLAGS:=
 ARCH:=$(subst i486,i386,$(subst i586,i386,$(subst i686,i386,$(call qstrip,$(CONFIG_ARCH)))))
 _SINGLE=export MAKEFLAGS=$(space);
 CFLAGS:=
 ARCH:=$(subst i486,i386,$(subst i586,i386,$(subst i686,i386,$(call qstrip,$(CONFIG_ARCH)))))