Home | History | Annotate | Line # | Download | only in mk
      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
     10 realinstall:	filesinstall
     11 realall:	filesbuild
     12 
     13 ##### Default values
     14 FILESDIR?=	${BINDIR}
     15 FILESOWN?=	${BINOWN}
     16 FILESGRP?=	${BINGRP}
     17 FILESMODE?=	${NONBINMODE}
     18 
     19 ##### Build rules
     20 filesbuild:
     21 .PHONY:		filesbuild
     22 
     23 ##### Install rules
     24 filesinstall::	# ensure existence
     25 .PHONY:		filesinstall
     26 
     27 configfilesinstall:: .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"
     59 filesbuild:	${F}
     60 CLEANFILES+=	${F}
     61 .endif
     62 
     63 filesinstall::	${_F}
     64 .PRECIOUS: 	${_F}					# keep if install fails
     65 .endfor
     66 
     67 
     68 # 
     69 # CONFIGFILES
     70 #
     71 configinstall:	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"
     92 filesbuild:	${F}
     93 CLEANFILES+=	${F}
     94 .endif
     95 
     96 configfilesinstall::	${_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}
    111 BUILDSYMLINKS.s+=	${_SL}
    112 BUILDSYMLINKS.t+=	${_TL}
    113 ${_TL}: ${_SL}
    114 	${_MKMSG} "symlink " ${.CURDIR:T}/${.TARGET}
    115 	rm -f ${.TARGET}
    116 	ln -s ${.ALLSRC} ${.TARGET}
    117 .endfor
    118 
    119 realall: ${BUILDSYMLINKS.t}
    120 
    121 CLEANDIRFILES+= ${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 
    147 realall: ${UUDECODE_FILES}
    148 
    149 CLEANUUDECODE_FILES=${UUDECODE_FILES}
    150 .for i in ${UUDECODE_FILES}
    151 CLEANUUDECODE_FILES+=${UUDECODE_FILES_RENAME_${i}}
    152 .endfor
    153 
    154 CLEANFILES+= ${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