86 lines
2.8 KiB
Makefile
86 lines
2.8 KiB
Makefile
# $NetBSD: bsd.pkg.barrier.mk,v 1.16 2008/02/07 21:36:13 rillig Exp $
|
|
|
|
_COOKIE.barrier= ${WRKDIR}/.barrier_cookie
|
|
|
|
# _BARRIER_PRE_TARGETS is a list of the targets that must be built before
|
|
# the "barrier" target invokes a new make.
|
|
#
|
|
_BARRIER_PRE_TARGETS= checksum-phase makedirs depends
|
|
|
|
# _BARRIER_POST_TARGETS is a list of the targets that must be built after
|
|
# the "barrier" target invokes a new make. This list is specially
|
|
# ordered so that if more than one is specified on the command-line,
|
|
# then pkgsrc will still do the right thing.
|
|
#
|
|
|
|
# FIXME: why is wrapper before extract?
|
|
_BARRIER_POST_TARGETS= tools
|
|
_BARRIER_POST_TARGETS+= wrapper
|
|
_BARRIER_POST_TARGETS+= extract
|
|
_BARRIER_POST_TARGETS+= patch
|
|
_BARRIER_POST_TARGETS+= configure
|
|
_BARRIER_POST_TARGETS+= build build-env
|
|
_BARRIER_POST_TARGETS+= test
|
|
_BARRIER_POST_TARGETS+= all
|
|
_BARRIER_POST_TARGETS+= install
|
|
_BARRIER_POST_TARGETS+= reinstall
|
|
_BARRIER_POST_TARGETS+= replace
|
|
_BARRIER_POST_TARGETS+= package
|
|
_BARRIER_POST_TARGETS+= repackage
|
|
_BARRIER_POST_TARGETS+= package-install
|
|
|
|
.for _target_ in ${_BARRIER_POST_TARGETS}
|
|
. if make(${_target_})
|
|
_BARRIER_CMDLINE_TARGETS+= ${_target_}
|
|
. endif
|
|
.endfor
|
|
|
|
######################################################################
|
|
### barrier (PRIVATE)
|
|
######################################################################
|
|
### barrier is a helper target that can be used to separate targets
|
|
### that should be built in a new make process from being built in
|
|
### the current one. The targets that must be built after the "barrier"
|
|
### target invokes a new make should be listed in _BARRIER_POST_TARGETS,
|
|
### and should be of the form:
|
|
###
|
|
### .if !defined(_PKGSRC_BARRIER)
|
|
### foo: barrier
|
|
### .else
|
|
### foo: foo's real source dependencies
|
|
### .endif
|
|
###
|
|
### Note that none of foo's real source dependencies should include
|
|
### targets that occur before the barrier.
|
|
###
|
|
|
|
.PHONY: barrier-error-check
|
|
barrier-error-check: error-check
|
|
|
|
.PHONY: barrier
|
|
barrier: ${_BARRIER_PRE_TARGETS} ${_COOKIE.barrier}
|
|
.if !defined(_PKGSRC_BARRIER)
|
|
. if defined(PKG_VERBOSE)
|
|
@${PHASE_MSG} "Invoking \`\`"${_BARRIER_CMDLINE_TARGETS:Q}"'' after barrier for ${PKGNAME}"
|
|
. endif
|
|
${RUN} \
|
|
cd ${.CURDIR} \
|
|
&& ${RECURSIVE_MAKE} ${MAKEFLAGS} _PKGSRC_BARRIER=yes ALLOW_VULNERABLE_PACKAGES= ${_BARRIER_CMDLINE_TARGETS} \
|
|
|| { \
|
|
exitcode="$$?"; \
|
|
${RECURSIVE_MAKE} ${MAKEFLAGS} _PKGSRC_BARRIER=yes barrier-error-check; \
|
|
exit "$$exitcode"; \
|
|
}
|
|
. if defined(PKG_VERBOSE)
|
|
@${PHASE_MSG} "Leaving \`\`"${_BARRIER_CMDLINE_TARGETS:Q}"'' after barrier for ${PKGNAME}"
|
|
. endif
|
|
.endif
|
|
|
|
######################################################################
|
|
### barrier-cookie (PRIVATE)
|
|
######################################################################
|
|
### barrier-cookie creates the "barrier" cookie file.
|
|
###
|
|
${_COOKIE.barrier}:
|
|
${RUN}${MKDIR} ${.TARGET:H}
|
|
${RUN}${ECHO} ${PKGNAME} > ${.TARGET}
|