[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problems with pattern rules
From: |
Stepan Kasal |
Subject: |
Re: Problems with pattern rules |
Date: |
Sat, 17 Jun 2006 23:27:57 +0200 |
User-agent: |
Mutt/1.4.2.1i |
Hello,
an update to my previous mail:
On Sat, Jun 17, 2006 at 03:26:29PM +0200, Stepan Kasal wrote:
> 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)
>
> libebl_%.map: Makefile
> echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' > $@
>
> libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \
> libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \
> libebl_sparc_pic.a libebl_ppc_pic.a libebl_ppc64_pic.a \
> libebl_s390_pic.a
> noinst_DATA = $(libebl_pic:_pic.a=.so)
>
> all: $(noinst_DATA)
>
> The scenario does not work as expected:
>
> First, if we run make all twice, the second run rebuilds something.
This problem is now resolved: libebl_%_pic.a is rebuilt because some
intermediate prerequisities get mentioned in autogenerated
dependencies.
> 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.)
Bit this one is still a mystery for me.
I do not see any connection to the other problem.
I incline to think that this is a bug in make, but it'll take me
several days until I find time to investiate it and eventually
generate a good bug report.
The question remains: which versions of GNU make should I try, and
where can I grab them?
Thanks,
Stepan kasal