automake
[Top][All Lists]
Advanced

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

Re: Bug when specifying --disable-dependency-tracking (AM_DEP_TRACK)


From: Robert Boehne
Subject: Re: Bug when specifying --disable-dependency-tracking (AM_DEP_TRACK)
Date: Mon, 23 Apr 2001 12:33:48 -0500

Alexandre Oliva wrote:
> 
> On Apr 18, 2001, Robert Boehne <address@hidden> wrote:
> 
> > .c.o:
> >       source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
> >       depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo'
> > @AMDEPBACKSLASH@
> >       $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> >       $(COMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$<
> 
> AFAICT, this was not generated by the automake that corresponds to the
> new m4/depend.m4.  The new version should have `#'s in the beginning
> of the lines containing AMDEPBACKSLASH.  This should have been a
> result of the new if/endif AMDEP rules in depend2.am.
> 
> However, I see the change that introduced AMDEP as a conditional has
> removed the test for the existence of the depcomp script.  Hmm...
> Perhaps this is not necessary, since this very script is used to
> choose a dependency tracking mechanism, so we'd end up with `no' if it
> doesn't exist.  Yeah, that makes sense...
> 

Alexandre:
  I double checked that my aclocal has included the same version
of m4/depend.m4 as the current CVS repository.  It does.
It looks to me like @AMDEPBACKSLASH@ is not conditional, if Automake
is run with --include-deps, then it needs the backslash, if not,
these lines are commented out.  When --include-deps was specified
to Automake, but --disable-dependency-tracking was specified to
configure, then the lines aren't commented out, and the backslash
is still needed because the rules exist but with depmode=none
specified on the command line.  

automake --include-deps gives:

.cxx.lo:
        source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
        depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo'
@AMDEPBACKSLASH@
        $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
        $(LTCXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$<

automake --ignore-deps gives:

.cxx.lo:
        $(LTCXXCOMPILE) -c -o $@  $<

Everything is OK with --ignore-deps, this only is a concern
when dependency tracking is supported in the Makefile.in, but
the user or compiler doesn't want or support it.

The problem seems to me that when dependency tracking was
changed to use automake conditionals, the following code
from depend2.am (current CVS) was not changed properly.
Unconditionally setting AMDEPBACKSLASH='\' will work
around the problem, but these lines need to get removed
at *configure* time when --disable-dependency-tracking is
specified.  This cannot be done with an Automake conditional
because it is done at configure time.

if %?LIBTOOL%
?GENERIC?%EXT%.lo:
?!GENERIC?%LTOBJ%: %SOURCE%
if  %AMDEP%
        source='%SOURCE%' object='%LTOBJ%' libtool=yes @AMDEPBACKSLASH@
        depfile='$(DEPDIR)/%BASE%.Plo' tmpdepfile='$(DEPDIR)/%BASE%.TPlo'
@AMDEPBACKSLASH@
        $(%FPFX%DEPMODE) $(depcomp) @AMDEPBACKSLASH@
endif  %AMDEP%
        %LTCOMPILE% -c -o %LTOBJ% `test -f %SOURCE% || echo
'$(srcdir)/'`%SOURCE%
endif %?LIBTOOL%

Trust me, this is a problem with Automake, I've doublechecked.

Robert

-- 
Robert Boehne             Software Engineer
Ricardo Software   Chicago Technical Center
TEL: (630)789-0003 x. 238
FAX: (630)789-0127
email:  address@hidden



reply via email to

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