From owner-svn-src-all@freebsd.org Sat Apr 16 12:05:46 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D15FCAEDBF8; Sat, 16 Apr 2016 12:05:46 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay04.stack.nl [IPv6:2001:610:1108:5010::107]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mailhost.stack.nl", Issuer "CA Cert Signing Authority" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 6D0A01D2D; Sat, 16 Apr 2016 12:05:46 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from toad2.stack.nl (toad2.stack.nl [IPv6:2001:610:1108:5010::161]) by mx1.stack.nl (Postfix) with ESMTP id 6FD67B8059; Sat, 16 Apr 2016 14:05:42 +0200 (CEST) Received: by toad2.stack.nl (Postfix, from userid 1677) id 1008B892B2; Sat, 16 Apr 2016 14:05:43 +0200 (CEST) Date: Sat, 16 Apr 2016 14:05:43 +0200 From: Jilles Tjoelker To: Bryan Drewery Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r297842 - in head/gnu/lib: csu libgcc libgcov Message-ID: <20160416120542.GA92656@stack.nl> References: <201604120245.u3C2jJfo002870@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201604120245.u3C2jJfo002870@repo.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Apr 2016 12:05:46 -0000 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 > > 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