WITH_META_MODE: Mitigate switching from without to with META_MODE.

Adding .META to targets-to-build will ensure that they will rebuild if there
is no .meta file.

Adding it to all SUFFIXES and objects ensures that at least objects will
rebuild if there is no .meta file.

This will be reverted if bmake's behavior changes to rebuild on missing .meta
files.

Sponsored by:	EMC / Isilon Storage Division
This commit is contained in:
Bryan Drewery 2016-05-31 21:22:19 +00:00
parent 631e4e3abe
commit 28849c57d6
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=301079
10 changed files with 112 additions and 104 deletions

View File

@ -92,7 +92,7 @@ OBJS_DEPEND_GUESS.${_S:R}.o= ${_S}
# Lexical analyzers
.for _LSRC in ${SRCS:M*.l:N*/*}
.for _LC in ${_LSRC:R}.c
${_LC}: ${_LSRC}
${_LC}: ${_LSRC} ${OP_META}
${LEX} ${LFLAGS} -o${.TARGET} ${.ALLSRC}
OBJS_DEPEND_GUESS.${_LC:R}.o= ${_LC}
SRCS:= ${SRCS:S/${_LSRC}/${_LC}/}
@ -107,6 +107,7 @@ SRCS:= ${SRCS:S/${_YSRC}/${_YC}/}
CLEANFILES+= ${_YC}
.if !empty(YFLAGS:M-d) && !empty(SRCS:My.tab.h)
.ORDER: ${_YC} y.tab.h
${_YC}: ${OP_META}
${_YC} y.tab.h: ${_YSRC}
${YACC} ${YFLAGS} ${.ALLSRC}
cp y.tab.c ${_YC}
@ -114,13 +115,14 @@ CLEANFILES+= y.tab.c y.tab.h
.elif !empty(YFLAGS:M-d)
.for _YH in ${_YC:R}.h
.ORDER: ${_YC} ${_YH}
${_YC}: ${OP_META}
${_YC} ${_YH}: ${_YSRC}
${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC}
SRCS+= ${_YH}
CLEANFILES+= ${_YH}
.endfor
.else
${_YC}: ${_YSRC}
${_YC}: ${_YSRC} ${OP_META}
${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC}
.endif
OBJS_DEPEND_GUESS.${_YC:R}.o= ${_YC}
@ -134,20 +136,20 @@ CFLAGS+= -I${.OBJDIR}
.for _DSRC in ${SRCS:M*.d:N*/*}
.for _D in ${_DSRC:R}
SRCS+= ${_D}.h
${_D}.h: ${_DSRC}
${_D}.h: ${_DSRC} ${OP_META}
${DTRACE} ${DTRACEFLAGS} -h -s ${.ALLSRC}
SRCS:= ${SRCS:S/^${_DSRC}$//}
OBJS+= ${_D}.o
CLEANFILES+= ${_D}.h ${_D}.o
${_D}.o: ${_DSRC} ${OBJS:S/^${_D}.o$//}
${_D}.o: ${_DSRC} ${OBJS:S/^${_D}.o$//} ${OP_META}
@rm -f ${.TARGET}
${DTRACE} ${DTRACEFLAGS} -G -o ${.TARGET} -s ${.ALLSRC:N*.h}
.if defined(LIB)
CLEANFILES+= ${_D}.So ${_D}.po
${_D}.So: ${_DSRC} ${SOBJS:S/^${_D}.So$//}
${_D}.So: ${_DSRC} ${SOBJS:S/^${_D}.So$//} ${OP_META}
@rm -f ${.TARGET}
${DTRACE} ${DTRACEFLAGS} -G -o ${.TARGET} -s ${.ALLSRC:N*.h}
${_D}.po: ${_DSRC} ${POBJS:S/^${_D}.po$//}
${_D}.po: ${_DSRC} ${POBJS:S/^${_D}.po$//} ${OP_META}
@rm -f ${.TARGET}
${DTRACE} ${DTRACEFLAGS} -G -o ${.TARGET} -s ${.ALLSRC:N*.h}
.endif
@ -243,7 +245,7 @@ DPSRCS+= ${SRCS}
# A .depend file will only be generated if there are commands in
# beforedepend/_EXTRADEPEND/afterdepend. The target is kept
# to allow 'make depend' to generate files.
${DEPENDFILE}: ${DPSRCS}
${DEPENDFILE}: ${DPSRCS} ${OP_META}
.if !empty(.MAKE.MODE:Mmeta) || exists(${.OBJDIR}/${DEPENDFILE})
rm -f ${DEPENDFILE}
.endif

View File

@ -86,18 +86,18 @@ DVIPS2ASCII?= dvips2ascii
.SUFFIXES: ${ICOMPRESS_EXT} .info .texi .texinfo .dvi .ps .latin1 .html
.texi.info .texinfo.info:
.texi.info .texinfo.info: ${OP_META}
${MAKEINFO} ${MAKEINFOFLAGS} -I ${.CURDIR} -I ${SRCDIR} ${.IMPSRC} \
-o ${.TARGET}
.texi.dvi .texinfo.dvi:
.texi.dvi .texinfo.dvi: ${OP_META}
TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
${TEX} ${.IMPSRC} </dev/null
# Run again to resolve cross references.
TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
${TEX} ${.IMPSRC} </dev/null
.texinfo.latin1 .texi.latin1:
.texinfo.latin1 .texi.latin1: ${OP_META}
perl -npe 's/(^\s*\\input\s+texinfo\s+)/$$1\n@tex\n\\global\\hsize=120mm\n@end tex\n\n/' ${.IMPSRC} >> ${.IMPSRC:T:R}-la.texi
TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
${TEX} ${.IMPSRC:T:R}-la.texi </dev/null
@ -108,10 +108,10 @@ DVIPS2ASCII?= dvips2ascii
${DVIPS2ASCII} > ${.TARGET}.new
mv -f ${.TARGET}.new ${.TARGET}
.dvi.ps:
.dvi.ps: ${OP_META}
${DVIPS} -o ${.TARGET} ${.IMPSRC}
.info.html:
.info.html: ${OP_META}
${INFO2HTML} ${.IMPSRC}
${INSTALL_LINK} ${.TARGET:R}.info.Top.html ${.TARGET}
@ -133,7 +133,7 @@ all: ${IFILES}
.endif
.for x in ${IFILENS}
${x:S/$/${ICOMPRESS_EXT}/}: ${x}
${x:S/$/${ICOMPRESS_EXT}/}: ${x} ${OP_META}
${ICOMPRESS_CMD} ${.ALLSRC} > ${.TARGET}
.endfor
@ -158,7 +158,7 @@ ${x:S/$/-install/}:
.if defined(SRCS)
CLEANFILES+= ${INFO}.texi
${INFO}.texi: ${SRCS}
${INFO}.texi: ${SRCS} ${OP_META}
cat ${.ALLSRC} > ${.TARGET}
.endif

View File

@ -91,55 +91,55 @@ PICFLAG=-fpic
PO_FLAG=-pg
.c.o:
.c.o: ${OP_META}
${CC} ${STATIC_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
.c.po:
.c.po: ${OP_META}
${CC} ${PO_FLAG} ${STATIC_CFLAGS} ${PO_CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
.c.So:
.c.So: ${OP_META}
${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
.cc.o .C.o .cpp.o .cxx.o:
.cc.o .C.o .cpp.o .cxx.o: ${OP_META}
${CXX} ${STATIC_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
.cc.po .C.po .cpp.po .cxx.po:
.cc.po .C.po .cpp.po .cxx.po: ${OP_META}
${CXX} ${PO_FLAG} ${STATIC_CXXFLAGS} ${PO_CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
.cc.So .C.So .cpp.So .cxx.So:
.cc.So .C.So .cpp.So .cxx.So: ${OP_META}
${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
.f.po:
.f.po: ${OP_META}
${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
${CTFCONVERT_CMD}
.f.So:
.f.So: ${OP_META}
${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
${CTFCONVERT_CMD}
.s.po .s.So:
.s.po .s.So: ${OP_META}
${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
${CTFCONVERT_CMD}
.asm.po:
.asm.po: ${OP_META}
${CC:N${CCACHE_BIN}} -x assembler-with-cpp -DPROF ${PO_CFLAGS} \
${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
.asm.So:
.asm.So: ${OP_META}
${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PICFLAG} -DPIC \
${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
.S.po:
.S.po: ${OP_META}
${CC:N${CCACHE_BIN}} -DPROF ${PO_CFLAGS} ${ACFLAGS} -c ${.IMPSRC} \
-o ${.TARGET}
${CTFCONVERT_CMD}
.S.So:
.S.So: ${OP_META}
${CC:N${CCACHE_BIN}} ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} \
-c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
@ -183,7 +183,7 @@ CLEANFILES+= ${OBJS} ${STATICOBJS}
.if defined(LIB) && !empty(LIB)
_LIBS= lib${LIB_PRIVATE}${LIB}.a
lib${LIB_PRIVATE}${LIB}.a: ${OBJS} ${STATICOBJS}
lib${LIB_PRIVATE}${LIB}.a: ${OBJS} ${STATICOBJS} ${OP_META}
@${ECHO} building static ${LIB} library
@rm -f ${.TARGET}
${AR} ${ARFLAGS} ${.TARGET} `NM='${NM}' NMFLAGS='${NMFLAGS}' lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
@ -198,7 +198,7 @@ POBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po}
DEPENDOBJS+= ${POBJS}
CLEANFILES+= ${POBJS}
lib${LIB_PRIVATE}${LIB}_p.a: ${POBJS}
lib${LIB_PRIVATE}${LIB}_p.a: ${POBJS} ${OP_META}
@${ECHO} building profiled ${LIB} library
@rm -f ${.TARGET}
${AR} ${ARFLAGS} ${.TARGET} `NM='${NM}' NMFLAGS='${NMFLAGS}' lorder ${POBJS} | tsort -q` ${ARADD}
@ -230,7 +230,7 @@ ${SHLIB_NAME_FULL}: beforelinking
.if defined(SHLIB_LINK)
.if defined(SHLIB_LDSCRIPT) && !empty(SHLIB_LDSCRIPT) && exists(${.CURDIR}/${SHLIB_LDSCRIPT})
${SHLIB_LINK:R}.ld: ${.CURDIR}/${SHLIB_LDSCRIPT}
${SHLIB_LINK:R}.ld: ${.CURDIR}/${SHLIB_LDSCRIPT} ${OP_META}
sed -e 's,@@SHLIB@@,${_SHLIBDIR}/${SHLIB_NAME},g' \
-e 's,@@LIBDIR@@,${_LIBDIR},g' \
${.ALLSRC} > ${.TARGET}
@ -241,7 +241,7 @@ CLEANFILES+= ${SHLIB_LINK:R}.ld
CLEANFILES+= ${SHLIB_LINK}
.endif
${SHLIB_NAME_FULL}: ${SOBJS}
${SHLIB_NAME_FULL}: ${SOBJS} ${OP_META}
@${ECHO} building shared library ${SHLIB_NAME}
@rm -f ${SHLIB_NAME} ${SHLIB_LINK}
.if defined(SHLIB_LINK) && !commands(${SHLIB_LINK:R}.ld)
@ -256,11 +256,11 @@ ${SHLIB_NAME_FULL}: ${SOBJS}
.if ${MK_DEBUG_FILES} != "no"
CLEANFILES+= ${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug
${SHLIB_NAME}: ${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug
${SHLIB_NAME}: ${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug ${OP_META}
${OBJCOPY} --strip-debug --add-gnu-debuglink=${SHLIB_NAME}.debug \
${SHLIB_NAME_FULL} ${.TARGET}
${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL}
${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL} ${OP_META}
${OBJCOPY} --only-keep-debug ${SHLIB_NAME_FULL} ${.TARGET}
.endif
.endif #defined(SHLIB_NAME)
@ -268,7 +268,7 @@ ${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL}
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
_LIBS+= lib${LIB_PRIVATE}${LIB}_pic.a
lib${LIB_PRIVATE}${LIB}_pic.a: ${SOBJS}
lib${LIB_PRIVATE}${LIB}_pic.a: ${SOBJS} ${OP_META}
@${ECHO} building special pic ${LIB} library
@rm -f ${.TARGET}
${AR} ${ARFLAGS} ${.TARGET} ${SOBJS} ${ARADD}
@ -281,7 +281,7 @@ _LIBS+= ${LINTLIB}
LINTOBJS+= ${SRCS:M*.c:.c=.ln}
CLEANFILES+= ${LINTOBJS}
${LINTLIB}: ${LINTOBJS}
${LINTLIB}: ${LINTOBJS} ${OP_META}
@${ECHO} building lint library ${.TARGET}
@rm -f ${.TARGET}
${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}

View File

@ -99,7 +99,7 @@ ${__target}: ${__page}
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
.for __target in ${__page:T:S/$/${CATEXT}${FILTEXTENSION}/g}
all-man: ${__target}
${__target}: ${__page}
${__target}: ${__page} ${OP_META}
${MANFILTER} < ${.ALLSRC} | ${MANDOC_CMD} > ${.TARGET}
.endfor
.endif
@ -112,7 +112,7 @@ CLEANFILES+= ${MAN:T:S/$/${CATEXT}/g}
.for __page in ${MAN}
.for __target in ${__page:T:S/$/${CATEXT}/g}
all-man: ${__target}
${__target}: ${__page}
${__target}: ${__page} ${OP_META}
${MANDOC_CMD} ${.ALLSRC} > ${.TARGET}
.endfor
.endfor
@ -148,7 +148,7 @@ CLEANFILES+= ${MAN:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g}
.for __page in ${MAN}
.for __target in ${__page:T:S/$/${MCOMPRESS_EXT}/}
all-man: ${__target}
${__target}: ${__page}
${__target}: ${__page} ${OP_META}
.if defined(MANFILTER)
${MANFILTER} < ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET}
.else
@ -158,7 +158,7 @@ ${__target}: ${__page}
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
.for __target in ${__page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/}
all-man: ${__target}
${__target}: ${__page}
${__target}: ${__page} ${OP_META}
.if defined(MANFILTER)
${MANFILTER} < ${.ALLSRC} | ${MANDOC_CMD} | ${MCOMPRESS_CMD} > ${.TARGET}
.else

View File

@ -42,7 +42,7 @@ NLSSRCFILES_${file}?= ${NLSSRCFILES}
.endif
.if defined(NLSSRCFILES_${file})
NLSSRCDIR_${file}?= ${NLSSRCDIR}
${file}.msg: ${NLSSRCFILES_${file}:S/^/${NLSSRCDIR_${file}}\//}
${file}.msg: ${NLSSRCFILES_${file}:S/^/${NLSSRCDIR_${file}}\//} ${OP_META}
@rm -f ${.TARGET}
cat ${.ALLSRC} > ${.TARGET}
CLEANFILES+= ${file}.msg

View File

@ -90,7 +90,7 @@ OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
beforelinking: ${OBJS}
${PROG_FULL}: beforelinking
.endif
${PROG_FULL}: ${OBJS}
${PROG_FULL}: ${OBJS} ${OP_META}
.if defined(PROG_CXX)
${CXX:N${CCACHE_BIN}} ${CXXFLAGS:N-M*} ${LDFLAGS} -o ${.TARGET} \
${OBJS} ${LDADD}
@ -122,7 +122,7 @@ OBJS+= ${PROG}.o
beforelinking: ${OBJS}
${PROG_FULL}: beforelinking
.endif
${PROG_FULL}: ${OBJS}
${PROG_FULL}: ${OBJS} ${OP_META}
.if defined(PROG_CXX)
${CXX:N${CCACHE_BIN}} ${CXXFLAGS:N-M*} ${LDFLAGS} -o ${.TARGET} \
${OBJS} ${LDADD}
@ -138,11 +138,11 @@ ${PROG_FULL}: ${OBJS}
.endif # !defined(SRCS)
.if ${MK_DEBUG_FILES} != "no"
${PROG}: ${PROG_FULL} ${PROGNAME}.debug
${PROG}: ${PROG_FULL} ${PROGNAME}.debug ${OP_META}
${OBJCOPY} --strip-debug --add-gnu-debuglink=${PROGNAME}.debug \
${PROG_FULL} ${.TARGET}
${PROGNAME}.debug: ${PROG_FULL}
${PROGNAME}.debug: ${PROG_FULL} ${OP_META}
${OBJCOPY} --only-keep-debug ${PROG_FULL} ${.TARGET}
.endif

View File

@ -58,6 +58,9 @@ META_MODE+= nofilemon
META_MODE?= normal
.export META_MODE
.MAKE.MODE?= ${META_MODE}
.if ${.MAKE.MODE:Mmeta*} != ""
OP_META= .META
.endif
.if ${MK_AUTO_OBJ} == "yes"
# This needs to be done early - before .PATH is computed
@ -286,99 +289,99 @@ YFLAGS ?= -d
# non-Posix rule set
.sh:
.sh: ${OP_META}
cp -f ${.IMPSRC} ${.TARGET}
chmod a+x ${.TARGET}
.c.ln:
.c.ln: ${OP_META}
${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
touch ${.TARGET}
.cc.ln .C.ln .cpp.ln .cxx.ln:
.cc.ln .C.ln .cpp.ln .cxx.ln: ${OP_META}
${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
touch ${.TARGET}
.c:
.c: ${OP_META}
${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
${CTFCONVERT_CMD}
.c.o:
.c.o: ${OP_META}
${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
.cc .cpp .cxx .C:
.cc .cpp .cxx .C: ${OP_META}
${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
.cc.o .cpp.o .cxx.o .C.o:
.cc.o .cpp.o .cxx.o .C.o: ${OP_META}
${CXX} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
.m.o:
.m.o: ${OP_META}
${OBJC} ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
.p.o:
.p.o: ${OP_META}
${PC} ${PFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
.e .r .F .f:
.e .r .F .f: ${OP_META}
${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \
-o ${.TARGET}
.e.o .r.o .F.o .f.o:
.e.o .r.o .F.o .f.o: ${OP_META}
${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC} -o ${.TARGET}
.S.o:
.S.o: ${OP_META}
${CC:N${CCACHE_BIN}} ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
${CTFCONVERT_CMD}
.asm.o:
.asm.o: ${OP_META}
${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} \
-o ${.TARGET}
${CTFCONVERT_CMD}
.s.o:
.s.o: ${OP_META}
${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
${CTFCONVERT_CMD}
# XXX not -j safe
.y.o:
.y.o: ${OP_META}
${YACC} ${YFLAGS} ${.IMPSRC}
${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
rm -f y.tab.c
${CTFCONVERT_CMD}
.l.o:
.l.o: ${OP_META}
${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
rm -f ${.PREFIX}.tmp.c
${CTFCONVERT_CMD}
# XXX not -j safe
.y.c:
.y.c: ${OP_META}
${YACC} ${YFLAGS} ${.IMPSRC}
mv y.tab.c ${.TARGET}
.l.c:
.l.c: ${OP_META}
${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
.s.out .c.out .o.out:
.s.out .c.out .o.out: ${OP_META}
${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
${CTFCONVERT_CMD}
.f.out .F.out .r.out .e.out:
.f.out .F.out .r.out .e.out: ${OP_META}
${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
${LDLIBS} -o ${.TARGET}
rm -f ${.PREFIX}.o
${CTFCONVERT_CMD}
# XXX not -j safe
.y.out:
.y.out: ${OP_META}
${YACC} ${YFLAGS} ${.IMPSRC}
${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
rm -f y.tab.c
${CTFCONVERT_CMD}
.l.out:
.l.out: ${OP_META}
${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
rm -f ${.PREFIX}.tmp.c

View File

@ -108,10 +108,10 @@ modules-all modules-depend: modules-obj
FULLKERNEL= ${KERNEL_KO}
.else
FULLKERNEL= ${KERNEL_KO}.full
${KERNEL_KO}: ${FULLKERNEL} ${KERNEL_KO}.debug
${KERNEL_KO}: ${FULLKERNEL} ${KERNEL_KO}.debug ${OP_META}
${OBJCOPY} --strip-debug --add-gnu-debuglink=${KERNEL_KO}.debug \
${FULLKERNEL} ${.TARGET}
${KERNEL_KO}.debug: ${FULLKERNEL}
${KERNEL_KO}.debug: ${FULLKERNEL} ${OP_META}
${OBJCOPY} --only-keep-debug ${FULLKERNEL} ${.TARGET}
install.debug reinstall.debug: gdbinit
cd ${.CURDIR}; ${MAKE} ${.TARGET:R}
@ -127,7 +127,7 @@ gdbinit:
.endif
.endif
${FULLKERNEL}: ${SYSTEM_DEP} vers.o
${FULLKERNEL}: ${SYSTEM_DEP} vers.o ${OP_META}
@rm -f ${.TARGET}
@echo linking ${.TARGET}
${SYSTEM_LD}
@ -150,9 +150,9 @@ LNFILES= ${CFILES:T:S/.c$/.ln/}
.for mfile in ${MFILES}
# XXX the low quality .m.o rules gnerated by config are normally used
# instead of the .m.c rules here.
${mfile:T:S/.m$/.c/}: ${mfile}
${mfile:T:S/.m$/.c/}: ${mfile} ${OP_META}
${AWK} -f $S/tools/makeobjops.awk ${mfile} -c
${mfile:T:S/.m$/.h/}: ${mfile}
${mfile:T:S/.m$/.h/}: ${mfile} ${OP_META}
${AWK} -f $S/tools/makeobjops.awk ${mfile} -h
.endfor
@ -172,18 +172,18 @@ lint: ${LNFILES}
# dynamic references. We could probably do a '-Bforcedynamic' mode like
# in the a.out ld. For now, this works.
HACK_EXTRA_FLAGS?= -shared
hack.So: Makefile
hack.So: Makefile ${OP_META}
:> hack.c
${CC} ${HACK_EXTRA_FLAGS} -nostdlib hack.c -o hack.So
rm -f hack.c
assym.s: $S/kern/genassym.sh genassym.o
assym.s: $S/kern/genassym.sh genassym.o ${OP_META}
NM='${NM}' NMFLAGS='${NMFLAGS}' sh $S/kern/genassym.sh genassym.o > ${.TARGET}
genassym.o: $S/$M/$M/genassym.c
genassym.o: $S/$M/$M/genassym.c ${OP_META}
${CC} -c ${CFLAGS:N-fno-common} $S/$M/$M/genassym.c
${SYSTEM_OBJS} genassym.o vers.o: opt_global.h
${SYSTEM_OBJS} genassym.o vers.o: opt_global.h ${OP_META}
# Skip reading .depend when not needed to speed up tree-walks
# and simple lookups.
@ -260,7 +260,7 @@ ${__obj}: ${OBJS_DEPEND_GUESS.${__obj}:N*.h}
.NOPATH: .depend ${DEPENDFILES_OBJS}
.depend: .PRECIOUS ${SRCS}
.depend: .PRECIOUS ${SRCS} ${OP_META}
_ILINKS= machine
.if ${MACHINE} != ${MACHINE_CPUARCH} && ${MACHINE} != "arm64"
@ -339,26 +339,26 @@ kernel-reinstall:
${INSTALL} -p -m 555 -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO}.debug ${DESTDIR}${KERN_DEBUGDIR}${KODIR}/
.endif
config.o env.o hints.o vers.o vnode_if.o:
config.o env.o hints.o vers.o vnode_if.o: ${OP_META}
${NORMAL_C}
${NORMAL_CTFCONVERT}
config.ln env.ln hints.ln vers.ln vnode_if.ln:
config.ln env.ln hints.ln vers.ln vnode_if.ln: ${OP_META}
${NORMAL_LINT}
vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP}
vers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP} ${OP_META}
MAKE=${MAKE} sh $S/conf/newvers.sh ${KERN_IDENT}
vnode_if.c: $S/tools/vnode_if.awk $S/kern/vnode_if.src
vnode_if.c: $S/tools/vnode_if.awk $S/kern/vnode_if.src ${OP_META}
${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -c
vnode_if.h vnode_if_newproto.h vnode_if_typedef.h: $S/tools/vnode_if.awk \
$S/kern/vnode_if.src
vnode_if.h: vnode_if_newproto.h vnode_if_typedef.h
$S/kern/vnode_if.src ${OP_META}
vnode_if.h: vnode_if_newproto.h vnode_if_typedef.h ${OP_META}
${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -h
vnode_if_newproto.h:
vnode_if_newproto.h: ${OP_META}
${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -p
vnode_if_typedef.h:
vnode_if_typedef.h: ${OP_META}
${AWK} -f $S/tools/vnode_if.awk $S/kern/vnode_if.src -q
.if ${MFS_IMAGE:Uno} != "no"
@ -367,7 +367,7 @@ vnode_if_typedef.h:
# via linking. Make sure the contents are in the mfs section and rename the
# start/end/size variables to __start_mfs, __stop_mfs, and mfs_size,
# respectively.
embedfs_${MFS_IMAGE:T:R}.o: ${MFS_IMAGE}
embedfs_${MFS_IMAGE:T:R}.o: ${MFS_IMAGE} ${OP_META}
${OBJCOPY} --input-target binary \
--output-target ${EMBEDFS_FORMAT.${MACHINE_ARCH}} \
--binary-architecture ${EMBEDFS_ARCH.${MACHINE_ARCH}} \

View File

@ -22,6 +22,7 @@ _srcconf_included_:
# The kernel build always occurs in the object directory which is .CURDIR.
.if ${.MAKE.MODE:Unormal:Mmeta}
.MAKE.MODE+= curdirOk=yes
OP_META= .META
.endif
# Can be overridden by makeoptions or /etc/make.conf

View File

@ -149,7 +149,7 @@ CTFFLAGS+= -g
.endif
.if defined(FIRMWS)
${KMOD:S/$/.c/}: ${SYSDIR}/tools/fw_stub.awk
${KMOD:S/$/.c/}: ${SYSDIR}/tools/fw_stub.awk ${OP_META}
${AWK} -f ${SYSDIR}/tools/fw_stub.awk ${FIRMWS} -m${KMOD} -c${KMOD:S/$/.c/g} \
${FIRMWARE_LICENSE:C/.+/-l/}${FIRMWARE_LICENSE}
@ -157,7 +157,7 @@ SRCS+= ${KMOD:S/$/.c/}
CLEANFILES+= ${KMOD:S/$/.c/}
.for _firmw in ${FIRMWS}
${_firmw:C/\:.*$/.fwo/:T}: ${_firmw:C/\:.*$//}
${_firmw:C/\:.*$/.fwo/:T}: ${_firmw:C/\:.*$//} ${OP_META}
@${ECHO} ${_firmw:C/\:.*$//} ${.ALLSRC:M*${_firmw:C/\:.*$//}}
@if [ -e ${_firmw:C/\:.*$//} ]; then \
${LD} -b binary --no-warn-mismatch ${_LDFLAGS} \
@ -188,15 +188,15 @@ PROG= ${KMOD}.ko
FULLPROG= ${PROG}
.else
FULLPROG= ${PROG}.full
${PROG}: ${FULLPROG} ${PROG}.debug
${PROG}: ${FULLPROG} ${PROG}.debug ${OP_META}
${OBJCOPY} --strip-debug --add-gnu-debuglink=${PROG}.debug \
${FULLPROG} ${.TARGET}
${PROG}.debug: ${FULLPROG}
${PROG}.debug: ${FULLPROG} ${OP_META}
${OBJCOPY} --only-keep-debug ${FULLPROG} ${.TARGET}
.endif
.if ${__KLD_SHARED} == yes
${FULLPROG}: ${KMOD}.kld
${FULLPROG}: ${KMOD}.kld ${OP_META}
.if ${MACHINE_CPUARCH} != "aarch64"
${LD} -Bshareable ${_LDFLAGS} -o ${.TARGET} ${KMOD}.kld
.else
@ -219,9 +219,9 @@ CLEANFILES+= export_syms
.endif
.if ${__KLD_SHARED} == yes
${KMOD}.kld: ${OBJS}
${KMOD}.kld: ${OBJS} ${OP_META}
.else
${FULLPROG}: ${OBJS}
${FULLPROG}: ${OBJS} ${OP_META}
.endif
${LD} ${_LDFLAGS} -r -d -o ${.TARGET} ${OBJS}
.if ${MK_CTF} != "no"
@ -397,16 +397,16 @@ _MATCHES=${_MFILES:${_MATCH}}
CLEANFILES+= ${_i}
.endif
.endfor # _i
.m.c: ${SYSDIR}/tools/makeobjops.awk
.m.c: ${SYSDIR}/tools/makeobjops.awk ${OP_META}
${AWK} -f ${SYSDIR}/tools/makeobjops.awk ${.IMPSRC} -c
.m.h: ${SYSDIR}/tools/makeobjops.awk
.m.h: ${SYSDIR}/tools/makeobjops.awk ${OP_META}
${AWK} -f ${SYSDIR}/tools/makeobjops.awk ${.IMPSRC} -h
.for _i in mii pccard
.if !empty(SRCS:M${_i}devs.h)
CLEANFILES+= ${_i}devs.h
${_i}devs.h: ${SYSDIR}/tools/${_i}devs2h.awk ${SYSDIR}/dev/${_i}/${_i}devs
${_i}devs.h: ${SYSDIR}/tools/${_i}devs2h.awk ${SYSDIR}/dev/${_i}/${_i}devs ${OP_META}
${AWK} -f ${SYSDIR}/tools/${_i}devs2h.awk ${SYSDIR}/dev/${_i}/${_i}devs
.endif
.endfor # _i
@ -415,8 +415,9 @@ ${_i}devs.h: ${SYSDIR}/tools/${_i}devs2h.awk ${SYSDIR}/dev/${_i}/${_i}devs
CLEANFILES+= bhnd_nvram_map.h
bhnd_nvram_map.h: ${SYSDIR}/dev/bhnd/tools/nvram_map_gen.awk \
${SYSDIR}/dev/bhnd/tools/nvram_map_gen.sh \
${SYSDIR}/dev/bhnd/nvram/nvram_map
bhnd_nvram_map.h:
${SYSDIR}/dev/bhnd/nvram/nvram_map \
${OP_META}
bhnd_nvram_map.h: ${OP_META}
sh ${SYSDIR}/dev/bhnd/tools/nvram_map_gen.sh \
${SYSDIR}/dev/bhnd/nvram/nvram_map -h
.endif
@ -425,27 +426,28 @@ bhnd_nvram_map.h:
CLEANFILES+= bhnd_nvram_map_data.h
bhnd_nvram_map_data.h: ${SYSDIR}/dev/bhnd/tools/nvram_map_gen.awk \
${SYSDIR}/dev/bhnd/tools/nvram_map_gen.sh \
${SYSDIR}/dev/bhnd/nvram/nvram_map
bhnd_nvram_map_data.h:
${SYSDIR}/dev/bhnd/nvram/nvram_map \
${OP_META}
bhnd_nvram_map_data.h: ${OP_META}
sh ${SYSDIR}/dev/bhnd/tools/nvram_map_gen.sh \
${SYSDIR}/dev/bhnd/nvram/nvram_map -d
.endif
.if !empty(SRCS:Musbdevs.h)
CLEANFILES+= usbdevs.h
usbdevs.h: ${SYSDIR}/tools/usbdevs2h.awk ${SYSDIR}/dev/usb/usbdevs
usbdevs.h: ${SYSDIR}/tools/usbdevs2h.awk ${SYSDIR}/dev/usb/usbdevs ${OP_META}
${AWK} -f ${SYSDIR}/tools/usbdevs2h.awk ${SYSDIR}/dev/usb/usbdevs -h
.endif
.if !empty(SRCS:Musbdevs_data.h)
CLEANFILES+= usbdevs_data.h
usbdevs_data.h: ${SYSDIR}/tools/usbdevs2h.awk ${SYSDIR}/dev/usb/usbdevs
usbdevs_data.h: ${SYSDIR}/tools/usbdevs2h.awk ${SYSDIR}/dev/usb/usbdevs ${OP_META}
${AWK} -f ${SYSDIR}/tools/usbdevs2h.awk ${SYSDIR}/dev/usb/usbdevs -d
.endif
.if !empty(SRCS:Macpi_quirks.h)
CLEANFILES+= acpi_quirks.h
acpi_quirks.h: ${SYSDIR}/tools/acpi_quirks2h.awk ${SYSDIR}/dev/acpica/acpi_quirks
acpi_quirks.h: ${SYSDIR}/tools/acpi_quirks2h.awk ${SYSDIR}/dev/acpica/acpi_quirks ${OP_META}
${AWK} -f ${SYSDIR}/tools/acpi_quirks2h.awk ${SYSDIR}/dev/acpica/acpi_quirks
.endif
@ -455,10 +457,10 @@ assym.s: genassym.o
.if defined(KERNBUILDDIR)
genassym.o: opt_global.h
.endif
assym.s: ${SYSDIR}/kern/genassym.sh
assym.s: ${SYSDIR}/kern/genassym.sh ${OP_META}
sh ${SYSDIR}/kern/genassym.sh genassym.o > ${.TARGET}
genassym.o: ${SYSDIR}/${MACHINE}/${MACHINE}/genassym.c
genassym.o: ${SRCS:Mopt_*.h}
genassym.o: ${SRCS:Mopt_*.h} ${OP_META}
${CC} -c ${CFLAGS:N-fno-common} \
${SYSDIR}/${MACHINE}/${MACHINE}/genassym.c
.endif