1# 2# Directory permissions management. 3 4.if !target(__<bsd.dirs.mk>__) 5__<bsd.dirs.mk>__: .NOTMAIN 6# List of directory variable names to install. Each variable name's value 7# must be a full path. If non-default permissions are desired, <DIR>_MODE, 8# <DIR>_OWN, and <DIR>_GRP may be specified. 9DIRS?= 10 11. for dir in ${DIRS:O:u} 12. if defined(${dir}) && !empty(${dir}) 13# Set default permissions for a directory 14${dir}_MODE?= 0755 15.if ${MK_INSTALL_AS_USER} == "yes" 16${dir}_OWN?= ${_uid} 17${dir}_GRP?= ${_gid} 18.else 19${dir}_OWN?= root 20${dir}_GRP?= wheel 21.endif 22. if defined(${dir}_FLAGS) && !empty(${dir}_FLAGS) 23${dir}_FLAG= -f ${${dir}_FLAGS} 24. endif 25 26. if defined(NO_ROOT) 27. if !defined(${dir}TAGS) || ! ${${dir}TAGS:Mpackage=*} 28${dir}TAGS+= package=${${dir}PACKAGE:Uutilities} 29. endif 30${dir}TAG_ARGS= -T ${${dir}TAGS:ts,:[*]} 31. endif 32 33installdirs: installdirs-${dir} 34# Coalesce duplicate destdirs 35. if !defined(_uniquedirs_${${dir}}) 36_uniquedirs_${${dir}}= ${dir} 37_alldirs_${dir}= ${dir} 38installdirs-${dir}: .PHONY 39 @${ECHO} installing DIRS ${_alldirs_${dir}} 40 ${INSTALL} ${${dir}TAG_ARGS} -d -m ${${dir}_MODE} -o ${${dir}_OWN} \ 41 -g ${${dir}_GRP} ${${dir}_FLAG} ${DESTDIR}${${dir}} 42. else 43_uniquedir:= ${_uniquedirs_${${dir}}} 44_alldirs_${_uniquedir}+=${dir} 45# Connect to the single target 46installdirs-${dir}: installdirs-${_uniquedir} 47# Validate that duplicate dirs have the same metadata. 48. for v in TAG_ARGS _MODE _OWN _GRP _FLAG 49. if ${${dir}${v}:Uunset} != ${${_uniquedir}${v}:Uunset} 50. warning ${RELDIR}: ${dir}${v} (${${dir}${v}:U}) does not match ${_uniquedir}${v} (${${_uniquedir}${v}:U}) but both install to ${${dir}} 51. endif 52. endfor 53. endif # !defined(_uniquedirs_${${dir}}) 54. endif # defined(${dir}) && !empty(${dir}) 55. endfor 56 57realinstall: installdirs 58 59.endif 60