NetBSD/share/mk/bsd.links.mk

97 lines
2.3 KiB
Makefile

# $NetBSD: bsd.links.mk,v 1.35 2022/03/29 22:48:04 christos Exp $
.include <bsd.init.mk>
##### Basic targets
install: linksinstall
##### Default values
LINKS?=
SYMLINKS?=
LINKSOWN?= ${BINOWN}
LINKSGRP?= ${BINGRP}
LINKSMODE?= ${NONBINMODE}
__linkinstall: .USE
${_MKSHMSG_INSTALL} ${.TARGET}; \
${_MKSHECHO} "${INSTALL_LINK} \
-o ${LINKSOWN_${.ALLSRC:T}:U${LINKSOWN}} \
-g ${LINKSGRP_${.ALLSRC:T}:U${LINKSGRP}} \
-m ${LINKSMODE_${.ALLSRC:T}:U${LINKSMODE}} \
${.ALLSRC} ${.TARGET}" && \
${INSTALL_LINK} \
-o ${LINKSOWN_${.ALLSRC:T}:U${LINKSOWN}} \
-g ${LINKSGRP_${.ALLSRC:T}:U${LINKSGRP}} \
-m ${LINKSMODE_${.ALLSRC:T}:U${LINKSMODE}} \
${.ALLSRC} ${.TARGET}
##### Install rules
.PHONY: linksinstall
linksinstall:: realinstall
.if !empty(SYMLINKS)
@(set ${SYMLINKS}; \
while test $$# -ge 2; do \
l=$$1; shift; \
t=${DESTDIR}$$1; shift; \
if ttarg=$$(${TOOL_STAT} -qf '%Y' $$t) && \
[ "$$l" = "$$ttarg" ]; then \
continue ; \
fi ; \
${_MKSHMSG_INSTALL} $$t; \
${_MKSHECHO} ${INSTALL_SYMLINK} $$l $$t; \
${INSTALL_SYMLINK} $$l $$t; \
done; )
.endif
.for _src _dst in ${LINKS}
_l:=${DESTDIR}${_src}
_t:=${DESTDIR}${_dst}
# Handle case conflicts carefully, when _dst occurs
# more than once after case flattening
.if ${MKUPDATE} == "no" || ${LINKS:tl:M${_dst:tl:Q}:[\#]} > 1
${_t}! ${_l} __linkinstall
.else
${_t}: ${_l} __linkinstall
.endif
linksinstall:: ${_t}
.PRECIOUS: ${_t}
.endfor
configinstall: configlinksinstall
.PHONY: configlinksinstall
configlinksinstall:: configfilesinstall
.if !empty(CONFIGSYMLINKS)
@(set ${CONFIGSYMLINKS}; \
while test $$# -ge 2; do \
l=$$1; shift; \
t=${DESTDIR}$$1; shift; \
if ttarg=$$(${TOOL_STAT} -qf '%Y' $$t) && \
[ "$$l" = "$$ttarg" ]; then \
continue ; \
fi ; \
${_MKSHMSG_INSTALL} $$t; \
${_MKSHECHO} ${INSTALL_SYMLINK} $$l $$t; \
${INSTALL_SYMLINK} $$l $$t; \
done; )
.endif
.for _src _dst in ${CONFIGLINKS}
_l:=${DESTDIR}${_src}
_t:=${DESTDIR}${_dst}
# Handle case conflicts carefully, when _dst occurs
# more than once after case flattening
.if ${MKUPDATE} == "no" || ${CONFIGLINKS:tl:M${_dst:tl:Q}:[\#]} > 1
${_t}! ${_l} __linkinstall
.else
${_t}: ${_l} __linkinstall
.endif
configlinksinstall:: ${_t}
.PRECIOUS: ${_t}
.endfor
.include <bsd.sys.mk>