| ################################################################################ |
| # |
| # Makefile.autotools.in -- |
| # |
| # Implicit and Generated Rules for easily creating autotools-compatible |
| # buildroot packages |
| # |
| ## Example minimal makefile for a package named 'foo' |
| # |
| # | FOO_VERSION = 1.0 |
| # | FOO_SOURCE = foo-$(FOO_VERSION).tar.gz |
| # | FOO_SITE = http://www.libfoo.org/dist |
| # | $(eval $(call AUTOTARGETS,package,foo)) |
| # |
| ## The following targets can be called from the shell: |
| # |
| # foo, foo-source, foo-patch, foo-configure, foo-build, foo-install, |
| # foo-install-target, foo-install-staging, foo-uninstall, foo-clean, |
| # foo-dirclean |
| # |
| ## The following variables which can be (re)defined in the package makefile: |
| # |
| # FOO_VERSION [mandatory] |
| # version string of the package |
| # FOO_SOURCE [default foo-$(FOO_VERSION).tar.gz] |
| # file name of the package source |
| # FOO_SITE [default sourceforge project "foo"] |
| # URL under wich $(FOO_SOURCE) can be found |
| # FOO_DEPENDENCIES [default empty] |
| # list of (package) targets that must be built before foo |
| # FOO_AUTORECONF [YES/NO, default NO] |
| # run <autoreconf> before <configure> |
| # FOO_LIBTOOL_PATCH [YES/NO, default YES] |
| # Do you want the standard buildroot patch applied to ltmain.sh? (libtool) |
| # FOO_USE_CONFIG_CACHE [YES/NO default $(BR2_CONFIG_CACHE)] |
| # Do you wany to use the central configure cache file? See BR2_CONFIG_CACHE. |
| # FOO_CONF_ENV [default empty] |
| # environment passed to the <configure> script |
| # FOO_CONF_OPT [default empty] |
| # arguments passed to the <configure> script |
| # FOO_MAKE [default $(MAKE)] |
| # command to use to execute <make> |
| # FOO_MAKE_ENV [default empty] |
| # environment passed to all calls to <make> in the package source |
| # directory |
| # FOO_MAKE_OPT [default empty] |
| # arguments passed to <make> while building |
| # FOO_INSTALL_STAGING [YES/NO, default NO] |
| # install the package to the staging directory |
| # FOO_INSTALL_TARGET [YES/NO, default YES] |
| # install the package to the target directory |
| # FOO_INSTALL_STAGING_OPT [default DESTDIR=$(STAGING_DIR) install] |
| # arguments passed to <make> while installing to the staging directory |
| # FOO_INSTALL_TARGET_OPT [default DESTDIR=$(TARGET_DIR) install-exec/install-strip] |
| # arguments passed to <make> while installing to the target directory |
| # FOO_CLEAN_OPT [default clean] |
| # arguments passed to <make> while installing to the staging directory |
| # FOO_UNINSTALL_STAGING_OPT [default DESTDIR=$(STAGING_DIR) uninstall] |
| # arguments passed to <make> while uninstalling from the staging |
| # directory |
| # FOO_UNINSTALL_TARGET_OPT [default DESTDIR=$(TARGET_DIR) uninstall] |
| # arguments passed to <make> while uninstalling from the target |
| # directory |
| # FOO_SUBDIR [default empty] |
| # relative path in the package source from which to run configure and |
| # make |
| # FOO_DIR_PREFIX [default empty] |
| # toplevel relative path to package *.mk file and corresponding patches |
| # |
| ## The following variables contain hook target names |
| ## by default they do nothing, they can be overriden in package makefiles |
| # |
| # FOO_HOOK_POST_EXTRACT, FOO_HOOK_POST_CONFIGURE, |
| # FOO_HOOK_POST_BUILD, FOO_HOOK_POST_INSTALL |
| # |
| ## The following variables contain targets that can be overriden |
| # |
| # FOO_TARGET_INSTALL_TARGET FOO_TARGET_INSTALL_STAGING FOO_TARGET_BUILD |
| # FOO_TARGET_CONFIGURE FOO_TARGET_PATCH FOO_TARGET_EXTRACT FOO_TARGET_SOURCE |
| # FOO_TARGET_UNINSTALL FOO_TARGET_CLEAN FOO_TARGET_DIRCLEAN |
| # |
| # E.g. if your package has a no <configure> script you can place the following |
| # in your package makefile: |
| # |
| # | $(FOO_TARGET_INSTALL): |
| # | touch $@ |
| # |
| ## The following variables are defined automatically and can be used in |
| ## overriden targets: |
| # |
| # PKG |
| # is always the current package name ("foo" in the example) |
| # FOO_DIR |
| # the directory in which the package source is extracted. |
| # the base name will always be foo-$(FOO_VERSION), no matter what the |
| # archive name or the directory-in-archive name are. |
| # MESSAGE |
| # macro that outputs a pretty message to stdout, e.g. use |
| # $(call MESSAGE,"Hello World") |
| # in a target. |
| # |
| # Caveats: |
| # - the 'eval' line (final line in the example) must be placed |
| # after all variable settings, but before all target re-definition |
| # (including hooks) |
| ################################################################################ |
| |
| # UPPERCASE Macro -- transform its argument to uppercase and replace dots and |
| # hyphens to underscores |
| UPPERCASE = $(shell echo $(1) | tr "a-z.-" "A-Z__") |
| |
| # Define extrators for different archive suffixes |
| INFLATE.bz2 = $(BZCAT) |
| INFLATE.gz = $(ZCAT) |
| INFLATE.tbz = $(BZCAT) |
| INFLATE.tgz = $(ZCAT) |
| INFLATE.tar = cat |
| |
| # MESSAGE Macro -- display a message in bold type |
| MESSAGE = @echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(1)$(TERM_RESET)" |
| TERM_BOLD := $(shell tput smso) |
| TERM_RESET := $(shell tput rmso) |
| |
| ################################################################################ |
| # DOWNLOAD -- Download helper. Will try to download source from: |
| # 1) BR2_PRIMARY_SITE if enabled |
| # 2) Download site |
| # 3) BR2_BACKUP_SITE if enabled |
| # |
| # Argument 1 is the source location |
| # Argument 2 is the source filename |
| # |
| # E.G. use like this: |
| # $(call DOWNLOAD,$(FOO_SITE),$(FOO_SOURCE)) |
| ################################################################################ |
| |
| # support make source-check/external-deps |
| ifneq ($(SPIDER),) |
| DOWNLOAD=$(WGET) -P $(DL_DIR) $(1)/$(2) |
| else |
| define DOWNLOAD |
| $(Q)test -e $(DL_DIR)/$(2) || \ |
| for site in $(strip $(subst ",,$(BR2_PRIMARY_SITE))) $(1) $(strip $(subst ",,$(BR2_BACKUP_SITE))); \ |
| do $(WGET) -P $(DL_DIR) $$site/$(2) && exit; done |
| endef |
| endif |
| |
| # Utility programs used to build packages |
| TAR ?= tar |
| #ACLOCAL_STAGING_DIR ?= $(STAGING_DIR)/usr/share/aclocal |
| #ACLOCAL ?= aclocal -I $(ACLOCAL_STAGING_DIR) |
| #AUTORECONF ?= autoreconf -v -i -f -I $(ACLOCAL_STAGING_DIR) |
| # ACLOCAL="$(ACLOCAL)" |
| |
| # Automatically detect tar --strip-path/components option |
| TAR_STRIP_COMPONENTS := $(shell $(TAR) --help | grep strip-path > /dev/null ; if test $$? = 0 ; then echo '--strip-path' ; else echo '--strip-components' ; fi) |
| |
| ################################################################################ |
| # Implicit targets -- produce a stamp file for each step of a package build |
| ################################################################################ |
| |
| # Retrieve and unpack the archive |
| $(BUILD_DIR)/%/.stamp_downloaded: |
| # support make source-check/external-deps |
| ifeq ($(SPIDER),) |
| $(call MESSAGE,"Downloading") |
| endif |
| $(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_SOURCE)) |
| $(if $($(PKG)_PATCH),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_PATCH))) |
| ifeq ($(SPIDER),) |
| $(Q)mkdir -p $(@D) |
| $(Q)touch $@ |
| endif |
| |
| # Retrieve and unpack the archive |
| $(BUILD_DIR)/%/.stamp_extracted: |
| $(call MESSAGE,"Extracting") |
| $(Q)mkdir -p $(@D) |
| $(Q)$(INFLATE$(suffix $($(PKG)_SOURCE))) $(DL_DIR)/$($(PKG)_SOURCE) | \ |
| $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $(@D) $(TAR_OPTIONS) - |
| # some packages have messed up permissions inside |
| $(Q)chmod -R ug+rw $(@D) |
| $(Q)touch $@ |
| |
| # Fix libtool support if required by the package |
| $(BUILD_DIR)/%/.stamp_libtool_patch: |
| $(call MESSAGE,"Patching libtool") |
| # if the package uses libtool, patch it for cross-compiling in buildroot |
| $(Q)if test "$($(PKG)_LIBTOOL_PATCH)" = "YES"; then \ |
| for i in `find $(@D) -name ltmain.sh`; do \ |
| toolchain/patch-kernel.sh $${i%/*} package buildroot-libtool.patch; \ |
| done \ |
| fi |
| $(Q)touch $@ |
| |
| # Patch |
| # XXX: FIXME: This has to be done differently and path-independent, i.e. use |
| # XXX: FIXME: the dir-part of the stem as base-dir (instead of hardcoding |
| # XXX: FIXME: "package/". |
| $(BUILD_DIR)/%/.stamp_patched: NAMEVER = $($(PKG)_NAME)-$($(PKG)_VERSION) |
| $(BUILD_DIR)/%/.stamp_patched: |
| $(call MESSAGE,"Patching $($(PKG)_DIR_PREFIX)/$($(PKG)_NAME)") |
| $(if $($(PKG)_PATCH),toolchain/patch-kernel.sh $(@D) $(DL_DIR) $($(PKG)_PATCH)) |
| $(Q)( \ |
| if test -d $($(PKG)_DIR_PREFIX)/$($(PKG)_NAME); then \ |
| if test "$(wildcard $($(PKG)_DIR_PREFIX)/$($(PKG)_NAME)/$(NAMEVER)*.patch*)"; then \ |
| toolchain/patch-kernel.sh $(@D) $($(PKG)_DIR_PREFIX)/$($(PKG)_NAME) $(NAMEVER)\*.patch $(NAMEVER)\*.patch.$(ARCH) || exit 1; \ |
| else \ |
| toolchain/patch-kernel.sh $(@D) $($(PKG)_DIR_PREFIX)/$($(PKG)_NAME) $($(PKG)_NAME)\*.patch $($(PKG)_NAME)\*.patch.$(ARCH) || exit 1; \ |
| if test -d $($(PKG)_DIR_PREFIX)/$($(PKG)_NAME)/$(NAMEVER); then \ |
| toolchain/patch-kernel.sh $(@D) $($(PKG)_DIR_PREFIX)/$($(PKG)_NAME)/$(NAMEVER) \*.patch \*.patch.$(ARCH) || exit 1; \ |
| fi; \ |
| fi; \ |
| fi; \ |
| ) |
| ifeq ($(BR2_UPDATE_CONFIG),y) |
| $(Q)(for file in config.guess config.sub; do \ |
| for i in $$(find $(@D) -name $$file); do \ |
| cp package/gnuconfig/$$file $$i; \ |
| done; \ |
| done) |
| endif |
| $(Q)touch $@ |
| |
| # Running autoreconf |
| $(BUILD_DIR)/%/.stamp_autoconfigured: |
| $(call MESSAGE,"Running autoreconf") |
| $(Q)cd $(@D)/$($(PKG)_SUBDIR) && $(AUTORECONF) |
| # if the package uses libtool, patch it for cross-compiling in buildroot |
| $(Q)if test "$($(PKG)_LIBTOOL_PATCH)" = "YES"; then \ |
| for i in `find $(@D)/$($(PKG)_SUBDIR) -name ltmain.sh`; do \ |
| toolchain/patch-kernel.sh $${i%/*} package buildroot-libtool.patch; \ |
| done \ |
| fi |
| $(Q)touch $@ |
| |
| # Configuring |
| $(BUILD_DIR)/%/.stamp_configured: |
| $(call MESSAGE,"Configuring") |
| cd $(@D)/$($(PKG)_SUBDIR) && rm -f config.cache && \ |
| $(TARGET_CONFIGURE_OPTS) \ |
| $(TARGET_CONFIGURE_ARGS) \ |
| $(TARGET_CONFIGURE_ENV) \ |
| $($(PKG)_CONF_ENV) \ |
| $(if $(THIS_SRCDIR),$(THIS_SRCDIR)/,./)configure \ |
| $(if $(filter YES,$($(PKG)_USE_CONFIG_CACHE)),--cache-file="$(PROJECT_BUILD_DIR)/tgt-config.cache",) \ |
| --target=$(GNU_TARGET_NAME) \ |
| --host=$(GNU_TARGET_NAME) \ |
| --build=$(GNU_HOST_NAME) \ |
| --prefix=/usr \ |
| --exec-prefix=/usr \ |
| --sysconfdir=/etc \ |
| $(DISABLE_DOCUMENTATION) \ |
| $(DISABLE_NLS) \ |
| $(DISABLE_LARGEFILE) \ |
| $(QUIET) $($(PKG)_CONF_OPT) |
| $(Q)touch $@ |
| |
| # Build |
| $(BUILD_DIR)/%/.stamp_built: |
| $(call MESSAGE,"Building") |
| PATH=$(TARGET_PATH) $($(PKG)_MAKE_ENV) $($(PKG)_MAKE) $($(PKG)_MAKE_OPT) -C $(@D)/$($(PKG)_SUBDIR) |
| $(Q)touch $@ |
| |
| # Install to staging dir |
| $(BUILD_DIR)/%/.stamp_staging_installed: |
| $(call MESSAGE,'Installing to host (staging directory)') |
| $($(PKG)_MAKE_ENV) $($(PKG)_MAKE) $($(PKG)_INSTALL_STAGING_OPT) -C $(@D)/$($(PKG)_SUBDIR) |
| # toolchain/replace.sh $(STAGING_DIR)/usr/lib ".*\.la" "\(['= ]\)/usr" "\\1$(STAGING_DIR)/usr" |
| for i in $$(find $(STAGING_DIR)/usr/lib/ -name "*.la"); do \ |
| cp $$i $$i~; \ |
| $(SED) "s:\(['= ]\)/usr:\\1$(STAGING_DIR)/usr:g" $$i; \ |
| done |
| touch $@ |
| |
| # Install to target dir |
| $(PROJECT_BUILD_DIR)/autotools-stamps/%_target_installed: |
| $(call MESSAGE,"Installing to target") |
| $($(PKG)_MAKE_ENV) $($(PKG)_MAKE) $($(PKG)_INSTALL_TARGET_OPT) -C $($(PKG)_DIR)/$($(PKG)_SUBDIR) |
| $(if $(BR2_HAVE_MANPAGES),,for d in man share/man; do \ |
| rm -rf $(TARGET_DIR)/$$d $(TARGET_DIR)/usr/$$d; \ |
| done) |
| $(if $(BR2_HAVE_INFOPAGES),,for d in info share/info; do \ |
| rm -rf $(TARGET_DIR)/$$d $(TARGET_DIR)/usr/$$d; \ |
| done) |
| $(if $(BR2_HAVE_DOCUMENTATION),,for d in doc share/doc; do \ |
| rm -rf $(TARGET_DIR)/$$d $(TARGET_DIR)/usr/$$d; \ |
| done) |
| touch $@ |
| |
| $(BUILD_DIR)/%/.stamp_cleaned: |
| $(call MESSAGE,"Cleaning up") |
| -$($(PKG)_MAKE_ENV) $($(PKG)_MAKE) $($(PKG)_CLEAN_OPT) -C $(@D)/$($(PKG)_SUBDIR) |
| rm -f $(@D)/.stamp_built |
| |
| $(BUILD_DIR)/%/.stamp_uninstalled: |
| $(call MESSAGE,"Uninstalling") |
| $($(PKG)_MAKE_ENV) $($(PKG)_MAKE) $($(PKG)_UNINSTALL_STAGING_OPT) -C $(@D)/$($(PKG)_SUBDIR) |
| rm -f $(@D)/.stamp_staging_installed |
| $($(PKG)_MAKE_ENV) $($(PKG)_MAKE) $($(PKG)_UNINSTALL_TARGET_OPT) -C $(@D)/$($(PKG)_SUBDIR) |
| rm -f $($(PKG)_TARGET_INSTALL_TARGET) $($(PKG)_HOOK_POST_INSTALL) |
| |
| $(BUILD_DIR)/%/.stamp_dircleaned: |
| rm -Rf $(@D) |
| |
| |
| ################################################################################ |
| # AUTOTARGETS -- the target generator macro; define a set of human-readable |
| # make targets, stamps, and default per-package variables. |
| # Argument 1 is the package directory prefix. |
| # Argument 2 is the (lowercase) package name. |
| ################################################################################ |
| |
| define AUTOTARGETS |
| $(call AUTOTARGETS_INNER,$(2),$(call UPPERCASE,$(2)),$(1)) |
| endef |
| |
| # AUTOTARGETS_INNER -- does the job for AUTOTARGETS; argument 1 is the |
| # lowercase package name, argument 2 the uppercase package name, |
| # argument 3 the package directory prefix |
| define AUTOTARGETS_INNER |
| |
| # define package-specific variables to default values |
| $(2)_NAME = $(1) |
| $(2)_VERSION ?= undefined |
| $(2)_DIR = $$(BUILD_DIR)/$(1)-$$($(2)_VERSION) |
| $(2)_SOURCE ?= $(1)-$$($(2)_VERSION).tar.gz |
| $(2)_SITE ?= \ |
| http://$$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/$(1) |
| $(2)_DEPENDENCIES ?= |
| $(2)_AUTORECONF ?= NO |
| $(2)_LIBTOOL_PATCH ?= YES |
| $(2)_USE_CONFIG_CACHE ?= $(if $(BR2_CONFIG_CACHE),YES,NO) |
| $(2)_CONF_ENV ?= |
| $(2)_CONF_OPT ?= |
| $(2)_MAKE ?= $(MAKE) |
| $(2)_MAKE_ENV ?= |
| $(2)_MAKE_OPT ?= |
| $(2)_INSTALL_STAGING ?= NO |
| $(2)_INSTALL_TARGET ?= YES |
| $(2)_INSTALL_STAGING_OPT ?= DESTDIR=$$(STAGING_DIR) install |
| ifeq ($(BR2_ENABLE_DEBUG),y) |
| $(2)_INSTALL_TARGET_OPT ?= DESTDIR=$$(TARGET_DIR) install-exec |
| else |
| $(2)_INSTALL_TARGET_OPT ?= DESTDIR=$$(TARGET_DIR) install-strip |
| endif |
| $(2)_CLEAN_OPT ?= clean |
| $(2)_UNINSTALL_STAGING_OPT ?= DESTDIR=$$(STAGING_DIR) uninstall |
| $(2)_UNINSTALL_TARGET_OPT ?= DESTDIR=$$(TARGET_DIR) uninstall |
| $(2)_SUBDIR ?= |
| $(2)_DIR_PREFIX = $(if $(3),$(3),$(TOP_SRCDIR)/package) |
| |
| |
| # define sub-target stamps |
| # targets which affect $(TARGET_DIR) must use a unique stamp for each $(PROJECT) |
| $(2)_TARGET_INSTALL_TARGET = $(PROJECT_BUILD_DIR)/autotools-stamps/$(1)_target_installed |
| $(2)_TARGET_INSTALL_STAGING = $$($(2)_DIR)/.stamp_staging_installed |
| $(2)_TARGET_BUILD = $$($(2)_DIR)/.stamp_built |
| $(2)_TARGET_CONFIGURE = $$($(2)_DIR)/.stamp_configured |
| $(2)_TARGET_AUTORECONF = $$($(2)_DIR)/.stamp_autoconfigured |
| $(2)_TARGET_LIBTOOL_PATCH = $$($(2)_DIR)/.stamp_libtool_patch |
| $(2)_TARGET_PATCH = $$($(2)_DIR)/.stamp_patched |
| $(2)_TARGET_EXTRACT = $$($(2)_DIR)/.stamp_extracted |
| $(2)_TARGET_SOURCE = $$($(2)_DIR)/.stamp_downloaded |
| $(2)_TARGET_UNINSTALL = $$($(2)_DIR)/.stamp_uninstalled |
| $(2)_TARGET_CLEAN = $$($(2)_DIR)/.stamp_cleaned |
| $(2)_TARGET_DIRCLEAN = $$($(2)_DIR)/.stamp_dircleaned |
| |
| $(2)_HOOK_POST_EXTRACT = $$($(2)_DIR)/.stamp_hook_post_extract |
| $(2)_HOOK_POST_CONFIGURE = $$($(2)_DIR)/.stamp_hook_post_configure |
| $(2)_HOOK_POST_BUILD = $$($(2)_DIR)/.stamp_hook_post_build |
| $(2)_HOOK_POST_INSTALL = $(PROJECT_BUILD_DIR)/autotools-stamps/$(1)_hook_post_install |
| |
| # human-friendly targets and target sequencing |
| $(1): $(1)-install |
| $(1)-install: $(1)-install-staging $(1)-install-target \ |
| $$($(2)_HOOK_POST_INSTALL) |
| |
| ifeq ($$($(2)_INSTALL_TARGET),YES) |
| $(1)-install-target: $(1)-build $$($(2)_TARGET_INSTALL_TARGET) |
| else |
| $(1)-install-target: |
| endif |
| |
| ifeq ($$($(2)_INSTALL_STAGING),YES) |
| $(1)-install-staging: $(1)-build $$($(2)_TARGET_INSTALL_STAGING) |
| else |
| $(1)-install-staging: |
| endif |
| |
| $(1)-build: $(1)-configure \ |
| $$($(2)_TARGET_BUILD) \ |
| $$($(2)_HOOK_POST_BUILD) |
| |
| $(1)-configure: $(1)-autoreconf \ |
| $$($(2)_TARGET_CONFIGURE) \ |
| $$($(2)_HOOK_POST_CONFIGURE) |
| |
| ifeq ($$($(2)_AUTORECONF),YES) |
| $(1)-autoreconf: $(1)-patch $$($(2)_TARGET_AUTORECONF) |
| $(2)_DEPENDENCIES += host-automake host-autoconf host-libtool |
| else |
| $(1)-autoreconf: $(1)-patch |
| endif |
| |
| $(1)-patch: $(1)-extract $$($(2)_TARGET_PATCH) |
| |
| $(1)-extract: $(1)-depends \ |
| $$($(2)_TARGET_EXTRACT) \ |
| $$($(2)_HOOK_POST_EXTRACT) \ |
| $$($(2)_TARGET_LIBTOOL_PATCH) |
| |
| $(1)-depends: $(1)-source $$($(2)_DEPENDENCIES) |
| |
| $(1)-source: $$($(2)_TARGET_SOURCE) |
| |
| # non-build targets |
| $(1)-uninstall: $(1)-configure $$($(2)_TARGET_UNINSTALL) |
| |
| $(1)-clean: $(1)-uninstall \ |
| $$($(2)_TARGET_CLEAN) |
| |
| $(1)-dirclean: $$($(2)_TARGET_DIRCLEAN) |
| |
| # define the PKG variable for all targets, containing the |
| # uppercase package variable prefix |
| $$($(2)_TARGET_INSTALL_TARGET): PKG=$(2) |
| $$($(2)_TARGET_INSTALL_STAGING): PKG=$(2) |
| $$($(2)_TARGET_BUILD): PKG=$(2) |
| $$($(2)_TARGET_CONFIGURE): PKG=$(2) |
| $$($(2)_TARGET_LIBTOOL_PATCH): PKG=$(2) |
| $$($(2)_TARGET_AUTORECONF): PKG=$(2) |
| $$($(2)_TARGET_PATCH): PKG=$(2) |
| $$($(2)_TARGET_EXTRACT): PKG=$(2) |
| $$($(2)_TARGET_SOURCE): PKG=$(2) |
| $$($(2)_TARGET_UNINSTALL): PKG=$(2) |
| $$($(2)_TARGET_CLEAN): PKG=$(2) |
| $$($(2)_TARGET_DIRCLEAN): PKG=$(2) |
| $$($(2)_HOOK_POST_EXTRACT): PKG=$(2) |
| $$($(2)_HOOK_POST_CONFIGURE): PKG=$(2) |
| $$($(2)_HOOK_POST_BUILD): PKG=$(2) |
| $$($(2)_HOOK_POST_INSTALL): PKG=$(2) |
| |
| # define hook targets |
| # default hook behaviour: do nothing |
| $$($(2)_HOOK_POST_EXTRACT): |
| $$($(2)_HOOK_POST_CONFIGURE): |
| $$($(2)_HOOK_POST_BUILD): |
| $$($(2)_HOOK_POST_INSTALL): |
| |
| # add package to the general list of targets if requested by the buildroot |
| # configuration |
| ifeq ($$(BR2_PACKAGE_$(2)),y) |
| TARGETS += $(1) |
| endif |
| endef |
| |
| # :mode=makefile: |