This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Makefile fix


> Date: Sun, 9 Feb 2014 17:41:36 -0800
> From: Doug Evans <xdje42@gmail.com>
> 
> On Sun, Feb 9, 2014 at 4:58 PM, Doug Evans <xdje42@gmail.com> wrote:
> > On Sat, Feb 8, 2014 at 3:41 AM, Mark Kettenis <mark.kettenis@xs4all.nl> wrote:
> >>> Date: Fri, 7 Feb 2014 21:00:35 -0800
> >>> From: Doug Evans <dje@google.com>
> >>>
> >>> On Tue, Feb 4, 2014 at 2:33 AM, Mark Kettenis <mark.kettenis@xs4all.nl> wrote:
> >>> > The diff below fixes an issue that has been bothering me for quite a
> >>> > while.  When using OpenBSD make, almost everything in gdb/ gets
> >>> > rebuilt.  The problem is the use of the all-lib phony target, which is
> >>> > always considered to be out-of-date, and used as a prerequisite of
> >>> > libgnu.a and the gnulib string.h, which are therefore also considered
> >>> > to be out-of-date.  I have no idea why this problem doesn't show up
> >>> > with GNU make.  But the GNU make manual clearly states that phony
> >>> > targets should not be prerequisites of real target files:
> >>> >
> >>> >   <http://www.gnu.org/software/make/manual/make.html#Phony-Targets>
> >>> >
> >>> > It seems to me that the phony target can be easily avoided; see the
> >>> > diff below.  But perhaps I'm missing something?
> >>> >
> >>> >
> >>> >
> >>> > diff --git a/gdb/Makefile.in b/gdb/Makefile.in
> >>> > index ed84e35..937478b 100644
> >>> > --- a/gdb/Makefile.in
> >>> > +++ b/gdb/Makefile.in
> >>> > @@ -1263,10 +1263,8 @@ gdb$(EXEEXT): gdb.o $(LIBGDB_OBS) $(ADD_DEPS) $(CDEPS) $(TDEPLIBS)
> >>> >                 $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES)
> >>> >
> >>> >  # Convenience rule to handle recursion.
> >>> > -$(LIBGNU) $(GNULIB_H): all-lib
> >>> > -all-lib: $(GNULIB_BUILDDIR)/Makefile
> >>> > +$(LIBGNU) $(GNULIB_H): $(GNULIB_BUILDDIR)/Makefile
> >>> >         @$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS=$(GNULIB_BUILDDIR) subdir_do
> >>> > -.PHONY: all-lib
> >>> >
> >>> >  # Convenience rule to handle recursion.
> >>> >  .PHONY: all-data-directory
> >>>
> >>> I found the patch where this went in but I couldn't find anything interesting.
> >>> "all-lib" is there, I'm guessing, just as a convenience for typing,
> >>> but I'm not sure how often it's used so if it's getting in the way I'm
> >>> ok with this change.
> >>> I can't think of any problems with the patch.
> >>> [And we could still keep all-lib as a convenience rule, but I'm ok
> >>> with deleting it for now.]
> >>
> >> Thanks.  Here's what I committed:
> >>
> >> From 0a6bd22df74bb5b6ffa30c3b10243a34d9055c32 Mon Sep 17 00:00:00 2001
> >> From: Mark Kettenis <kettenis@gnu.org>
> >> Date: Sat, 8 Feb 2014 12:36:17 +0100
> >> Subject: [PATCH] A phony target should not be a prerequisite of a real target
> >>  file
> >>
> >> gdb/ChangeLog:
> >>
> >>         * Makefile.in (all-lib): Remove.
> >>         ($(LIBGNU) $(GNULIB_H)): Replace with gits of remove all-lib target.
> >> ---
> >>  gdb/ChangeLog   | 5 +++++
> >>  gdb/Makefile.in | 4 +---
> >>  2 files changed, 6 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> >> index c2c9236..bb64a23 100644
> >> --- a/gdb/ChangeLog
> >> +++ b/gdb/ChangeLog
> >> @@ -1,3 +1,8 @@
> >> +2014-02-08  Mark Kettenis  <kettenis@gnu.org>
> >> +
> >> +       * Makefile.in (all-lib): Remove.
> >> +       ($(LIBGNU) $(GNULIB_H)): Replace with gits of remove all-lib target.
> >> +
> >>  2014-02-07  Doug Evans  <dje@google.com>
> >>
> >>         * extension-priv.h (extension_language_script_ops): Add comment.
> >> diff --git a/gdb/Makefile.in b/gdb/Makefile.in
> >> index e714550..0976615 100644
> >> --- a/gdb/Makefile.in
> >> +++ b/gdb/Makefile.in
> >> @@ -1265,10 +1265,8 @@ gdb$(EXEEXT): gdb.o $(LIBGDB_OBS) $(ADD_DEPS) $(CDEPS) $(TDEPLIBS)
> >>                 $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES)
> >>
> >>  # Convenience rule to handle recursion.
> >> -$(LIBGNU) $(GNULIB_H): all-lib
> >> -all-lib: $(GNULIB_BUILDDIR)/Makefile
> >> +$(LIBGNU) $(GNULIB_H): $(GNULIB_BUILDDIR)/Makefile
> >>         @$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS=$(GNULIB_BUILDDIR) subdir_do
> >> -.PHONY: all-lib
> >>
> >>  # Convenience rule to handle recursion.
> >>  .PHONY: all-data-directory
> >> --
> >> 1.8.5.3
> >>
> >
> > I'm getting gnulib related build failures on linux, I'm guessing it's
> > this change.
> > Sorry 'bout that.
> > I think it's that a parallel make is now entering build-gnulib twice.
> > So we need to serialize it, without using a phony target.
> 
> I reverted the patch to get linux builds going.
> Again., sorry 'bout that.

Thanks.  Didn't realize it was safe to do parellel builds of gdb.

> I'll work on a different fix on Monday, unless you want to take it.

The problem here as having two targets with exactly the same rule.
Easiest way to fix this is to simply drop $(LIBGNU) as target and have only:

$(GNULIB_H): $(GNULIB_BUILDDIR)/Makefile
        @$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS=$(GNULIB_BUILDDIR) subdir_do

I don't think that will break anything.  But then I thought the same
about the previous diff...


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]