xref: /netbsd-src/share/mk/bsd.links.mk (revision 267197ec1eebfcb9810ea27a89625b6ddf68e3e7)
1#	$NetBSD: bsd.links.mk,v 1.32 2006/09/11 22:24:09 dbj Exp $
2
3.include <bsd.init.mk>
4
5##### Basic targets
6install:	linksinstall
7
8##### Default values
9LINKS?=
10SYMLINKS?=
11
12__linkinstall: .USE
13	${_MKSHMSG_INSTALL} ${.TARGET}; \
14	${_MKSHECHO} "${INSTALL_LINK} ${.ALLSRC} ${.TARGET}" && \
15	${INSTALL_LINK} ${.ALLSRC} ${.TARGET}
16
17##### Install rules
18.PHONY:		linksinstall
19linksinstall::	realinstall
20.if !empty(SYMLINKS)
21	@(set ${SYMLINKS}; \
22	 while test $$# -ge 2; do \
23		l=$$1; shift; \
24		t=${DESTDIR}$$1; shift; \
25		if  ttarg=`${TOOL_STAT} -qf '%Y' $$t` && \
26		    [ "$$l" = "$$ttarg" ]; then \
27			continue ; \
28		fi ; \
29		${_MKSHMSG_INSTALL} $$t; \
30		${_MKSHECHO} ${INSTALL_SYMLINK} $$l $$t; \
31		${INSTALL_SYMLINK} $$l $$t; \
32	 done; )
33.endif
34
35.for _src _dst in ${LINKS}
36_l:=${DESTDIR}${_src}
37_t:=${DESTDIR}${_dst}
38
39# Handle case conflicts carefully, when _dst occurs
40# more than once after case flattening
41.if ${MKUPDATE} == "no" || ${LINKS:tl:M${_dst:tl:Q}:[\#]} > 1
42${_t}!		${_l} __linkinstall
43.else
44${_t}:		${_l} __linkinstall
45.endif
46
47linksinstall::	${_t}
48.PRECIOUS:	${_t}
49.endfor
50
51configinstall:		configlinksinstall
52.PHONY:			configlinksinstall
53configlinksinstall::	configfilesinstall
54.if defined(CONFIGSYMLINKS)
55	@(set ${CONFIGSYMLINKS}; \
56	 while test $$# -ge 2; do \
57		l=$$1; shift; \
58		t=${DESTDIR}$$1; shift; \
59		if  ttarg=`${TOOL_STAT} -qf '%Y' $$t` && \
60		    [ "$$l" = "$$ttarg" ]; then \
61			continue ; \
62		fi ; \
63		${_MKSHMSG_INSTALL} $$t; \
64		${_MKSHECHO} ${INSTALL_SYMLINK} $$l $$t; \
65		${INSTALL_SYMLINK} $$l $$t; \
66	 done; )
67.endif
68
69.for _src _dst in ${CONFIGLINKS}
70_l:=${DESTDIR}${_src}
71_t:=${DESTDIR}${_dst}
72
73# Handle case conflicts carefully, when _dst occurs
74# more than once after case flattening
75.if ${MKUPDATE} == "no" || ${CONFIGLINKS:tl:M${_dst:tl:Q}:[\#]} > 1
76${_t}!		${_l} __linkinstall
77.else
78${_t}:		${_l} __linkinstall
79.endif
80
81configlinksinstall::	${_t}
82.PRECIOUS:	${_t}
83.endfor
84
85.include <bsd.sys.mk>
86