public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
To: Steve Ellcey <sje@cup.hp.com>
Cc: binutils@sourceware.org, "H.J. Lu" <hjl.tools@gmail.com>
Subject: Re: PATCH: PR binutils/12283: bfd/doc doesn't support parallel build
Date: Fri, 04 Feb 2011 06:34:00 -0000	[thread overview]
Message-ID: <20110204063423.GC14132@gmx.de> (raw)
In-Reply-To: <1296498781.12233.80.camel@hpsje.cup.hp.com>

* 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  <Ralf.Wildenhues@gmx.de>

	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 > $@

  reply	other threads:[~2011-02-04  6:34 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-02 17:00 H.J. Lu
2010-12-02 18:08 ` Ralf Wildenhues
2010-12-02 18:16   ` H.J. Lu
2010-12-02 18:20     ` Ralf Wildenhues
2010-12-02 18:22       ` Ralf Wildenhues
2010-12-02 18:32         ` Ralf Wildenhues
2010-12-02 18:40           ` H.J. Lu
2010-12-02 19:01             ` Ralf Wildenhues
2010-12-19 14:37           ` Ralf Wildenhues
2010-12-19 18:23             ` H.J. Lu
2011-01-27 23:57               ` Steve Ellcey
2011-01-28 20:15                 ` PATCH: import move-if-change from gnulib (was: PATCH: PR binutils/12283: bfd/doc doesn't support parallel build) Ralf Wildenhues
2011-01-28 21:12                   ` Steve Ellcey
2011-02-12 15:48                   ` Ralf Wildenhues
2011-01-28 23:32               ` PATCH: PR binutils/12283: bfd/doc doesn't support parallel build Steve Ellcey
2011-01-29  9:42                 ` Ralf Wildenhues
2011-01-31 18:33                   ` Steve Ellcey
2011-02-04  6:34                     ` Ralf Wildenhues [this message]
2011-02-04 17:51                       ` Andreas Schwab
2011-02-16  0:07                         ` Steve Ellcey
2011-02-16  5:09                           ` Ralf Wildenhues
2011-02-16 18:36                             ` Andreas Schwab
2011-02-05  0:25                       ` Steve Ellcey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110204063423.GC14132@gmx.de \
    --to=ralf.wildenhues@gmx.de \
    --cc=binutils@sourceware.org \
    --cc=hjl.tools@gmail.com \
    --cc=sje@cup.hp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).