diff --git a/share/mk/bsd.files.mk b/share/mk/bsd.files.mk index 2eac6221406f..a294db10589a 100644 --- a/share/mk/bsd.files.mk +++ b/share/mk/bsd.files.mk @@ -67,7 +67,7 @@ STAGE_AS_${file:T}= ${${group}NAME_${file:T}} STAGE_DIR.${file:T}= ${STAGE_OBJTOP}${${group}DIR_${file:T}} stage_as.${file:T}: ${file} -installfiles-${group}: _${group}INS_${file:T} +installfiles-${group}: installdirs-${group} _${group}INS_${file:T} _${group}INS_${file:T}: ${file} ${INSTALL} ${${group}TAG_ARGS} -o ${${group}OWN_${.ALLSRC:T}} \ -g ${${group}GRP_${.ALLSRC:T}} -m ${${group}MODE_${.ALLSRC:T}} \ @@ -77,10 +77,24 @@ _${group}INS_${file:T}: ${file} _${group}FILES+= ${file} .endif .endfor + + +installdirs-${group}: + @echo installing dirs ${group}DIR ${${group}DIR} +.for dir in ${${group}DIR} +.if defined(NO_ROOT) + ${INSTALL} ${${group}TAG_ARGS} -d ${DESTDIR}${dir} +.else + ${INSTALL} ${${group}TAG_ARGS} -d -o ${DIROWN} -g ${DIRGRP} \ + -m ${DIRMODE} ${DESTDIR}${dir} +.endif +.endfor + + .if !empty(_${group}FILES) stage_files.${group}: ${_${group}FILES} -installfiles-${group}: _${group}INS +installfiles-${group}: installdirs-${group} _${group}INS _${group}INS: ${_${group}FILES} .if defined(${group}NAME) ${INSTALL} ${${group}TAG_ARGS} -o ${${group}OWN} -g ${${group}GRP} \ diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk index fd48256f7941..644e54f1bceb 100644 --- a/share/mk/bsd.own.mk +++ b/share/mk/bsd.own.mk @@ -75,6 +75,13 @@ # CONFMODE Configuration file mode. [644] # # +# DIROWN Directory owner. [root] +# +# DIRGRP Directory group. [wheel] +# +# DIRMODE Directory mode. [755] +# +# # DOCDIR Base path for system documentation (e.g. PSD, USD, # handbook, FAQ etc.). [${SHAREDIR}/doc] # @@ -186,6 +193,10 @@ MANOWN?= ${SHAREOWN} MANGRP?= ${SHAREGRP} MANMODE?= ${NOBINMODE} +DIROWN?= root +DIRGRP?= wheel +DIRMODE?= 755 + DOCDIR?= ${SHAREDIR}/doc DOCOWN?= ${SHAREOWN} DOCGRP?= ${SHAREGRP}