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