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