From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6742 invoked by alias); 4 Feb 2011 06:34:36 -0000 Received: (qmail 6111 invoked by uid 22791); 4 Feb 2011 06:34:34 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from mailout-de.gmx.net (HELO mailout-de.gmx.net) (213.165.64.23) by sourceware.org (qpsmtpd/0.43rc1) with SMTP; Fri, 04 Feb 2011 06:34:28 +0000 Received: (qmail invoked by alias); 04 Feb 2011 06:34:24 -0000 Received: from xdsl-78-35-63-129.netcologne.de (EHLO localhost.localdomain) [78.35.63.129] by mail.gmx.net (mp007) with SMTP; 04 Feb 2011 07:34:24 +0100 Received: from ralf by localhost.localdomain with local (Exim 4.69) (envelope-from ) id 1PlFFQ-0004Rw-04; Fri, 04 Feb 2011 07:34:24 +0100 Date: Fri, 04 Feb 2011 06:34:00 -0000 From: Ralf Wildenhues To: Steve Ellcey Cc: binutils@sourceware.org, "H.J. Lu" Subject: Re: PATCH: PR binutils/12283: bfd/doc doesn't support parallel build Message-ID: <20110204063423.GC14132@gmx.de> References: <201101282332.p0SNWFT04949@lucas.cup.hp.com> <20110129094232.GD11288@gmx.de> <1296498781.12233.80.camel@hpsje.cup.hp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1296498781.12233.80.camel@hpsje.cup.hp.com> User-Agent: Mutt/1.5.20 (2010-08-04) X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2011-02/txt/msg00046.txt.bz2 * Steve Ellcey wrote on Mon, Jan 31, 2011 at 07:33:01PM CET: > On Sat, 2011-01-29 at 10:42 +0100, Ralf Wildenhues wrote: > > * Steve Ellcey wrote on Sat, Jan 29, 2011 at 12:32:15AM CET: > > > This patch is intended to be a secondary fix/workaround for the problem > > > that can happen when building bfd/doc using a parallel make. Ralf > > > Wildenhues has a fix to move-if-changed that should fix the problem for > > > any target where compiling a file multiple times will always result in > > > exactly the same binary, but I have at least one platform where this is > > > not the case: hppa*-*-hpux*. So I would also like to have this fix as a > > > backup to Ralf's patch (which I think should also go in). > > > > Note that with the changed move-if-change from gnulib, then instead of > > your patch, you could just use > > export CMPPROG=cmp --ignore-initial=16' > > make -jN > > > > for a successful build. > I tried that method but it did not work. When I use 'cmp > --ignore-initial=16' on object files (.o's) it works fine, but when I > use it to compare the chew binary I get a difference beyond the first 16 > bytes (at byte 111 or 112 depending on the binary). Still, I don't like the idea of requiring a configure switch in order for parallel builds to work; they should just work OOTB. Maybe we can help things here by going through another indirection, that should avoid multiple simultaneous compiles of chew.c. Does the (little-tested) patch below work for you? Are you using GNU make by the way, or HP-UX make? I can only warn against using the latter: http://thread.gmane.org/gmane.comp.sysutils.autoconf.patches/7535/focus=7548 Thanks, Ralf bfd/doc/ChangeLog: 2011-02-04 Ralf Wildenhues PR binutils/12283 * Makefile.am (stamp-chew): New target. Use throughout as dependency for targets that need chew, instead of depdending on chew.c or on chew directly. * Makefile.in: Regenerate. Index: bfd/doc/Makefile.am =================================================================== RCS file: /cvs/src/src/bfd/doc/Makefile.am,v retrieving revision 1.28 diff -u -r1.28 Makefile.am --- bfd/doc/Makefile.am 22 Aug 2009 19:02:56 -0000 1.28 +++ bfd/doc/Makefile.am 4 Feb 2011 06:27:26 -0000 @@ -64,6 +64,10 @@ $(H_CFLAGS) $(AM_CPPFLAGS) $(srcdir)/chew.c; \ $(SHELL) $(srcdir)/../../move-if-change chew.$$$$ $(MKDOC) +stamp-chew: $(srcdir)/chew.c + $(MAKE) $(MKDOC) + echo stamp >$@ + protos: libbfd.h libcoff.h bfd.h # We can't replace these rules with an implicit rule, because @@ -74,115 +78,93 @@ # program. If somebody tries to rebuild info, but none of the .texi files # have changed, then nothing will be rebuilt. -aoutx.texi: chew.c $(srcdir)/../aoutx.h $(srcdir)/doc.str - $(MAKE) $(MKDOC) +aoutx.texi: stamp-chew $(srcdir)/../aoutx.h $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../aoutx.h >aoutx.tmp $(SHELL) $(srcdir)/../../move-if-change aoutx.tmp aoutx.texi -archive.texi: chew.c $(srcdir)/../archive.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +archive.texi: stamp-chew $(srcdir)/../archive.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../archive.c >archive.tmp $(SHELL) $(srcdir)/../../move-if-change archive.tmp archive.texi -archures.texi: chew.c $(srcdir)/../archures.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +archures.texi: stamp-chew $(srcdir)/../archures.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../archures.c >archures.tmp $(SHELL) $(srcdir)/../../move-if-change archures.tmp archures.texi # We use bfdt.texi, rather than bfd.texi, to avoid conflicting with # bfd.texinfo on an 8.3 filesystem. -bfdt.texi: chew.c $(srcdir)/../bfd.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +bfdt.texi: stamp-chew $(srcdir)/../bfd.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfd.c >bfd.tmp $(SHELL) $(srcdir)/../../move-if-change bfd.tmp bfdt.texi -cache.texi: chew.c $(srcdir)/../cache.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +cache.texi: stamp-chew $(srcdir)/../cache.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../cache.c >cache.tmp $(SHELL) $(srcdir)/../../move-if-change cache.tmp cache.texi -coffcode.texi: chew.c $(srcdir)/../coffcode.h $(srcdir)/doc.str - $(MAKE) $(MKDOC) +coffcode.texi: stamp-chew $(srcdir)/../coffcode.h $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../coffcode.h >coffcode.tmp $(SHELL) $(srcdir)/../../move-if-change coffcode.tmp coffcode.texi -core.texi: chew.c $(srcdir)/../corefile.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +core.texi: stamp-chew $(srcdir)/../corefile.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../corefile.c >core.tmp $(SHELL) $(srcdir)/../../move-if-change core.tmp core.texi -elf.texi: chew.c $(srcdir)/../elf.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +elf.texi: stamp-chew $(srcdir)/../elf.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../elf.c >elf.tmp $(SHELL) $(srcdir)/../../move-if-change elf.tmp elf.texi -elfcode.texi: chew.c $(srcdir)/../elfcode.h $(srcdir)/doc.str - $(MAKE) $(MKDOC) +elfcode.texi: stamp-chew $(srcdir)/../elfcode.h $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../elfcode.h >elfcode.tmp $(SHELL) $(srcdir)/../../move-if-change elfcode.tmp elfcode.texi -mmo.texi: chew.c $(srcdir)/../mmo.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +mmo.texi: stamp-chew $(srcdir)/../mmo.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../mmo.c >mmo.tmp $(SHELL) $(srcdir)/../../move-if-change mmo.tmp mmo.texi -format.texi: chew.c $(srcdir)/../format.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +format.texi: stamp-chew $(srcdir)/../format.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../format.c >format.tmp $(SHELL) $(srcdir)/../../move-if-change format.tmp format.texi -libbfd.texi: chew.c $(srcdir)/../libbfd.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +libbfd.texi: stamp-chew $(srcdir)/../libbfd.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../libbfd.c >libbfd.tmp $(SHELL) $(srcdir)/../../move-if-change libbfd.tmp libbfd.texi -bfdio.texi: chew.c $(srcdir)/../bfdio.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +bfdio.texi: stamp-chew $(srcdir)/../bfdio.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdio.c >bfdio.tmp $(SHELL) $(srcdir)/../../move-if-change bfdio.tmp bfdio.texi -bfdwin.texi: chew.c $(srcdir)/../bfdwin.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +bfdwin.texi: stamp-chew $(srcdir)/../bfdwin.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdwin.c >bfdwin.tmp $(SHELL) $(srcdir)/../../move-if-change bfdwin.tmp bfdwin.texi -opncls.texi: chew.c $(srcdir)/../opncls.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +opncls.texi: stamp-chew $(srcdir)/../opncls.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../opncls.c >opncls.tmp $(SHELL) $(srcdir)/../../move-if-change opncls.tmp opncls.texi -reloc.texi: chew.c $(srcdir)/../reloc.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +reloc.texi: stamp-chew $(srcdir)/../reloc.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../reloc.c >reloc.tmp $(SHELL) $(srcdir)/../../move-if-change reloc.tmp reloc.texi -section.texi: chew.c $(srcdir)/../section.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +section.texi: stamp-chew $(srcdir)/../section.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../section.c >section.tmp $(SHELL) $(srcdir)/../../move-if-change section.tmp section.texi -syms.texi: chew.c $(srcdir)/../syms.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +syms.texi: stamp-chew $(srcdir)/../syms.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../syms.c >syms.tmp $(SHELL) $(srcdir)/../../move-if-change syms.tmp syms.texi -targets.texi: chew.c $(srcdir)/../targets.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +targets.texi: stamp-chew $(srcdir)/../targets.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../targets.c >targets.tmp $(SHELL) $(srcdir)/../../move-if-change targets.tmp targets.texi -init.texi: chew.c $(srcdir)/../init.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +init.texi: stamp-chew $(srcdir)/../init.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../init.c >init.tmp $(SHELL) $(srcdir)/../../move-if-change init.tmp init.texi -hash.texi: chew.c $(srcdir)/../hash.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +hash.texi: stamp-chew $(srcdir)/../hash.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../hash.c >hash.tmp $(SHELL) $(srcdir)/../../move-if-change hash.tmp hash.texi -linker.texi: chew.c $(srcdir)/../linker.c $(srcdir)/doc.str - $(MAKE) $(MKDOC) +linker.texi: stamp-chew $(srcdir)/../linker.c $(srcdir)/doc.str ./$(MKDOC) -f $(srcdir)/doc.str <$(srcdir)/../linker.c >linker.tmp $(SHELL) $(srcdir)/../../move-if-change linker.tmp linker.texi @@ -198,7 +180,7 @@ $(srcdir)/../elf.c \ $(srcdir)/header.sed \ $(srcdir)/proto.str \ - $(MKDOC) + stamp-chew libbfd.h: $(LIBBFD_H_DEP) echo "$(LIBBFD_H_DEP)" | sed -f $(srcdir)/header.sed > $@ @@ -217,7 +199,7 @@ $(srcdir)/../coffcode.h \ $(srcdir)/header.sed \ $(srcdir)/proto.str \ - $(MKDOC) + stamp-chew libcoff.h: $(LIBCOFF_H_DEP) echo "$(LIBCOFF_H_DEP)" | sed -f $(srcdir)/header.sed > $@ @@ -253,7 +235,7 @@ $(srcdir)/header.sed \ $(srcdir)/proto.str \ $(srcdir)/../version.h \ - $(MKDOC) + stamp-chew bfd.h: $(BFD_H_DEP) echo "$(BFD_H_DEP)" | sed -f $(srcdir)/header.sed > $@