svn commit: r297842 - in head/gnu/lib: csu libgcc libgcov

Jilles Tjoelker jilles at stack.nl
Sat Apr 16 12:05:46 UTC 2016


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.

-- 
Jilles Tjoelker


More information about the svn-src-all mailing list