12a7a79295
When FILES is defined in a Makefile that _also_ includes bsd.subdir.mk, the build of the files (if any) was not properly triggered during the build stage. This was because bsd.files.mk did not define the buildfiles target if it was already defined... and bsd.subdir.mk defined this target on its own, thus causing a conflict. Fix this by unconditionally defining buildfiles from bsd.files.mk; this is safe because nothing else in the tree needs to redefine this and because the target itself contains no commands: all it does is define dependencies. Also ensure that bsd.files.mk is always pulled in by bsd.test.mk regardless of what bsd.prog.mk does. These fixes allow "make installworld" to run cleanly on a system with read-only src and obj trees. This is "make tinderbox" clean. Reviewed by: imp Obtained from: jilles
71 lines
1.8 KiB
Makefile
71 lines
1.8 KiB
Makefile
# $FreeBSD$
|
|
|
|
.if !target(__<bsd.init.mk>__)
|
|
.error bsd.files.mk cannot be included directly.
|
|
.endif
|
|
|
|
.if !target(__<bsd.files.mk>__)
|
|
__<bsd.files.mk>__:
|
|
|
|
FILESGROUPS?= FILES
|
|
|
|
.for group in ${FILESGROUPS}
|
|
buildfiles: ${${group}}
|
|
.endfor
|
|
|
|
all: buildfiles
|
|
|
|
.for group in ${FILESGROUPS}
|
|
.if defined(${group}) && !empty(${group})
|
|
installfiles: installfiles-${group}
|
|
|
|
${group}OWN?= ${SHAREOWN}
|
|
${group}GRP?= ${SHAREGRP}
|
|
${group}MODE?= ${SHAREMODE}
|
|
${group}DIR?= ${BINDIR}
|
|
|
|
_${group}FILES=
|
|
.for file in ${${group}}
|
|
.if defined(${group}OWN_${file:T}) || defined(${group}GRP_${file:T}) || \
|
|
defined(${group}MODE_${file:T}) || defined(${group}DIR_${file:T}) || \
|
|
defined(${group}NAME_${file:T})
|
|
${group}OWN_${file:T}?= ${${group}OWN}
|
|
${group}GRP_${file:T}?= ${${group}GRP}
|
|
${group}MODE_${file:T}?= ${${group}MODE}
|
|
${group}DIR_${file:T}?= ${${group}DIR}
|
|
.if defined(${group}NAME)
|
|
${group}NAME_${file:T}?= ${${group}NAME}
|
|
.else
|
|
${group}NAME_${file:T}?= ${file:T}
|
|
.endif
|
|
installfiles-${group}: _${group}INS_${file:T}
|
|
_${group}INS_${file:T}: ${file}
|
|
${INSTALL} -o ${${group}OWN_${.ALLSRC:T}} \
|
|
-g ${${group}GRP_${.ALLSRC:T}} -m ${${group}MODE_${.ALLSRC:T}} \
|
|
${.ALLSRC} \
|
|
${DESTDIR}${${group}DIR_${.ALLSRC:T}}/${${group}NAME_${.ALLSRC:T}}
|
|
.else
|
|
_${group}FILES+= ${file}
|
|
.endif
|
|
.endfor
|
|
.if !empty(_${group}FILES)
|
|
installfiles-${group}: _${group}INS
|
|
_${group}INS: ${_${group}FILES}
|
|
.if defined(${group}NAME)
|
|
${INSTALL} -o ${${group}OWN} -g ${${group}GRP} \
|
|
-m ${${group}MODE} ${.ALLSRC} \
|
|
${DESTDIR}${${group}DIR}/${${group}NAME}
|
|
.else
|
|
${INSTALL} -o ${${group}OWN} -g ${${group}GRP} \
|
|
-m ${${group}MODE} ${.ALLSRC} ${DESTDIR}${${group}DIR}
|
|
.endif
|
|
.endif
|
|
|
|
.endif # defined(${group}) && !empty(${group})
|
|
.endfor
|
|
|
|
realinstall: installfiles
|
|
.ORDER: beforeinstall installfiles
|
|
|
|
.endif # !target(__<bsd.files.mk>__)
|