When "bmake clean depends" was called for a package where the various cookie files already existed, these would enable different rules than a clean package directory. Since "bmake clean" deletes all the cookie files before "bmake depends" starts, in these combined command lines the cookie files must be treated as absent.
140 lines
4.4 KiB
Makefile
140 lines
4.4 KiB
Makefile
# $NetBSD: bsd.depends.mk,v 1.30 2019/05/07 19:36:44 rillig Exp $
|
|
#
|
|
# This Makefile fragment is included by bsd.pkg.mk and provides all
|
|
# variables and targets related to dependencies.
|
|
#
|
|
# The following are the "public" targets provided by this module:
|
|
#
|
|
# depends, bootstrap-depends, install-depends, show-depends
|
|
#
|
|
# The following variables may be set in a package Makefile:
|
|
#
|
|
# DEPENDS
|
|
# List of dependencies of the form "pattern:dir" needed by the
|
|
# package at run-time.
|
|
#
|
|
# BUILD_DEPENDS
|
|
# List of build dependencies of the form "pattern:dir" needed by the
|
|
# package at build-time. When cross-compiling, build dependencies
|
|
# are `target' packages, i.e. architecture for which the package is
|
|
# built.
|
|
#
|
|
# TEST_DEPENDS
|
|
# List of test dependencies of the form "pattern:dir" needed by the
|
|
# package at test-time. When cross-compiling, test dependencies
|
|
# are `native' packages, i.e. architecture where the package is
|
|
# built.
|
|
#
|
|
# TOOL_DEPENDS
|
|
# List of tool dependencies of the form "pattern:dir" needed by the
|
|
# package at build-time. When cross-compiling, tool dependencies
|
|
# are `native' packages, i.e. architecture where the package is
|
|
# built.
|
|
#
|
|
# The following variables may be set by the pkgsrc user:
|
|
#
|
|
# SKIP_DEPENDS
|
|
# Whether to run the ``depends'' phase. This is probably only
|
|
# useful for pkgsrc developers.
|
|
#
|
|
# Default value: no
|
|
#
|
|
# Keywords: depends dependencies
|
|
|
|
SKIP_DEPENDS?= no
|
|
|
|
# DEPENDS_TARGET is the target that is invoked to satisfy missing
|
|
# dependencies. This variable is user-settable in /etc/mk.conf.
|
|
#
|
|
.if !defined(DEPENDS_TARGET)
|
|
. if make(update)
|
|
. if defined(UPDATE_TARGET) && (${UPDATE_TARGET} == "replace")
|
|
DEPENDS_TARGET= ${UPDATE_TARGET}
|
|
. else
|
|
DEPENDS_TARGET= update
|
|
. endif
|
|
. elif make(bin-install) || make(su-bin-install)
|
|
DEPENDS_TARGET= bin-install
|
|
. elif make(package) || make(package-install)
|
|
DEPENDS_TARGET= package-install
|
|
. else
|
|
DEPENDS_TARGET= reinstall
|
|
. endif
|
|
.endif
|
|
|
|
######################################################################
|
|
### depends (PUBLIC)
|
|
######################################################################
|
|
### depends is a public target to install missing dependencies for
|
|
### the package.
|
|
###
|
|
.PHONY: depends
|
|
.if ${SKIP_DEPENDS:M[Nn][Oo]} != ""
|
|
. include "depends.mk"
|
|
.elif !target(depends)
|
|
. if exists(${_COOKIE.depends}) && !${_CLEANING}
|
|
depends:
|
|
@${DO_NADA}
|
|
. else
|
|
depends: depends-cookie
|
|
. endif
|
|
.endif
|
|
|
|
######################################################################
|
|
### bootstrap-depends (PUBLIC, OVERRIDE)
|
|
######################################################################
|
|
### bootstrap-depends is a public target to install any missing
|
|
### dependencies needed during stages before the normal "depends"
|
|
### stage. These dependencies are listed in BOOTSTRAP_DEPENDS.
|
|
###
|
|
.PHONY: bootstrap-depends
|
|
.if !target(bootstrap-depends)
|
|
bootstrap-depends:
|
|
@${DO_NADA}
|
|
.endif
|
|
|
|
######################################################################
|
|
### install-depends (PUBLIC)
|
|
######################################################################
|
|
### install-depends is a convenience target that installs all dependencies
|
|
### and removes the cookie file afterwards, so that the state of the
|
|
### filesystem remains unchanged.
|
|
###
|
|
### XXX This target is probably not needed and might be removed.
|
|
###
|
|
.PHONY: install-depends
|
|
install-depends: depends depends-clean
|
|
|
|
######################################################################
|
|
### depends-clean (PRIVATE)
|
|
######################################################################
|
|
### depends-clean removes the state files associated with the "depends"
|
|
### target so that "depends" may be re-invoked.
|
|
###
|
|
depends-clean:
|
|
${RUN}${RM} -f ${_COOKIE.depends}
|
|
${RUN} \
|
|
${RMDIR} -p ${_COOKIE.depends:H} 2>/dev/null || ${TRUE}
|
|
|
|
######################################################################
|
|
### depends-cookie (PRIVATE, override)
|
|
######################################################################
|
|
### depends-cookie creates the depends "cookie" state file. This should
|
|
### be overridden per package system format.
|
|
###
|
|
.PHONY: depends-cookie
|
|
depends-cookie:
|
|
${RUN}${TEST} ! -f ${_COOKIE.depends} || ${FALSE}
|
|
${RUN}${MKDIR} ${_COOKIE.depends:H}
|
|
${RUN}${TOUCH} ${TOUCH_ARGS} ${_COOKIE.depends}
|
|
|
|
# show-depends:
|
|
# Prints a list of dependencies.
|
|
#
|
|
# Command line variables:
|
|
#
|
|
# VARNAME
|
|
# DEPENDS, BUILD_DEPENDS, TEST_DEPENDS, or TOOL_DEPENDS.
|
|
#
|
|
# Keywords: depends dependencies
|
|
show-depends: .PHONY _pkgformat-show-depends
|