bug-make
[Top][All Lists]
Advanced

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

Re: GNU make troubleshooting


From: Jeffrey Walton
Subject: Re: GNU make troubleshooting
Date: Tue, 11 Jul 2023 10:01:40 -0400

On Tue, Jul 11, 2023 at 9:44 AM Paul Smith <psmith@gnu.org> wrote:
>
> On Mon, 2023-07-10 at 17:17 -0400, Jeffrey Walton wrote:
> > Yes, lots of conditionals and lots of shell'ing, like:
> >
> > GREP ?= grep
> > SED ?= sed
> >
> > ifneq ($(wildcard /usr/xpg4/bin/grep),)
> >   GREP := /usr/xpg4/bin/grep
> > endif
> > ifneq ($(wildcard /usr/xpg4/bin/sed),)
> >   SED := /usr/xpg4/bin/sed
> > endif
> >
> > SUN_COMPILER := $(shell $(CXX) -V 2>&1 | $(GREP) -i -c -E 'CC:
> > (Sun|Studio)')
> > GCC_COMPILER := $(shell $(CXX) --version 2>/dev/null | $(GREP) -v -E
> > '(llvm|clang)' | $(GREP) -i -c -E '(gcc|g\+\+)')
> > XLC_COMPILER := $(shell $(CXX) -qversion 2>/dev/null |$(GREP) -i -c
> > "IBM XL")
> > CLANG_COMPILER := $(shell $(CXX) --version 2>/dev/null | $(GREP) -i -
> > c
> > -E '(llvm|clang)')
> > INTEL_COMPILER := $(shell $(CXX) --version 2>/dev/null | $(GREP) -i -
> > c
> > '\(icc\)')
> > ...
>
> But, what about this do you want to know?

I want to see an output for the evaluation of each statement, like
what I would see with 'set -x'. I need to know where something goes
sideways when shell'ing out in a pipe.

> If what you want to know is "what was the result of all this", the
> database print (-p) option will show you what make computed as the
> final value for each of these variables, and also what linenumber of
> the makefile was used to set the final version:
>
>   # makefile (from 'Makefile', line 12)
>   GCC_COMPILER := 0
>    ...
>   # makefile (from 'Makefile', line 1)
>   GREP = grep
>    ...
>
> I don't want to suggest that everything is just peachy.  There are lots
> of rough edges for working with GNU Make and Makefiles, there is no
> question about that.  I'm just trying to understand clearly what things
> will actually be useful, rather than simply spewing out more output
> similar to what -d does.

Here's 'make -d' for a project I help maintain. No info on the
evaluations shown above, which would be useful to me. There is lots of
information that looks like it would be useful to a GNU Make
maintainer.

$ make -d
GNU Make 4.3
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Reading makefile 'GNUmakefile'...
Updating makefiles....
 Considering target file 'GNUmakefile'.
  Looking for an implicit rule for 'GNUmakefile'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.o'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.c'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.cc'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.C'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.cpp'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.p'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.f'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.F'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.m'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.r'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.s'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.S'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.mod'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.sh'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile,v'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'RCS/GNUmakefile,v'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'RCS/GNUmakefile'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 's.GNUmakefile'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'SCCS/s.GNUmakefile'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.o'.
  Looking for a rule with intermediate file 'GNUmakefile.o'.
   Avoiding implicit rule recursion.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.cpp'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.c'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.cc'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.C'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.p'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.f'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.F'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.m'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.r'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.s'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.S'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.mod'.
   Trying pattern rule with stem 'GNUmakefile.o'.
   Trying implicit prerequisite 'GNUmakefile.o,v'.
   Trying pattern rule with stem 'GNUmakefile.o'.
   Trying implicit prerequisite 'RCS/GNUmakefile.o,v'.
   Trying pattern rule with stem 'GNUmakefile.o'.
   Trying implicit prerequisite 'RCS/GNUmakefile.o'.
   Trying pattern rule with stem 'GNUmakefile.o'.
   Trying implicit prerequisite 's.GNUmakefile.o'.
   Trying pattern rule with stem 'GNUmakefile.o'.
   Trying implicit prerequisite 'SCCS/s.GNUmakefile.o'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.cpp'.
   Looking for a rule with intermediate file 'GNUmakefile.cpp'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'GNUmakefile.cpp'.
    Trying implicit prerequisite 'GNUmakefile.cpp,v'.
    Trying pattern rule with stem 'GNUmakefile.cpp'.
    Trying implicit prerequisite 'RCS/GNUmakefile.cpp,v'.
    Trying pattern rule with stem 'GNUmakefile.cpp'.
    Trying implicit prerequisite 'RCS/GNUmakefile.cpp'.
    Trying pattern rule with stem 'GNUmakefile.cpp'.
    Trying implicit prerequisite 's.GNUmakefile.cpp'.
    Trying pattern rule with stem 'GNUmakefile.cpp'.
    Trying implicit prerequisite 'SCCS/s.GNUmakefile.cpp'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.c'.
   Looking for a rule with intermediate file 'GNUmakefile.c'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.y'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.l'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.w'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.w'.
    Trying pattern rule with stem 'GNUmakefile.c'.
    Trying implicit prerequisite 'GNUmakefile.c,v'.
    Trying pattern rule with stem 'GNUmakefile.c'.
    Trying implicit prerequisite 'RCS/GNUmakefile.c,v'.
    Trying pattern rule with stem 'GNUmakefile.c'.
    Trying implicit prerequisite 'RCS/GNUmakefile.c'.
    Trying pattern rule with stem 'GNUmakefile.c'.
    Trying implicit prerequisite 's.GNUmakefile.c'.
    Trying pattern rule with stem 'GNUmakefile.c'.
    Trying implicit prerequisite 'SCCS/s.GNUmakefile.c'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.y'.
    Looking for a rule with intermediate file 'GNUmakefile.y'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'GNUmakefile.y'.
     Trying implicit prerequisite 'GNUmakefile.y,v'.
     Trying pattern rule with stem 'GNUmakefile.y'.
     Trying implicit prerequisite 'RCS/GNUmakefile.y,v'.
     Trying pattern rule with stem 'GNUmakefile.y'.
     Trying implicit prerequisite 'RCS/GNUmakefile.y'.
     Trying pattern rule with stem 'GNUmakefile.y'.
     Trying implicit prerequisite 's.GNUmakefile.y'.
     Trying pattern rule with stem 'GNUmakefile.y'.
     Trying implicit prerequisite 'SCCS/s.GNUmakefile.y'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.l'.
    Looking for a rule with intermediate file 'GNUmakefile.l'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'GNUmakefile.l'.
     Trying implicit prerequisite 'GNUmakefile.l,v'.
     Trying pattern rule with stem 'GNUmakefile.l'.
     Trying implicit prerequisite 'RCS/GNUmakefile.l,v'.
     Trying pattern rule with stem 'GNUmakefile.l'.
     Trying implicit prerequisite 'RCS/GNUmakefile.l'.
     Trying pattern rule with stem 'GNUmakefile.l'.
     Trying implicit prerequisite 's.GNUmakefile.l'.
     Trying pattern rule with stem 'GNUmakefile.l'.
     Trying implicit prerequisite 'SCCS/s.GNUmakefile.l'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.w'.
    Looking for a rule with intermediate file 'GNUmakefile.w'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'GNUmakefile.w'.
     Trying implicit prerequisite 'GNUmakefile.w,v'.
     Trying pattern rule with stem 'GNUmakefile.w'.
     Trying implicit prerequisite 'RCS/GNUmakefile.w,v'.
     Trying pattern rule with stem 'GNUmakefile.w'.
     Trying implicit prerequisite 'RCS/GNUmakefile.w'.
     Trying pattern rule with stem 'GNUmakefile.w'.
     Trying implicit prerequisite 's.GNUmakefile.w'.
     Trying pattern rule with stem 'GNUmakefile.w'.
     Trying implicit prerequisite 'SCCS/s.GNUmakefile.w'.
    Trying pattern rule with stem 'GNUmakefile'.
    Rejecting impossible implicit prerequisite 'GNUmakefile.w'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.cc'.
   Looking for a rule with intermediate file 'GNUmakefile.cc'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'GNUmakefile.cc'.
    Trying implicit prerequisite 'GNUmakefile.cc,v'.
    Trying pattern rule with stem 'GNUmakefile.cc'.
    Trying implicit prerequisite 'RCS/GNUmakefile.cc,v'.
    Trying pattern rule with stem 'GNUmakefile.cc'.
    Trying implicit prerequisite 'RCS/GNUmakefile.cc'.
    Trying pattern rule with stem 'GNUmakefile.cc'.
    Trying implicit prerequisite 's.GNUmakefile.cc'.
    Trying pattern rule with stem 'GNUmakefile.cc'.
    Trying implicit prerequisite 'SCCS/s.GNUmakefile.cc'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.C'.
   Looking for a rule with intermediate file 'GNUmakefile.C'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'GNUmakefile.C'.
    Trying implicit prerequisite 'GNUmakefile.C,v'.
    Trying pattern rule with stem 'GNUmakefile.C'.
    Trying implicit prerequisite 'RCS/GNUmakefile.C,v'.
    Trying pattern rule with stem 'GNUmakefile.C'.
    Trying implicit prerequisite 'RCS/GNUmakefile.C'.
    Trying pattern rule with stem 'GNUmakefile.C'.
    Trying implicit prerequisite 's.GNUmakefile.C'.
    Trying pattern rule with stem 'GNUmakefile.C'.
    Trying implicit prerequisite 'SCCS/s.GNUmakefile.C'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.p'.
   Looking for a rule with intermediate file 'GNUmakefile.p'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.web'.
    Trying pattern rule with stem 'GNUmakefile.p'.
    Trying implicit prerequisite 'GNUmakefile.p,v'.
    Trying pattern rule with stem 'GNUmakefile.p'.
    Trying implicit prerequisite 'RCS/GNUmakefile.p,v'.
    Trying pattern rule with stem 'GNUmakefile.p'.
    Trying implicit prerequisite 'RCS/GNUmakefile.p'.
    Trying pattern rule with stem 'GNUmakefile.p'.
    Trying implicit prerequisite 's.GNUmakefile.p'.
    Trying pattern rule with stem 'GNUmakefile.p'.
    Trying implicit prerequisite 'SCCS/s.GNUmakefile.p'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.web'.
    Looking for a rule with intermediate file 'GNUmakefile.web'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'GNUmakefile.web'.
     Trying implicit prerequisite 'GNUmakefile.web,v'.
     Trying pattern rule with stem 'GNUmakefile.web'.
     Trying implicit prerequisite 'RCS/GNUmakefile.web,v'.
     Trying pattern rule with stem 'GNUmakefile.web'.
     Trying implicit prerequisite 'RCS/GNUmakefile.web'.
     Trying pattern rule with stem 'GNUmakefile.web'.
     Trying implicit prerequisite 's.GNUmakefile.web'.
     Trying pattern rule with stem 'GNUmakefile.web'.
     Trying implicit prerequisite 'SCCS/s.GNUmakefile.web'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.f'.
   Looking for a rule with intermediate file 'GNUmakefile.f'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.F'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.r'.
    Trying pattern rule with stem 'GNUmakefile.f'.
    Trying implicit prerequisite 'GNUmakefile.f,v'.
    Trying pattern rule with stem 'GNUmakefile.f'.
    Trying implicit prerequisite 'RCS/GNUmakefile.f,v'.
    Trying pattern rule with stem 'GNUmakefile.f'.
    Trying implicit prerequisite 'RCS/GNUmakefile.f'.
    Trying pattern rule with stem 'GNUmakefile.f'.
    Trying implicit prerequisite 's.GNUmakefile.f'.
    Trying pattern rule with stem 'GNUmakefile.f'.
    Trying implicit prerequisite 'SCCS/s.GNUmakefile.f'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.F'.
    Looking for a rule with intermediate file 'GNUmakefile.F'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'GNUmakefile.F'.
     Trying implicit prerequisite 'GNUmakefile.F,v'.
     Trying pattern rule with stem 'GNUmakefile.F'.
     Trying implicit prerequisite 'RCS/GNUmakefile.F,v'.
     Trying pattern rule with stem 'GNUmakefile.F'.
     Trying implicit prerequisite 'RCS/GNUmakefile.F'.
     Trying pattern rule with stem 'GNUmakefile.F'.
     Trying implicit prerequisite 's.GNUmakefile.F'.
     Trying pattern rule with stem 'GNUmakefile.F'.
     Trying implicit prerequisite 'SCCS/s.GNUmakefile.F'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.r'.
    Looking for a rule with intermediate file 'GNUmakefile.r'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'GNUmakefile'.
     Rejecting impossible implicit prerequisite 'GNUmakefile.l'.
     Trying pattern rule with stem 'GNUmakefile.r'.
     Trying implicit prerequisite 'GNUmakefile.r,v'.
     Trying pattern rule with stem 'GNUmakefile.r'.
     Trying implicit prerequisite 'RCS/GNUmakefile.r,v'.
     Trying pattern rule with stem 'GNUmakefile.r'.
     Trying implicit prerequisite 'RCS/GNUmakefile.r'.
     Trying pattern rule with stem 'GNUmakefile.r'.
     Trying implicit prerequisite 's.GNUmakefile.r'.
     Trying pattern rule with stem 'GNUmakefile.r'.
     Trying implicit prerequisite 'SCCS/s.GNUmakefile.r'.
   Trying pattern rule with stem 'GNUmakefile'.
   Rejecting impossible implicit prerequisite 'GNUmakefile.F'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.m'.
   Looking for a rule with intermediate file 'GNUmakefile.m'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.ym'.
    Trying pattern rule with stem 'GNUmakefile.m'.
    Trying implicit prerequisite 'GNUmakefile.m,v'.
    Trying pattern rule with stem 'GNUmakefile.m'.
    Trying implicit prerequisite 'RCS/GNUmakefile.m,v'.
    Trying pattern rule with stem 'GNUmakefile.m'.
    Trying implicit prerequisite 'RCS/GNUmakefile.m'.
    Trying pattern rule with stem 'GNUmakefile.m'.
    Trying implicit prerequisite 's.GNUmakefile.m'.
    Trying pattern rule with stem 'GNUmakefile.m'.
    Trying implicit prerequisite 'SCCS/s.GNUmakefile.m'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.ym'.
    Looking for a rule with intermediate file 'GNUmakefile.ym'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'GNUmakefile.ym'.
     Trying implicit prerequisite 'GNUmakefile.ym,v'.
     Trying pattern rule with stem 'GNUmakefile.ym'.
     Trying implicit prerequisite 'RCS/GNUmakefile.ym,v'.
     Trying pattern rule with stem 'GNUmakefile.ym'.
     Trying implicit prerequisite 'RCS/GNUmakefile.ym'.
     Trying pattern rule with stem 'GNUmakefile.ym'.
     Trying implicit prerequisite 's.GNUmakefile.ym'.
     Trying pattern rule with stem 'GNUmakefile.ym'.
     Trying implicit prerequisite 'SCCS/s.GNUmakefile.ym'.
   Trying pattern rule with stem 'GNUmakefile'.
   Rejecting impossible implicit prerequisite 'GNUmakefile.r'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.s'.
   Looking for a rule with intermediate file 'GNUmakefile.s'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.S'.
    Trying pattern rule with stem 'GNUmakefile.s'.
    Trying implicit prerequisite 'GNUmakefile.s,v'.
    Trying pattern rule with stem 'GNUmakefile.s'.
    Trying implicit prerequisite 'RCS/GNUmakefile.s,v'.
    Trying pattern rule with stem 'GNUmakefile.s'.
    Trying implicit prerequisite 'RCS/GNUmakefile.s'.
    Trying pattern rule with stem 'GNUmakefile.s'.
    Trying implicit prerequisite 's.GNUmakefile.s'.
    Trying pattern rule with stem 'GNUmakefile.s'.
    Trying implicit prerequisite 'SCCS/s.GNUmakefile.s'.
    Trying pattern rule with stem 'GNUmakefile'.
    Trying implicit prerequisite 'GNUmakefile.S'.
    Looking for a rule with intermediate file 'GNUmakefile.S'.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Avoiding implicit rule recursion.
     Trying pattern rule with stem 'GNUmakefile.S'.
     Trying implicit prerequisite 'GNUmakefile.S,v'.
     Trying pattern rule with stem 'GNUmakefile.S'.
     Trying implicit prerequisite 'RCS/GNUmakefile.S,v'.
     Trying pattern rule with stem 'GNUmakefile.S'.
     Trying implicit prerequisite 'RCS/GNUmakefile.S'.
     Trying pattern rule with stem 'GNUmakefile.S'.
     Trying implicit prerequisite 's.GNUmakefile.S'.
     Trying pattern rule with stem 'GNUmakefile.S'.
     Trying implicit prerequisite 'SCCS/s.GNUmakefile.S'.
   Trying pattern rule with stem 'GNUmakefile'.
   Rejecting impossible implicit prerequisite 'GNUmakefile.S'.
   Trying pattern rule with stem 'GNUmakefile'.
   Trying implicit prerequisite 'GNUmakefile.mod'.
   Looking for a rule with intermediate file 'GNUmakefile.mod'.
    Avoiding implicit rule recursion.
    Avoiding implicit rule recursion.
    Trying pattern rule with stem 'GNUmakefile.mod'.
    Trying implicit prerequisite 'GNUmakefile.mod,v'.
    Trying pattern rule with stem 'GNUmakefile.mod'.
    Trying implicit prerequisite 'RCS/GNUmakefile.mod,v'.
    Trying pattern rule with stem 'GNUmakefile.mod'.
    Trying implicit prerequisite 'RCS/GNUmakefile.mod'.
    Trying pattern rule with stem 'GNUmakefile.mod'.
    Trying implicit prerequisite 's.GNUmakefile.mod'.
    Trying pattern rule with stem 'GNUmakefile.mod'.
    Trying implicit prerequisite 'SCCS/s.GNUmakefile.mod'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.c'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.cc'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.C'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.cpp'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.p'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.f'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.F'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.m'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.r'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.s'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.S'.
  Trying pattern rule with stem 'GNUmakefile'.
  Rejecting impossible implicit prerequisite 'GNUmakefile.mod'.
  Trying pattern rule with stem 'GNUmakefile'.
  Trying implicit prerequisite 'GNUmakefile.sh'.
  Looking for a rule with intermediate file 'GNUmakefile.sh'.
   Avoiding implicit rule recursion.
   Trying pattern rule with stem 'GNUmakefile.sh'.
   Trying implicit prerequisite 'GNUmakefile.sh,v'.
   Trying pattern rule with stem 'GNUmakefile.sh'.
   Trying implicit prerequisite 'RCS/GNUmakefile.sh,v'.
   Trying pattern rule with stem 'GNUmakefile.sh'.
   Trying implicit prerequisite 'RCS/GNUmakefile.sh'.
   Trying pattern rule with stem 'GNUmakefile.sh'.
   Trying implicit prerequisite 's.GNUmakefile.sh'.
   Trying pattern rule with stem 'GNUmakefile.sh'.
   Trying implicit prerequisite 'SCCS/s.GNUmakefile.sh'.
  No implicit rule found for 'GNUmakefile'.
  Finished prerequisites of target file 'GNUmakefile'.
 No need to remake target 'GNUmakefile'.
Updating goal targets....
Considering target file 'default'.
 File 'default' does not exist.
  Considering target file 'cryptest.exe'.
   File 'cryptest.exe' does not exist.
    Considering target file 'libcryptopp.a'.
     File 'libcryptopp.a' does not exist.
      Considering target file 'cryptlib.o'.
       File 'cryptlib.o' does not exist.
       Looking for an implicit rule for 'cryptlib.o'.
       Trying pattern rule with stem 'cryptlib'.
       Trying implicit prerequisite 'cryptlib.cpp'.
       Found an implicit rule for 'cryptlib.o'.
        Considering target file 'cryptlib.cpp'.
         Looking for an implicit rule for 'cryptlib.cpp'.
         Trying pattern rule with stem 'cryptlib.cpp'.
         Trying implicit prerequisite 'cryptlib.cpp,v'.
         Trying pattern rule with stem 'cryptlib.cpp'.
         Trying implicit prerequisite 'RCS/cryptlib.cpp,v'.
         Trying pattern rule with stem 'cryptlib.cpp'.
         Trying implicit prerequisite 'RCS/cryptlib.cpp'.
         Trying pattern rule with stem 'cryptlib.cpp'.
         Trying implicit prerequisite 's.cryptlib.cpp'.
         Trying pattern rule with stem 'cryptlib.cpp'.
         Trying implicit prerequisite 'SCCS/s.cryptlib.cpp'.
         No implicit rule found for 'cryptlib.cpp'.
         Finished prerequisites of target file 'cryptlib.cpp'.
        No need to remake target 'cryptlib.cpp'.
       Finished prerequisites of target file 'cryptlib.o'.
      Must remake target 'cryptlib.o'.
g++ -DNDEBUG -g2 -O3 -fPIC -pthread -pipe -c cryptlib.cpp

> I do agree with Bruno that there is a lot of implicit knowledge for
> working with Makefiles that is not well described, or in some cases
> even hinted at, in the manual.  Maybe I'll try to add a new chapter
> this weekend... writing will be a nice change from hacking.  I've spent
> enough time on StackOverflow that I have a good idea of the places
> people have troubles.

I'm not sure what folks are doing on Stack Overflow.

We use GNU Make for its power. If we did not want/need the power, then
we would use an anemic make, like Posix make.

Jeff



reply via email to

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