svn commit: r297842 - in head/gnu/lib: csu libgcc libgcov
Bryan Drewery
bdrewery at FreeBSD.org
Mon Apr 18 18:20:45 UTC 2016
On 4/16/2016 5:05 AM, Jilles Tjoelker wrote:
> On Tue, Apr 12, 2016 at 02:45:19AM +0000, Bryan Drewery wrote:
>> Author: bdrewery
>> Date: Tue Apr 12 02:45:19 2016
>> New Revision: 297842
>> URL: https://svnweb.freebsd.org/changeset/base/297842
>
>> Log:
>> META_MODE: Avoid changed build command every build.
>
>> Because the file is generated with -f using another Makefile, 2
>> different Makefiles are trying to handle the .meta file for the
>> target. The obvious .NOMETA_CMP or .NOMETA on the ${MAKE} targets
>> don't work as they are very limited in scope in bmake. Using
>> .PHONY fixes the problem and ensures that the ${MAKE} command
>> is always ran to check if it is outdated in the sub-make.
>
>> An example of the problem in gnu/lib/libgcc (with make -dM):
>> /usr/obj/root/git/freebsd/gnu/lib/libgcc/tm.h.meta: 2: a build command has changed
>> TARGET_CPU_DEFAULT="" HEADERS="options.h i386/biarch64.h i386/i386.h i386/unix.h i386/att.h dbxelf.h elfos-undef.h elfos.h freebsd-native.h freebsd-spec.h freebsd.h i386/x86-64.h i386/freebsd.h i386/freebsd64.h defaults.h" DEFINES="" /bin/sh /root/git/freebsd/gnu/lib/libgcc/../../../contrib/gcc/mkconfig.sh tm.h
>> vs
>> (cd /root/git/freebsd/gnu/lib/libgcc; make -f /root/git/freebsd/gnu/lib/libgcc/../../usr.bin/cc/cc_tools/Makefile MFILE=/root/git/freebsd/gnu/lib/libgcc/../../usr.bin/cc/cc_tools/Makefile GCCDIR=/root/git/freebsd/gnu/lib/libgcc/../../../contrib/gcc tm.h)
>> Skipping meta for tm.h: .NOMETA
>> (cd /root/git/freebsd/gnu/lib/libgcc; make -f /root/git/freebsd/gnu/lib/libgcc/../../usr.bin/cc/cc_tools/Makefile MFILE=/root/git/freebsd/gnu/lib/libgcc/../../usr.bin/cc/cc_tools/Makefile GCCDIR=/root/git/freebsd/gnu/lib/libgcc/../../../contrib/gcc tm.h)
>> `tm.h' is up to date.
>
>> Modified:
>> head/gnu/lib/csu/Makefile
>> head/gnu/lib/libgcc/Makefile
>> head/gnu/lib/libgcov/Makefile
>
>> Modified: head/gnu/lib/csu/Makefile
>> ==============================================================================
>> --- head/gnu/lib/csu/Makefile Tue Apr 12 02:01:16 2016 (r297841)
>> +++ head/gnu/lib/csu/Makefile Tue Apr 12 02:45:19 2016 (r297842)
>> @@ -71,7 +71,7 @@ crtendS.o: ${ENDSRC}
>> -c -o ${.TARGET} ${.ALLSRC:N*.h}
>>
>> CLEANFILES+= tm.h tconfig.h options.h optionlist cs-tconfig.h cs-tm.h
>> -tm.h tconfig.h options.h: ${CCDIR}/cc_tools/Makefile
>> +tm.h tconfig.h options.h: ${CCDIR}/cc_tools/Makefile .PHONY
>> (cd ${.CURDIR}; ${MAKE} -f ${.ALLSRC} MFILE=${.ALLSRC} GCCDIR=${GCCDIR} ${.TARGET})
>>
>> .include <bsd.lib.mk>
>>
>> Modified: head/gnu/lib/libgcc/Makefile
>> ==============================================================================
>> --- head/gnu/lib/libgcc/Makefile Tue Apr 12 02:01:16 2016 (r297841)
>> +++ head/gnu/lib/libgcc/Makefile Tue Apr 12 02:45:19 2016 (r297842)
>> @@ -343,7 +343,7 @@ ${_src:R:S/$/.So/}: ${_src} ${COMMONHDRS
>> #
>> # Generated headers
>> #
>> -${COMMONHDRS}: ${.CURDIR}/../../usr.bin/cc/cc_tools/Makefile
>> +${COMMONHDRS}: ${.CURDIR}/../../usr.bin/cc/cc_tools/Makefile .PHONY
>> (cd ${.CURDIR}; ${MAKE} -f ${.ALLSRC} MFILE=${.ALLSRC} GCCDIR=${GCCDIR} ${.TARGET})
>>
>> CLEANFILES += ${COMMONHDRS}
>>
>> Modified: head/gnu/lib/libgcov/Makefile
>> ==============================================================================
>> --- head/gnu/lib/libgcov/Makefile Tue Apr 12 02:01:16 2016 (r297841)
>> +++ head/gnu/lib/libgcov/Makefile Tue Apr 12 02:45:19 2016 (r297842)
>> @@ -45,7 +45,7 @@ CC_S = ${CC} -c ${CFLAGS} ${PICFLAG} -DS
>> COMMONHDRS= tm.h tconfig.h gcov-iov.h options.h
>> CLEANFILES+= ${COMMONHDRS} cs-tm.h cs-tconfig.h options.h optionlist
>>
>> -${COMMONHDRS}: ${.CURDIR}/../../usr.bin/cc/cc_tools/Makefile
>> +${COMMONHDRS}: ${.CURDIR}/../../usr.bin/cc/cc_tools/Makefile .PHONY
>> (cd ${.CURDIR}; ${MAKE} -f ${.ALLSRC} MFILE=${.ALLSRC} GCCDIR=${GCCDIR} ${.TARGET})
>>
>> ${OBJS} beforedepend: ${COMMONHDRS}
>
> Unfortunately, this causes things to be built every time for
> non-metamode builds, including make installworld. I had to revert the
> gnu/lib/csu/Makefile part locally to get make installworld with a
> read-only /usr/obj to work again.
>
Yup, it does in META MODE as well. I failed to do an install test.
r298218 fixes it and I added an error in install if a rebuild occurs in
r298219 to help catch these earlier.
--
Regards,
Bryan Drewery
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/svn-src-head/attachments/20160418/41fdbd41/attachment.sig>
More information about the svn-src-head
mailing list