From: Thomas Petazzoni Date: Tue, 17 Apr 2012 14:45:17 +0000 (+0200) Subject: Rename Makefile.autotools.in to pkg-autotargets.mk X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6ff4c584c80b0fe3d7ebb866e388b53859fb2c4e;p=buildroot.git Rename Makefile.autotools.in to pkg-autotargets.mk Signed-off-by: Thomas Petazzoni Signed-off-by: Peter Korsgaard --- diff --git a/package/Makefile.autotools.in b/package/Makefile.autotools.in deleted file mode 100644 index fd118dc47a..0000000000 --- a/package/Makefile.autotools.in +++ /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 _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 diff --git a/package/Makefile.in b/package/Makefile.in index c344c6b3f2..20fac9af70 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -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 index 0000000000..fd118dc47a --- /dev/null +++ b/package/pkg-autotargets.mk @@ -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 _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