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