automake
[Top][All Lists]
Advanced

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

Re: Problem with Libtool library and parallel builds


From: Ralf Wildenhues
Subject: Re: Problem with Libtool library and parallel builds
Date: Thu, 30 Aug 2007 22:00:58 +0200
User-agent: Mutt/1.5.13 (2006-08-11)

Hello Roberto,

Thanks for the report.

* Roberto Bagnara wrote on Thu, Aug 30, 2007 at 09:13:26PM CEST:
> 
> Now that I routinely use a multiprocessor machine, I discovered what seems
> to be a bug somewhere.  Here is how my make -j 3 fails:
> 
> ...
> mkdir .libs
> g++ -DHAVE_CONFIG_H -I. -I../../.. 
> -I/home/roberto/ppl/ppl/interfaces/Prolog/SWI 
> -I/home/roberto/ppl/ppl/interfaces/Prolog -I/interfaces/Prolog 
> -I../../../src -I../../../Watchdog/src -I/usr/lib64/pl-5.6.35/include -W 
> -Wall -g -O2 -MT ppl_swiprolog.lo -MD -MP -MF .deps/ppl_swiprolog.Tpo -c 
> ppl_swiprolog.cc  -fPIC -DPIC -o .libs/ppl_swiprolog.o
> g++ -DHAVE_CONFIG_H -I. -I../../.. 
> -I/home/roberto/ppl/ppl/interfaces/Prolog/SWI 
> -I/home/roberto/ppl/ppl/interfaces/Prolog -I/interfaces/Prolog 
> -I../../../src -I../../../Watchdog/src -I/usr/lib64/pl-5.6.35/include -W 
> -Wall -g -O2 -MT ppl_swiprolog.lo -MD -MP -MF .deps/ppl_swiprolog.Tpo -c 
> ppl_swiprolog.cc -o ppl_swiprolog.o >/dev/null 2>&1
> mv -f .deps/ppl_swiprolog.Tpo .deps/ppl_swiprolog.Po
> mv -f .deps/ppl_swiprolog.Tpo .deps/ppl_swiprolog.Plo
> mv: cannot stat `.deps/ppl_swiprolog.Tpo': No such file or directory
> make[7]: *** [ppl_swiprolog.lo] Error 1
> 
> What happens is that the two compilations share the .deps/ppl_swiprolog.Tpo,
> and one of the mv's may thus fail.  The Makefile I am using comes from the
> following Automake source fragment:
> 
> pkglib_LTLIBRARIES = libppl_swiprolog.la
> nodist_libppl_swiprolog_la_SOURCES = ppl_swiprolog.cc
> libppl_swiprolog_la_LIBADD = \
> $(top_builddir)/src/libppl.la \
> $(top_builddir)/Watchdog/src/libpwl.la \
> @extra_libraries@
> libppl_swiprolog_la_LDFLAGS = -module -avoid-version
> 
> The package has been configured to build both the static and dynamic 
> libraries:
> that is why the same file is compiled twice, with and without -fPIC.

Sorry, I don't see how that can happen: the two different compilations
that are issued for PIC and non-PIC, are issued serially, by one libtool
script invocation.  This isn't the case above: the libtool invocation
would never lead to a .deps/*.Po file, only a *.Plo one.  So it seems
you somewhere have an implicit dependency on ppl_swiprolog.o (or
ppl_swiprolog.$(OBJEXT)) rather than ppl_swiprolog.lo.  I cannot see
how this happens from the above snippet though.  Is there other code
that uses ppl_swiprolog.cc, or another source file matching
ppl_swiprolog.*?

In case of doubt it may be good to see a 'make -j3 -d' output, why that
wants to build ppl_swiprolog.o.

Cheers,
Ralf




reply via email to

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