help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problems with pattern rules


From: Paul D. Smith
Subject: Re: Problems with pattern rules
Date: Sat, 17 Jun 2006 21:31:59 -0400

%% Stepan Kasal <address@hidden> writes:
  > libebl_%.so: libebl_%_pic.a libebl_%.map $(libelf) $(libdw)
  >     $(LINK) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \
  >             -Wl,--version-script,$(word 2,$^) \
  >             -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw) $(libmudflap)
  >     $(textrel_check)

  >> Second, when we run this with -j4, make often fails: it creates
  >> certain numbers of *.map files (6-9, perhaps) and then starts
  >> building *.so files; when it comes to a case where the *.map file is
  >> missing, the $(LINK) command fails.
  >> (An observation: the `rm' command that removes the *.map files (they
  >> are intermediate) does not include the missing *.map file, so in a
  >> sense, make knows that it was not created.)

  sk> I incline to think that this is a bug in make, but it'll take me
  sk> several days until I find time to investiate it and eventually
  sk> generate a good bug report.

To start with, we need a more precise description of the problem.  Maybe
you could try to recreate it in a self-contained example without all the
automake (or whatever) stuff?

So, you're saying that at some point make tries to run a rule for
libebl_XXX.so before libebl_XXX.map has been created?  That is very
odd indeed.  I'd be shocked if this were really a bug in GNU make, since
this is make's most basic and long-lived (and tested) area.  But, you
never know.

Are you sure there might not be other ways in which either the .so or
.map files could be created, than this?

The only way to debug this is to run make with debugging enabled
(redirect it to a log file) and then examine what make says about the
.map prerequisite when it decides to build the .so.

  sk> The question remains: which versions of GNU make should I try, and
  sk> where can I grab them?

3.81 is it.  The "development version" available in CVS is almost the
same as 3.81 for now.  I have no idea what patches might have been added
by vendors; if you're concerned you can get the vanilla version but I
seriously doubt there's anything there.  GNU make is available here:

    ftp://ftp.gnu.org/gnu/make/make-3.81.tar.bz2

(or there's a .gz version if you prefer).

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.paulandlesley.org
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist




reply via email to

[Prev in Thread] Current Thread [Next in Thread]