1#	$NetBSD: bsd.files.mk,v 1.41 2010/02/03 15:34:44 roy Exp $
2
3.if !defined(_BSD_FILES_MK_)
4_BSD_FILES_MK_=1
5
6.include <bsd.init.mk>
7
8.if !target(__fileinstall)
9##### Basic targets
10realinstall:	filesinstall
11realall:	filesbuild
12
13##### Default values
14FILESDIR?=	${BINDIR}
15FILESOWN?=	${BINOWN}
16FILESGRP?=	${BINGRP}
17FILESMODE?=	${NONBINMODE}
18
19##### Build rules
20filesbuild:
21.PHONY:		filesbuild
22
23##### Install rules
24filesinstall::	# ensure existence
25.PHONY:		filesinstall
26
27configfilesinstall:: .PHONY
28
29__fileinstall: .USE
30	${_MKTARGET_INSTALL}
31	${INSTALL_FILE} \
32	    -o ${FILESOWN_${.ALLSRC:T}:U${FILESOWN}} \
33	    -g ${FILESGRP_${.ALLSRC:T}:U${FILESGRP}} \
34	    -m ${FILESMODE_${.ALLSRC:T}:U${FILESMODE}} \
35	    ${SYSPKGTAG} ${.ALLSRC} ${.TARGET}
36
37.endif # !target(__fileinstall)
38
39
40.for F in ${FILES:O:u}
41_FDIR:=		${FILESDIR_${F}:U${FILESDIR}}		# dir override
42_FNAME:=	${FILESNAME_${F}:U${FILESNAME:U${F:T}}}	# name override
43_F:=		${DESTDIR}${_FDIR}/${_FNAME}		# installed path
44_FDOBUILD:=	${FILESBUILD_${F}:U${FILESBUILD:Uno}}
45
46.if ${MKUPDATE} == "no"
47${_F}!		${F} __fileinstall			# install rule
48.if !defined(BUILD) && !make(all) && !make(${F}) && (${_FDOBUILD} == "no")
49${_F}!		.MADE					# no build at install
50.endif
51.else
52${_F}:		${F} __fileinstall			# install rule
53.if !defined(BUILD) && !make(all) && !make(${F}) && (${_FDOBUILD} == "no")
54${_F}:		.MADE					# no build at install
55.endif
56.endif
57
58.if ${_FDOBUILD} != "no"
59filesbuild:	${F}
60CLEANFILES+=	${F}
61.endif
62
63filesinstall::	${_F}
64.PRECIOUS: 	${_F}					# keep if install fails
65.endfor
66
67
68# 
69# CONFIGFILES
70#
71configinstall:	configfilesinstall
72
73.for F in ${CONFIGFILES:O:u}
74_FDIR:=		${FILESDIR_${F}:U${FILESDIR}}		# dir override
75_FNAME:=	${FILESNAME_${F}:U${FILESNAME:U${F:T}}}	# name override
76_F:=		${DESTDIR}${_FDIR}/${_FNAME}		# installed path
77_FDOBUILD:=	${FILESBUILD_${F}:U${FILESBUILD:Uno}}
78
79.if ${MKUPDATE} == "no"
80${_F}!		${F} __fileinstall	# install rule
81.if !defined(BUILD) && !make(all) && !make(${F}) && (${_FDOBUILD} == "no")
82${_F}!		.MADE					# no build at install
83.endif
84.else
85${_F}:		${F} __fileinstall	# install rule
86.if !defined(BUILD) && !make(all) && !make(${F}) && (${_FDOBUILD} == "no")
87${_F}:		.MADE					# no build at install
88.endif
89.endif
90
91.if ${_FDOBUILD} != "no"
92filesbuild:	${F}
93CLEANFILES+=	${F}
94.endif
95
96configfilesinstall::	${_F}
97.PRECIOUS: 	${_F}					# keep if install fails
98.endfor
99
100.undef _FDIR
101.undef _FNAME
102.undef _F
103
104
105#
106# BUILDSYMLINKS
107#
108.if defined(BUILDSYMLINKS)					# {
109
110.for _SL _TL in ${BUILDSYMLINKS}
111BUILDSYMLINKS.s+=	${_SL}
112BUILDSYMLINKS.t+=	${_TL}
113${_TL}: ${_SL}
114	${_MKMSG} "symlink " ${.CURDIR:T}/${.TARGET}
115	rm -f ${.TARGET}
116	ln -s ${.ALLSRC} ${.TARGET}
117.endfor
118
119realall: ${BUILDSYMLINKS.t}
120
121CLEANDIRFILES+= ${BUILDSYMLINKS.t}
122
123.endif								# }
124
125#
126# .uue -> "" handling (i.e. decode a given binary/object)
127#
128# UUDECODE_FILES -	List of files which are stored in the source tree
129#			as <file>.uue and should be uudecoded.
130#
131# UUDECODE_FILES_RENAME_fn - For this file, rename its output to the provided
132#			     name (handled via -p and redirecting stdout)
133
134.if defined(UUDECODE_FILES)					# {
135.SUFFIXES:	.uue
136
137.uue:
138	${_MKTARGET_CREATE}
139	rm -f ${.TARGET} ${.TARGET}.tmp
140	${TOOL_UUDECODE} -p ${.IMPSRC} > ${.TARGET}.tmp \
141	    && mv ${.TARGET}.tmp ${UUDECODE_FILES_RENAME_${.TARGET}:U${.TARGET}}
142
143realall: ${UUDECODE_FILES}
144
145CLEANUUDECODE_FILES=${UUDECODE_FILES} ${UUDECODE_FILES:=.tmp}
146.for i in ${UUDECODE_FILES}
147CLEANUUDECODE_FILES+=${UUDECODE_FILES_RENAME_${i}}
148.endfor
149
150CLEANFILES+= ${CLEANUUDECODE_FILES}
151.endif								# }
152
153##### Pull in related .mk logic
154.include <bsd.obj.mk>
155.include <bsd.sys.mk>
156.include <bsd.clean.mk>
157
158.endif	# !defined(_BSD_FILES_MK_)
159