Index: Mk/bsd.port.mk =================================================================== --- Mk/bsd.port.mk +++ Mk/bsd.port.mk @@ -3878,8 +3878,9 @@ @cd ${.CURDIR} && ${SETENV} FLAVOR=${_f} ${MAKE} post-clean .endif .ORDER: ${CLEAN_DEPENDENCIES} -clean: ${CLEAN_DEPENDENCIES} +clean-real: ${CLEAN_DEPENDENCIES} .endfor +PORTS_ENV_EXEC_TARGETS+= clean .endif .if !target(distclean) @@ -4771,6 +4772,15 @@ dp_SCRIPTSDIR="${SCRIPTSDIR}" \ ${SH} ${SCRIPTSDIR}/ports_env_exec.sh +# Targets that should be wrapped in ports_env_exec.sh so they pay the cost +# of variabe executions only once rather than for each sub-make they invoke. +.for tgt in ${PORTS_ENV_EXEC_TARGETS} +.if !target(${tgt}) +${tgt}: .PHONY + @cd ${.CURDIR} && ${PORTS_ENV_EXEC} ${MAKE} ${.TARGET}-real +.endif +.endfor + .if !target(pre-check-config) pre-check-config: _CHECK_OPTIONS_NAMES= OPTIONS_DEFINE OPTIONS_GROUP OPTIONS_MULTI \