1 # $NetBSD: bsd.inc.mk,v 1.34 2022/03/29 22:48:04 christos Exp $ 2 3 .include <bsd.init.mk> 4 5 ##### Basic targets 6 includes: ${INCS} incinstall inclinkinstall 7 8 ##### Default values 9 INCSYMLINKS?= 10 11 ##### Install rules 12 incinstall:: # ensure existence 13 .PHONY: incinstall 14 15 __incinstall: .USE 16 @cmp -s ${.ALLSRC} ${.TARGET} > /dev/null 2>&1 || \ 17 (${_MKSHMSG_INSTALL} ${.TARGET}; \ 18 ${_MKSHECHO} "${INSTALL_FILE} -o ${BINOWN} -g ${BINGRP} \ 19 -m ${NONBINMODE} ${.ALLSRC} ${.TARGET}" && \ 20 ${INSTALL_FILE} -o ${BINOWN} -g ${BINGRP} \ 21 -m ${NONBINMODE} ${.ALLSRC} ${.TARGET}) 22 23 .for F in ${INCS:O:u} 24 _FDIR:= ${INCSDIR_${F:C,/,_,g}:U${INCSDIR}} # dir override 25 _FNAME:= ${INCSNAME_${F:C,/,_,g}:U${INCSNAME:U${F}}} # name override 26 _F:= ${DESTDIR}${_FDIR}/${_FNAME} # installed path 27 28 .if ${MKUPDATE} == "no" 29 ${_F}! ${F} __incinstall # install rule 30 .else 31 ${_F}: ${F} __incinstall # install rule 32 .endif 33 34 incinstall:: ${_F} 35 .PRECIOUS: ${_F} # keep if install fails 36 .endfor 37 38 .undef _FDIR 39 .undef _FNAME 40 .undef _F 41 42 inclinkinstall: .PHONY 43 .if !empty(INCSYMLINKS) 44 @(set ${INCSYMLINKS}; \ 45 while test $$# -ge 2; do \ 46 l=$$1; shift; \ 47 t=${DESTDIR}$$1; shift; \ 48 if ttarg=$$(${TOOL_STAT} -qf '%Y' $$t) && \ 49 [ "$$l" = "$$ttarg" ]; then \ 50 continue ; \ 51 fi ; \ 52 ${_MKSHMSG_INSTALL} $$t; \ 53 ${_MKSHECHO} ${INSTALL_SYMLINK} $$l $$t; \ 54 ${INSTALL_SYMLINK} $$l $$t; \ 55 done; ) 56 .endif 57