1# $NetBSD: bsd.files.mk,v 1.43 2013/04/06 15:39:19 uebayasi 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} 140 ${TOOL_UUDECODE} -p ${.IMPSRC} > ${.TARGET} 141 142.if defined(UUDECODE_FILES_RENAME_${UUDECODE_FILES}) 143${UUDECODE_FILES_RENAME_${UUDECODE_FILES}}: ${UUDECODE_FILES} 144 cp ${.ALLSRC} ${.TARGET} 145.endif 146 147realall: ${UUDECODE_FILES} 148 149CLEANUUDECODE_FILES=${UUDECODE_FILES} 150.for i in ${UUDECODE_FILES} 151CLEANUUDECODE_FILES+=${UUDECODE_FILES_RENAME_${i}} 152.endfor 153 154CLEANFILES+= ${CLEANUUDECODE_FILES} 155.endif # } 156 157##### Pull in related .mk logic 158.include <bsd.obj.mk> 159.include <bsd.sys.mk> 160.include <bsd.clean.mk> 161 162.endif # !defined(_BSD_FILES_MK_) 163