Rename Makefile.autotools.in to pkg-autotargets.mk
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tue, 17 Apr 2012 14:45:17 +0000 (16:45 +0200)
committerPeter Korsgaard <jacmet@sunsite.dk>
Thu, 19 Apr 2012 14:05:53 +0000 (16:05 +0200)
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
package/Makefile.autotools.in [deleted file]
package/Makefile.in
package/pkg-autotargets.mk [new file with mode: 0644]

diff --git a/package/Makefile.autotools.in b/package/Makefile.autotools.in
deleted file mode 100644 (file)
index fd118dc..0000000
+++ /dev/null
@@ -1,316 +0,0 @@
-################################################################################
-# Autotools package infrastructure
-#
-# This file implements an infrastructure that eases development of
-# package .mk files for autotools packages. It should be used for all
-# packages that use the autotools as their build system. Non-autotools
-# packages should use the generic infrastructure in
-# package/Makefile.package.in.
-#
-# See the Buildroot documentation for details on the usage of this
-# infrastructure
-#
-# In terms of implementation, this autotools infrastructure requires
-# the .mk file to only specify metadata informations about the
-# package: name, version, download URL, etc.
-#
-# We still allow the package .mk file to override what the different
-# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is
-# already defined, it is used as the list of commands to perform to
-# build the package, instead of the default autotools behaviour. The
-# package can also define some post operation hooks.
-#
-################################################################################
-
-
-#
-# Utility function to upgrade config.sub and config.guess files
-#
-# argument 1 : directory into which config.guess and config.sub need
-# to be updated. Note that config.sub and config.guess are searched
-# recursively in this directory.
-#
-define CONFIG_UPDATE
-       for file in config.guess config.sub; do \
-               for i in $$(find $(1) -name $$file); do \
-                       cp support/gnuconfig/$$file $$i; \
-               done; \
-       done
-endef
-
-################################################################################
-# AUTOTARGETS_INNER -- defines how the configuration, compilation and
-# installation of an autotools package should be done, implements a
-# few hooks to tune the build process for autotools specifities and
-# calls the generic package infrastructure to generate the necessary
-# make targets
-#
-#  argument 1 is the lowercase package name
-#  argument 2 is the uppercase package name, including an HOST_ prefix
-#             for host packages
-#  argument 3 is the uppercase package name, without the HOST_ prefix
-#             for host packages
-#  argument 4 is the package directory prefix
-#  argument 5 is the type (target or host)
-################################################################################
-
-define AUTOTARGETS_INNER
-
-# define package-specific variables to default values
-ifndef $(2)_SUBDIR
- ifdef $(3)_SUBDIR
-  $(2)_SUBDIR = $($(3)_SUBDIR)
- else
-  $(2)_SUBDIR ?=
- endif
-endif
-
-ifndef $(2)_LIBTOOL_PATCH
- ifdef $(3)_LIBTOOL_PATCH
-  $(2)_LIBTOOL_PATCH = $($(3)_LIBTOOL_PATCH)
- else
-  $(2)_LIBTOOL_PATCH ?= YES
- endif
-endif
-
-ifndef $(2)_MAKE
- ifdef $(3)_MAKE
-  $(2)_MAKE = $($(3)_MAKE)
- else
-  $(2)_MAKE ?= $(MAKE)
- endif
-endif
-
-$(2)_CONF_ENV                  ?=
-$(2)_CONF_OPT                  ?=
-$(2)_MAKE_ENV                  ?=
-$(2)_MAKE_OPT                  ?=
-$(2)_AUTORECONF                        ?= NO
-$(2)_AUTORECONF_OPT            ?=
-$(2)_INSTALL_STAGING_OPT       ?= DESTDIR=$$(STAGING_DIR) install
-$(2)_INSTALL_TARGET_OPT                ?= DESTDIR=$$(TARGET_DIR)  install
-$(2)_CLEAN_OPT                 ?= clean
-$(2)_UNINSTALL_STAGING_OPT     ?= DESTDIR=$$(STAGING_DIR) uninstall
-$(2)_UNINSTALL_TARGET_OPT      ?= DESTDIR=$$(TARGET_DIR)  uninstall
-
-$(2)_SRCDIR                     = $$($(2)_DIR)/$$($(2)_SUBDIR)
-
-#
-# Configure step. Only define it if not already defined by the package
-# .mk file. And take care of the differences between host and target
-# packages.
-#
-ifndef $(2)_CONFIGURE_CMDS
-ifeq ($(5),target)
-
-# Configure package for target
-define $(2)_CONFIGURE_CMDS
-       (cd $$($$(PKG)_SRCDIR) && rm -rf config.cache && \
-       $$(TARGET_CONFIGURE_OPTS) \
-       $$(TARGET_CONFIGURE_ARGS) \
-       $$($$(PKG)_CONF_ENV) \
-       ./configure \
-               --target=$$(GNU_TARGET_NAME) \
-               --host=$$(GNU_TARGET_NAME) \
-               --build=$$(GNU_HOST_NAME) \
-               --prefix=/usr \
-               --exec-prefix=/usr \
-               --sysconfdir=/etc \
-               --program-prefix="" \
-               $$(DISABLE_DOCUMENTATION) \
-               $$(DISABLE_NLS) \
-               $$(DISABLE_LARGEFILE) \
-               $$(DISABLE_IPV6) \
-               $$(SHARED_STATIC_LIBS_OPTS) \
-               $$(QUIET) $$($$(PKG)_CONF_OPT) \
-       )
-endef
-else
-
-# Configure package for host
-define $(2)_CONFIGURE_CMDS
-       (cd $$($$(PKG)_SRCDIR) && rm -rf config.cache; \
-               $$(HOST_CONFIGURE_OPTS) \
-               CFLAGS="$$(HOST_CFLAGS)" \
-               LDFLAGS="$$(HOST_LDFLAGS)" \
-                $$($$(PKG)_CONF_ENV) \
-               ./configure \
-               --prefix="$$(HOST_DIR)/usr" \
-               --sysconfdir="$$(HOST_DIR)/etc" \
-               --enable-shared --disable-static \
-               $$($$(PKG)_CONF_OPT) \
-       )
-endef
-endif
-endif
-
-#
-# Hook to update config.sub and config.guess if needed
-#
-define UPDATE_CONFIG_HOOK
-       @$$(call MESSAGE, "Updating config.sub and config.guess")
-       $$(call CONFIG_UPDATE,$$(@D))
-endef
-
-$(2)_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK
-
-#
-# Hook to patch libtool to make it work properly for cross-compilation
-#
-define LIBTOOL_PATCH_HOOK
-       @$$(call MESSAGE,"Patching libtool")
-       $(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES" \
-               -a "$$($$(PKG)_AUTORECONF)" != "YES"; then \
-               for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
-                       ltmain_version=`sed -n '/^[     ]*VERSION=/{s/^[        ]*VERSION=//;p;q;}' $$$$i | \
-                       sed -e 's/\([0-9].[0-9]*\).*/\1/' -e 's/\"//'`; \
-                       if test $$$${ltmain_version} = '1.5'; then \
-                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v1.5.patch; \
-                       elif test $$$${ltmain_version} = "2.2"; then\
-                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v2.2.patch; \
-                       elif test $$$${ltmain_version} = "2.4"; then\
-                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v2.4.patch; \
-                       fi \
-               done \
-       fi
-endef
-
-# default values are not evaluated yet, so don't rely on this defaulting to YES
-ifneq ($$($(2)_LIBTOOL_PATCH),NO)
-$(2)_POST_PATCH_HOOKS += LIBTOOL_PATCH_HOOK
-endif
-
-#
-# Hook to autoreconf the package if needed
-#
-define AUTORECONF_HOOK
-       @$$(call MESSAGE,"Autoreconfiguring")
-       $(Q)cd $$($$(PKG)_SRCDIR) && $(AUTORECONF) $$($$(PKG)_AUTORECONF_OPT)
-       $(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES"; then \
-               for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
-                       ltmain_version=`sed -n '/^[     ]*VERSION=/{s/^[        ]*VERSION=//;p;q;}' $$$$i | sed 's/\([0-9].[0-9]*\).*/\1/'`; \
-                       if test $$$${ltmain_version} = "1.5"; then \
-                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v1.5.patch; \
-                       elif test $$$${ltmain_version} = "2.2"; then\
-                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v2.2.patch; \
-                       elif test $$$${ltmain_version} = "2.4"; then\
-                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v2.4.patch; \
-                       fi \
-               done \
-       fi
-endef
-
-# This must be repeated from GENTARGETS_INNER, otherwise we get an empty
-# _DEPENDENCIES if _AUTORECONF is YES.  Also filter the result of _AUTORECONF
-# away from the non-host rule
-$(2)_DEPENDENCIES ?= $(filter-out host-automake host-autoconf host-libtool,\
-    $(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
-
-
-ifeq ($$($(2)_AUTORECONF),YES)
-$(2)_PRE_CONFIGURE_HOOKS += AUTORECONF_HOOK
-$(2)_DEPENDENCIES += host-automake host-autoconf host-libtool
-endif
-
-#
-# Build step. Only define it if not already defined by the package .mk
-# file.
-#
-ifndef $(2)_BUILD_CMDS
-ifeq ($(5),target)
-define $(2)_BUILD_CMDS
-       $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_SRCDIR)
-endef
-else
-define $(2)_BUILD_CMDS
-       $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_SRCDIR)
-endef
-endif
-endif
-
-#
-# Host installation step. Only define it if not already defined by the
-# package .mk file.
-#
-ifndef $(2)_INSTALL_CMDS
-define $(2)_INSTALL_CMDS
-       $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) -C $$($$(PKG)_SRCDIR) install
-endef
-endif
-
-#
-# Staging installation step. Only define it if not already defined by
-# the package .mk file.
-#
-ifndef $(2)_INSTALL_STAGING_CMDS
-define $(2)_INSTALL_STAGING_CMDS
-       $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPT) -C $$($$(PKG)_SRCDIR)
-       for i in $$$$(find $(STAGING_DIR)/usr/lib* -name "*.la"); do \
-               cp -f $$$$i $$$$i~; \
-               $$(SED) "s:\(['= ]\)/usr:\\1$(STAGING_DIR)/usr:g" $$$$i; \
-       done
-endef
-endif
-
-#
-# Target installation step. Only define it if not already defined by
-# the package .mk file.
-#
-ifndef $(2)_INSTALL_TARGET_CMDS
-define $(2)_INSTALL_TARGET_CMDS
-       $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_TARGET_OPT) -C $$($$(PKG)_SRCDIR)
-endef
-endif
-
-#
-# Clean step. Only define it if not already defined by
-# the package .mk file.
-#
-ifndef $(2)_CLEAN_CMDS
-define $(2)_CLEAN_CMDS
-       -$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE)  $$($$(PKG)_CLEAN_OPT) -C $$($$(PKG)_SRCDIR)
-endef
-endif
-
-#
-# Uninstall from staging step. Only define it if not already defined by
-# the package .mk file.
-#
-ifndef $(2)_UNINSTALL_STAGING_CMDS
-define $(2)_UNINSTALL_STAGING_CMDS
-       $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_UNINSTALL_STAGING_OPT) -C $$($$(PKG)_SRCDIR)
-endef
-endif
-
-#
-# Uninstall from target step. Only define it if not already defined
-# by the package .mk file.
-# Autotools Makefiles do uninstall with ( cd ...; rm -f ... )
-# Since we remove a lot of directories in target-finalize, this is likely
-# to fail.  Therefore add -k flag.
-#
-ifndef $(2)_UNINSTALL_TARGET_CMDS
-define $(2)_UNINSTALL_TARGET_CMDS
-       $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) -k $$($$(PKG)_UNINSTALL_TARGET_OPT) -C $$($$(PKG)_SRCDIR)
-endef
-endif
-
-# Call the generic package infrastructure to generate the necessary
-# make targets
-$(call GENTARGETS_INNER,$(1),$(2),$(3),$(4),$(5))
-
-endef
-
-################################################################################
-# AUTOTARGETS -- the target generator macro for autotools packages
-#
-# Argument 1 is "target" or "host"           [optional, default: "target"]
-################################################################################
-
-define AUTOTARGETS
-ifeq ($(1),host)
-$(call AUTOTARGETS_INNER,$(1)-$(call pkgname),$(call UPPERCASE,$(1)-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
-else
-$(call AUTOTARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
-endif
-endef
index c344c6b3f250fa526161b0b58b23ac869203956c..20fac9af7008c0cdece46b567cd24f884c6392e5 100644 (file)
@@ -299,6 +299,6 @@ else
 SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
 endif
 
-include package/Makefile.autotools.in
+include package/pkg-autotargets.mk
 include package/Makefile.cmake.in
 include package/Makefile.package.in
diff --git a/package/pkg-autotargets.mk b/package/pkg-autotargets.mk
new file mode 100644 (file)
index 0000000..fd118dc
--- /dev/null
@@ -0,0 +1,316 @@
+################################################################################
+# Autotools package infrastructure
+#
+# This file implements an infrastructure that eases development of
+# package .mk files for autotools packages. It should be used for all
+# packages that use the autotools as their build system. Non-autotools
+# packages should use the generic infrastructure in
+# package/Makefile.package.in.
+#
+# See the Buildroot documentation for details on the usage of this
+# infrastructure
+#
+# In terms of implementation, this autotools infrastructure requires
+# the .mk file to only specify metadata informations about the
+# package: name, version, download URL, etc.
+#
+# We still allow the package .mk file to override what the different
+# steps are doing, if needed. For example, if <PKG>_BUILD_CMDS is
+# already defined, it is used as the list of commands to perform to
+# build the package, instead of the default autotools behaviour. The
+# package can also define some post operation hooks.
+#
+################################################################################
+
+
+#
+# Utility function to upgrade config.sub and config.guess files
+#
+# argument 1 : directory into which config.guess and config.sub need
+# to be updated. Note that config.sub and config.guess are searched
+# recursively in this directory.
+#
+define CONFIG_UPDATE
+       for file in config.guess config.sub; do \
+               for i in $$(find $(1) -name $$file); do \
+                       cp support/gnuconfig/$$file $$i; \
+               done; \
+       done
+endef
+
+################################################################################
+# AUTOTARGETS_INNER -- defines how the configuration, compilation and
+# installation of an autotools package should be done, implements a
+# few hooks to tune the build process for autotools specifities and
+# calls the generic package infrastructure to generate the necessary
+# make targets
+#
+#  argument 1 is the lowercase package name
+#  argument 2 is the uppercase package name, including an HOST_ prefix
+#             for host packages
+#  argument 3 is the uppercase package name, without the HOST_ prefix
+#             for host packages
+#  argument 4 is the package directory prefix
+#  argument 5 is the type (target or host)
+################################################################################
+
+define AUTOTARGETS_INNER
+
+# define package-specific variables to default values
+ifndef $(2)_SUBDIR
+ ifdef $(3)_SUBDIR
+  $(2)_SUBDIR = $($(3)_SUBDIR)
+ else
+  $(2)_SUBDIR ?=
+ endif
+endif
+
+ifndef $(2)_LIBTOOL_PATCH
+ ifdef $(3)_LIBTOOL_PATCH
+  $(2)_LIBTOOL_PATCH = $($(3)_LIBTOOL_PATCH)
+ else
+  $(2)_LIBTOOL_PATCH ?= YES
+ endif
+endif
+
+ifndef $(2)_MAKE
+ ifdef $(3)_MAKE
+  $(2)_MAKE = $($(3)_MAKE)
+ else
+  $(2)_MAKE ?= $(MAKE)
+ endif
+endif
+
+$(2)_CONF_ENV                  ?=
+$(2)_CONF_OPT                  ?=
+$(2)_MAKE_ENV                  ?=
+$(2)_MAKE_OPT                  ?=
+$(2)_AUTORECONF                        ?= NO
+$(2)_AUTORECONF_OPT            ?=
+$(2)_INSTALL_STAGING_OPT       ?= DESTDIR=$$(STAGING_DIR) install
+$(2)_INSTALL_TARGET_OPT                ?= DESTDIR=$$(TARGET_DIR)  install
+$(2)_CLEAN_OPT                 ?= clean
+$(2)_UNINSTALL_STAGING_OPT     ?= DESTDIR=$$(STAGING_DIR) uninstall
+$(2)_UNINSTALL_TARGET_OPT      ?= DESTDIR=$$(TARGET_DIR)  uninstall
+
+$(2)_SRCDIR                     = $$($(2)_DIR)/$$($(2)_SUBDIR)
+
+#
+# Configure step. Only define it if not already defined by the package
+# .mk file. And take care of the differences between host and target
+# packages.
+#
+ifndef $(2)_CONFIGURE_CMDS
+ifeq ($(5),target)
+
+# Configure package for target
+define $(2)_CONFIGURE_CMDS
+       (cd $$($$(PKG)_SRCDIR) && rm -rf config.cache && \
+       $$(TARGET_CONFIGURE_OPTS) \
+       $$(TARGET_CONFIGURE_ARGS) \
+       $$($$(PKG)_CONF_ENV) \
+       ./configure \
+               --target=$$(GNU_TARGET_NAME) \
+               --host=$$(GNU_TARGET_NAME) \
+               --build=$$(GNU_HOST_NAME) \
+               --prefix=/usr \
+               --exec-prefix=/usr \
+               --sysconfdir=/etc \
+               --program-prefix="" \
+               $$(DISABLE_DOCUMENTATION) \
+               $$(DISABLE_NLS) \
+               $$(DISABLE_LARGEFILE) \
+               $$(DISABLE_IPV6) \
+               $$(SHARED_STATIC_LIBS_OPTS) \
+               $$(QUIET) $$($$(PKG)_CONF_OPT) \
+       )
+endef
+else
+
+# Configure package for host
+define $(2)_CONFIGURE_CMDS
+       (cd $$($$(PKG)_SRCDIR) && rm -rf config.cache; \
+               $$(HOST_CONFIGURE_OPTS) \
+               CFLAGS="$$(HOST_CFLAGS)" \
+               LDFLAGS="$$(HOST_LDFLAGS)" \
+                $$($$(PKG)_CONF_ENV) \
+               ./configure \
+               --prefix="$$(HOST_DIR)/usr" \
+               --sysconfdir="$$(HOST_DIR)/etc" \
+               --enable-shared --disable-static \
+               $$($$(PKG)_CONF_OPT) \
+       )
+endef
+endif
+endif
+
+#
+# Hook to update config.sub and config.guess if needed
+#
+define UPDATE_CONFIG_HOOK
+       @$$(call MESSAGE, "Updating config.sub and config.guess")
+       $$(call CONFIG_UPDATE,$$(@D))
+endef
+
+$(2)_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK
+
+#
+# Hook to patch libtool to make it work properly for cross-compilation
+#
+define LIBTOOL_PATCH_HOOK
+       @$$(call MESSAGE,"Patching libtool")
+       $(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES" \
+               -a "$$($$(PKG)_AUTORECONF)" != "YES"; then \
+               for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
+                       ltmain_version=`sed -n '/^[     ]*VERSION=/{s/^[        ]*VERSION=//;p;q;}' $$$$i | \
+                       sed -e 's/\([0-9].[0-9]*\).*/\1/' -e 's/\"//'`; \
+                       if test $$$${ltmain_version} = '1.5'; then \
+                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v1.5.patch; \
+                       elif test $$$${ltmain_version} = "2.2"; then\
+                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v2.2.patch; \
+                       elif test $$$${ltmain_version} = "2.4"; then\
+                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v2.4.patch; \
+                       fi \
+               done \
+       fi
+endef
+
+# default values are not evaluated yet, so don't rely on this defaulting to YES
+ifneq ($$($(2)_LIBTOOL_PATCH),NO)
+$(2)_POST_PATCH_HOOKS += LIBTOOL_PATCH_HOOK
+endif
+
+#
+# Hook to autoreconf the package if needed
+#
+define AUTORECONF_HOOK
+       @$$(call MESSAGE,"Autoreconfiguring")
+       $(Q)cd $$($$(PKG)_SRCDIR) && $(AUTORECONF) $$($$(PKG)_AUTORECONF_OPT)
+       $(Q)if test "$$($$(PKG)_LIBTOOL_PATCH)" = "YES"; then \
+               for i in `find $$($$(PKG)_SRCDIR) -name ltmain.sh`; do \
+                       ltmain_version=`sed -n '/^[     ]*VERSION=/{s/^[        ]*VERSION=//;p;q;}' $$$$i | sed 's/\([0-9].[0-9]*\).*/\1/'`; \
+                       if test $$$${ltmain_version} = "1.5"; then \
+                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v1.5.patch; \
+                       elif test $$$${ltmain_version} = "2.2"; then\
+                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v2.2.patch; \
+                       elif test $$$${ltmain_version} = "2.4"; then\
+                               support/scripts/apply-patches.sh $$$${i%/*} support/libtool buildroot-libtool-v2.4.patch; \
+                       fi \
+               done \
+       fi
+endef
+
+# This must be repeated from GENTARGETS_INNER, otherwise we get an empty
+# _DEPENDENCIES if _AUTORECONF is YES.  Also filter the result of _AUTORECONF
+# away from the non-host rule
+$(2)_DEPENDENCIES ?= $(filter-out host-automake host-autoconf host-libtool,\
+    $(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))))
+
+
+ifeq ($$($(2)_AUTORECONF),YES)
+$(2)_PRE_CONFIGURE_HOOKS += AUTORECONF_HOOK
+$(2)_DEPENDENCIES += host-automake host-autoconf host-libtool
+endif
+
+#
+# Build step. Only define it if not already defined by the package .mk
+# file.
+#
+ifndef $(2)_BUILD_CMDS
+ifeq ($(5),target)
+define $(2)_BUILD_CMDS
+       $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_SRCDIR)
+endef
+else
+define $(2)_BUILD_CMDS
+       $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_SRCDIR)
+endef
+endif
+endif
+
+#
+# Host installation step. Only define it if not already defined by the
+# package .mk file.
+#
+ifndef $(2)_INSTALL_CMDS
+define $(2)_INSTALL_CMDS
+       $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) -C $$($$(PKG)_SRCDIR) install
+endef
+endif
+
+#
+# Staging installation step. Only define it if not already defined by
+# the package .mk file.
+#
+ifndef $(2)_INSTALL_STAGING_CMDS
+define $(2)_INSTALL_STAGING_CMDS
+       $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPT) -C $$($$(PKG)_SRCDIR)
+       for i in $$$$(find $(STAGING_DIR)/usr/lib* -name "*.la"); do \
+               cp -f $$$$i $$$$i~; \
+               $$(SED) "s:\(['= ]\)/usr:\\1$(STAGING_DIR)/usr:g" $$$$i; \
+       done
+endef
+endif
+
+#
+# Target installation step. Only define it if not already defined by
+# the package .mk file.
+#
+ifndef $(2)_INSTALL_TARGET_CMDS
+define $(2)_INSTALL_TARGET_CMDS
+       $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_TARGET_OPT) -C $$($$(PKG)_SRCDIR)
+endef
+endif
+
+#
+# Clean step. Only define it if not already defined by
+# the package .mk file.
+#
+ifndef $(2)_CLEAN_CMDS
+define $(2)_CLEAN_CMDS
+       -$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE)  $$($$(PKG)_CLEAN_OPT) -C $$($$(PKG)_SRCDIR)
+endef
+endif
+
+#
+# Uninstall from staging step. Only define it if not already defined by
+# the package .mk file.
+#
+ifndef $(2)_UNINSTALL_STAGING_CMDS
+define $(2)_UNINSTALL_STAGING_CMDS
+       $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_UNINSTALL_STAGING_OPT) -C $$($$(PKG)_SRCDIR)
+endef
+endif
+
+#
+# Uninstall from target step. Only define it if not already defined
+# by the package .mk file.
+# Autotools Makefiles do uninstall with ( cd ...; rm -f ... )
+# Since we remove a lot of directories in target-finalize, this is likely
+# to fail.  Therefore add -k flag.
+#
+ifndef $(2)_UNINSTALL_TARGET_CMDS
+define $(2)_UNINSTALL_TARGET_CMDS
+       $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) -k $$($$(PKG)_UNINSTALL_TARGET_OPT) -C $$($$(PKG)_SRCDIR)
+endef
+endif
+
+# Call the generic package infrastructure to generate the necessary
+# make targets
+$(call GENTARGETS_INNER,$(1),$(2),$(3),$(4),$(5))
+
+endef
+
+################################################################################
+# AUTOTARGETS -- the target generator macro for autotools packages
+#
+# Argument 1 is "target" or "host"           [optional, default: "target"]
+################################################################################
+
+define AUTOTARGETS
+ifeq ($(1),host)
+$(call AUTOTARGETS_INNER,$(1)-$(call pkgname),$(call UPPERCASE,$(1)-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
+else
+$(call AUTOTARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
+endif
+endef