Home | History | Annotate | Line # | Download | only in mk
      1 #	$NetBSD: bsd.links.mk,v 1.35 2022/03/29 22:48:04 christos Exp $
      2 
      3 .include <bsd.init.mk>
      4 
      5 ##### Basic targets
      6 install:	linksinstall
      7 
      8 ##### Default values
      9 LINKS?=
     10 SYMLINKS?=
     11 LINKSOWN?=	${BINOWN}
     12 LINKSGRP?=	${BINGRP}
     13 LINKSMODE?=	${NONBINMODE}
     14 
     15 __linkinstall: .USE
     16 	${_MKSHMSG_INSTALL} ${.TARGET}; \
     17 	${_MKSHECHO} "${INSTALL_LINK} \
     18 	    -o ${LINKSOWN_${.ALLSRC:T}:U${LINKSOWN}} \
     19 	    -g ${LINKSGRP_${.ALLSRC:T}:U${LINKSGRP}} \
     20 	    -m ${LINKSMODE_${.ALLSRC:T}:U${LINKSMODE}} \
     21 	    ${.ALLSRC} ${.TARGET}" && \
     22 	${INSTALL_LINK} \
     23 	    -o ${LINKSOWN_${.ALLSRC:T}:U${LINKSOWN}} \
     24 	    -g ${LINKSGRP_${.ALLSRC:T}:U${LINKSGRP}} \
     25 	    -m ${LINKSMODE_${.ALLSRC:T}:U${LINKSMODE}} \
     26 	    ${.ALLSRC} ${.TARGET}
     27 
     28 ##### Install rules
     29 .PHONY:		linksinstall
     30 linksinstall::	realinstall
     31 .if !empty(SYMLINKS)
     32 	@(set ${SYMLINKS}; \
     33 	 while test $$# -ge 2; do \
     34 		l=$$1; shift; \
     35 		t=${DESTDIR}$$1; shift; \
     36 		if  ttarg=$$(${TOOL_STAT} -qf '%Y' $$t) && \
     37 		    [ "$$l" = "$$ttarg" ]; then \
     38 			continue ; \
     39 		fi ; \
     40 		${_MKSHMSG_INSTALL} $$t; \
     41 		${_MKSHECHO} ${INSTALL_SYMLINK} $$l $$t; \
     42 		${INSTALL_SYMLINK} $$l $$t; \
     43 	 done; )
     44 .endif
     45 
     46 .for _src _dst in ${LINKS}
     47 _l:=${DESTDIR}${_src}
     48 _t:=${DESTDIR}${_dst}
     49 
     50 # Handle case conflicts carefully, when _dst occurs
     51 # more than once after case flattening
     52 .if ${MKUPDATE} == "no" || ${LINKS:tl:M${_dst:tl:Q}:[\#]} > 1
     53 ${_t}!		${_l} __linkinstall
     54 .else
     55 ${_t}:		${_l} __linkinstall
     56 .endif
     57 
     58 linksinstall::	${_t}
     59 .PRECIOUS:	${_t}
     60 .endfor
     61 
     62 configinstall:		configlinksinstall
     63 .PHONY:			configlinksinstall
     64 configlinksinstall::	configfilesinstall
     65 .if !empty(CONFIGSYMLINKS)
     66 	@(set ${CONFIGSYMLINKS}; \
     67 	 while test $$# -ge 2; do \
     68 		l=$$1; shift; \
     69 		t=${DESTDIR}$$1; shift; \
     70 		if  ttarg=$$(${TOOL_STAT} -qf '%Y' $$t) && \
     71 		    [ "$$l" = "$$ttarg" ]; then \
     72 			continue ; \
     73 		fi ; \
     74 		${_MKSHMSG_INSTALL} $$t; \
     75 		${_MKSHECHO} ${INSTALL_SYMLINK} $$l $$t; \
     76 		${INSTALL_SYMLINK} $$l $$t; \
     77 	 done; )
     78 .endif
     79 
     80 .for _src _dst in ${CONFIGLINKS}
     81 _l:=${DESTDIR}${_src}
     82 _t:=${DESTDIR}${_dst}
     83 
     84 # Handle case conflicts carefully, when _dst occurs
     85 # more than once after case flattening
     86 .if ${MKUPDATE} == "no" || ${CONFIGLINKS:tl:M${_dst:tl:Q}:[\#]} > 1
     87 ${_t}!		${_l} __linkinstall
     88 .else
     89 ${_t}:		${_l} __linkinstall
     90 .endif
     91 
     92 configlinksinstall::	${_t}
     93 .PRECIOUS:	${_t}
     94 .endfor
     95 
     96 .include <bsd.sys.mk>
     97