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