In jobs mode we can use .ORDER to force stage_links to run after other

stage_* targets.
In non-jobs mode we can achieve the same result by simply introducing
the targets in the correct order.
Thus in bsd*.mk we simply add targets to STAGE_TARGETS which we
realize in meta.stage.mk

Reviewed by: bdrewery
This commit is contained in:
Simon J. Gerraty 2015-10-07 00:24:27 +00:00
parent 56160b2e67
commit eef72759b5
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=288964
5 changed files with 24 additions and 21 deletions

View File

@ -91,9 +91,9 @@ realinstall: installincludes
.if ${MK_STAGING} != "no" && !defined(_SKIP_BUILD)
.if !defined(NO_STAGE_INCLUDES)
staging: stage_includes
STAGE_TARGETS+= stage_includes
.if !empty(INCSLINKS)
staging: stage_symlinks
STAGE_TARGETS+= stage_symlinks
STAGE_SYMLINKS.INCS= ${INCSLINKS}
.endif
.endif

View File

@ -128,7 +128,7 @@ ZEXT= ${MCOMPRESS_EXT}
.if defined(MAN) && !empty(MAN)
.if ${MK_STAGING_MAN} == "yes"
staging: stage_files
STAGE_TARGETS+= stage_files
_mansets:= ${MAN:E:O:u:M*[1-9]:@s@man$s@}
STAGE_SETS+= ${_mansets}
.for _page in ${MAN}
@ -137,7 +137,7 @@ STAGE_DIR.man${_page:T:E}?= ${STAGE_OBJTOP}${MANDIR}${_page:T:E}${MANSUBDIR}
.endfor
.if !empty(MLINKS)
STAGE_SETS+= mlinks
staging: stage_links
STAGE_TARGETS+= stage_links
STAGE_LINKS.mlinks:= ${MLINKS:@f@${f:S,^,${MANDIR}${f:E}${MANSUBDIR}/,}@}
stage_links.mlinks: ${_mansets:@s@stage_files.$s@}
.endif

View File

@ -63,7 +63,7 @@ NLSDIR?= ${SHAREDIR}/nls
#
.if ${MK_STAGING_PROG} == "yes"
.if !defined(_SKIP_BUILD)
staging: stage_symlinks
STAGE_TARGETS+= stage_symlinks
.endif
STAGE_SYMLINKS.NLS= ${NLSSYMLINKS}
STAGE_SYMLINKS_DIR.NLS= ${STAGE_OBJTOP}

View File

@ -205,7 +205,7 @@ stage_as.prog: ${PROG}
.else
STAGE_SETS+= prog
stage_files.prog: ${PROG}
staging: stage_files
STAGE_TARGETS+= stage_files
.endif
.endif
.endif
@ -251,18 +251,18 @@ beforebuild: stage_includes
.for t in stage_libs stage_files stage_as
.if target($t)
staging: $t
STAGE_TARGETS+= $t
.endif
.endfor
.if !empty(STAGE_AS_SETS)
staging: stage_as
STAGE_TARGETS+= stage_as
.endif
.if !empty(_LIBS) || ${MK_STAGING_PROG} != "no"
.if !empty(LINKS)
staging: stage_links
STAGE_TARGETS+= stage_links
.if ${MAKE_VERSION} < 20131001
stage_links.links: ${_LIBS} ${PROG}
.endif
@ -271,7 +271,7 @@ STAGE_LINKS.links= ${LINKS}
.endif
.if !empty(SYMLINKS)
staging: stage_symlinks
STAGE_TARGETS+= stage_symlinks
STAGE_SETS+= links
STAGE_SYMLINKS.links= ${SYMLINKS}
.endif

View File

@ -24,6 +24,8 @@ _dirdep = ${RELDIR}.${MACHINE}
_dirdep = ${RELDIR}
.endif
CLEANFILES+= .dirdep
# this allows us to trace dependencies back to their src dir
.dirdep:
@echo '${_dirdep}' > $@
@ -134,7 +136,7 @@ _STAGE_AS_BASENAME_USE: .USE ${.TARGET:T}
.if !empty(STAGE_INCSDIR)
STAGE_TARGETS += stage_incs
STAGE_INCS ?= ${.ALLSRC:N.dirdep}
STAGE_INCS ?= ${.ALLSRC:N.dirdep:Nstage_*}
stage_includes: stage_incs
stage_incs: .dirdep
@ -145,7 +147,7 @@ stage_incs: .dirdep
.if !empty(STAGE_LIBDIR)
STAGE_TARGETS += stage_libs
STAGE_LIBS ?= ${.ALLSRC:N.dirdep}
STAGE_LIBS ?= ${.ALLSRC:N.dirdep:Nstage_*}
stage_libs: .dirdep
@${STAGE_FILE_SCRIPT}; StageFiles ${STAGE_LIBDIR:${STAGE_DIR_FILTER}} ${STAGE_LIBS}
@ -177,8 +179,8 @@ CLEANFILES += ${STAGE_SETS:@s@stage*$s@}
# some makefiles need to populate multiple directories
.for s in ${STAGE_SETS:O:u}
STAGE_FILES.$s ?= ${.ALLSRC:N.dirdep}
STAGE_SYMLINKS.$s ?= ${.ALLSRC:N.dirdep}
STAGE_FILES.$s ?= ${.ALLSRC:N.dirdep:Nstage_*}
STAGE_SYMLINKS.$s ?= ${.ALLSRC:N.dirdep:Nstage_*}
STAGE_LINKS_DIR.$s ?= ${STAGE_OBJTOP}
STAGE_SYMLINKS_DIR.$s ?= ${STAGE_OBJTOP}
@ -224,7 +226,7 @@ STAGE_TARGETS += stage_as
# each ${file} will be staged as ${STAGE_AS_${file:T}}
# one could achieve the same with SYMLINKS
.for s in ${STAGE_AS_SETS:O:u}
STAGE_AS.$s ?= ${.ALLSRC:N.dirdep}
STAGE_AS.$s ?= ${.ALLSRC:N.dirdep:Nstage_*}
stage_as: stage_as.$s
stage_as.$s: .dirdep
@ -237,15 +239,16 @@ stage_as.$s: .dirdep
CLEANFILES += ${STAGE_TARGETS} stage_incs stage_includes
# stage_*links usually needs to follow any others.
.if !empty(STAGE_SETS) && !empty(STAGE_TARGETS:Nstage_links)
.for s in ${STAGE_SETS:O:u}
stage_links.$s: ${STAGE_TARGETS:Nstage_links:O:u}
# for non-jobs mode the order here matters
staging: ${STAGE_TARGETS:N*_links} ${STAGE_TARGETS:M*_links}
.if ${.MAKE.JOBS:U0} > 0 && ${STAGE_TARGETS:M*_links} != ""
# the above isn't sufficient
.for t in ${STAGE_TARGETS:N*links:O:u}
.ORDER: $t stage_links
.endfor
.endif
# make sure this exists
staging:
# generally we want staging to wait until everything else is done
STAGING_WAIT ?= .WAIT