Hi Philip,
Adding makefile and %.d rules did not help.
What i am wondering here is, if make finds the target "tld2lec_msg.o (see
debug log below) and if it doesn't exist, it should search for the
prerequisite i.e tld2lec_msg.c and search the same in the path given in
VPATH. Why does it use implicit rule for ld2lec_msg.c then pattern rule
ld2lec_msg? If make does this for each and every file, then to build around
500 files will be very slow.
Is there a way to avoid *make *to look for implicit rule ?
Considering target file `tld2lec_msg.o'.
File `tld2lec_msg.o' does not exist.
Considering target file `tld2lec_msg.c'.
Looking for an implicit rule for `tld2lec_msg.c'.
Trying pattern rule with stem `tld2lec_msg'.
Trying implicit prerequisite `tld2lec_msg.y'.
Trying pattern rule with stem `tld2lec_msg'.
Trying implicit prerequisite `tld2lec_msg.l'.
Trying pattern rule with stem `tld2lec_msg'.
Trying implicit prerequisite `tld2lec_msg.w'.
Trying pattern rule with stem `tld2lec_msg'.
Trying implicit prerequisite `tld2lec_msg.w'.
Trying pattern rule with stem `tld2lec_msg.c'.
Trying implicit prerequisite `tld2lec_msg.c,v'.
Trying pattern rule with stem `tld2lec_msg.c'.
Trying implicit prerequisite `RCS/tld2lec_msg.c,v'.
Trying pattern rule with stem `tld2lec_msg.c'.
Trying implicit prerequisite `RCS/tld2lec_msg.c'.
Trying pattern rule with stem `tld2lec_msg.c'.
Trying implicit prerequisite `s.tld2lec_msg.c'.
Trying pattern rule with stem `tld2lec_msg.c'.
Trying implicit prerequisite `SCCS/s.tld2lec_msg.c'.
Trying pattern rule with stem `tld2lec_msg'.
Trying implicit prerequisite `tld2lec_msg.y'.
Looking for a rule with intermediate file `tld2lec_msg.y'.
Avoiding implicit rule recursion.
Trying pattern rule with stem `tld2lec_msg.y'.
Trying implicit prerequisite `tld2lec_msg.y,v'.
Trying pattern rule with stem `tld2lec_msg.y'.
Trying implicit prerequisite `RCS/tld2lec_msg.y,v'.
Trying pattern rule with stem `tld2lec_msg.y'.
Trying implicit prerequisite `RCS/tld2lec_msg.y'.
Trying pattern rule with stem `tld2lec_msg.y'.
Trying implicit prerequisite `s.tld2lec_msg.y'.
Trying pattern rule with stem `tld2lec_msg.y'.
Trying implicit prerequisite `SCCS/s.tld2lec_msg.y'.
Trying pattern rule with stem `tld2lec_msg'.
Trying implicit prerequisite `tld2lec_msg.l'.
Looking for a rule with intermediate file `tld2lec_msg.l'.
Avoiding implicit rule recursion.
Trying pattern rule with stem `tld2lec_msg.l'.
Trying implicit prerequisite `tld2lec_msg.l,v'.
Trying pattern rule with stem `tld2lec_msg.l'.
Trying implicit prerequisite `RCS/tld2lec_msg.l,v'.
Trying pattern rule with stem `tld2lec_msg.l'.
Trying implicit prerequisite `RCS/tld2lec_msg.l'.
Trying pattern rule with stem `tld2lec_msg.l'.
Trying implicit prerequisite `s.tld2lec_msg.l'.
Trying pattern rule with stem `tld2lec_msg.l'.
Trying implicit prerequisite `SCCS/s.tld2lec_msg.l'.
Trying pattern rule with stem `tld2lec_msg'.
Trying implicit prerequisite `tld2lec_msg.w'.
Looking for a rule with intermediate file `tld2lec_msg.w'.
Avoiding implicit rule recursion.
Trying pattern rule with stem `tld2lec_msg.w'.
Trying implicit prerequisite `tld2lec_msg.w,v'.
Trying pattern rule with stem `tld2lec_msg.w'.
Trying implicit prerequisite `RCS/tld2lec_msg.w,v'.
Trying pattern rule with stem `tld2lec_msg.w'.
Trying implicit prerequisite `RCS/tld2lec_msg.w'.
Trying pattern rule with stem `tld2lec_msg.w'.
Trying implicit prerequisite `s.tld2lec_msg.w'.
Trying pattern rule with stem `tld2lec_msg.w'.
Trying implicit prerequisite `SCCS/s.tld2lec_msg.w'.
Trying pattern rule with stem `tld2lec_msg'.
Rejecting impossible implicit prerequisite `tld2lec_msg.w'.
No implicit rule found for `tld2lec_msg.c'.
Finished prerequisites of target file `tld2lec_msg.c'.
No need to remake target `tld2lec_msg.c'; using VPATH name
`..\..\..\.\platform\bt\lec\src/tld2lec_msg.c'.
Finished prerequisites of target file `tld2lec_msg.o'.
Must remake target `tld2lec_msg.o'.
Creating temporary batch file c:\tmp\make29283.sh
CreateProcess(C:\cygwin\bin\sh.exe,C:/cygwin/bin/sh.exe
c:\tmp\make29283.sh,...)
Putting child 0x009643e0 (tld2lec_msg.o) PID 9857296 on the chain.
Live child 0x009643e0 (tld2lec_msg.o) PID 9857296
Compling ..\..\..\.\platform\bt\lec\src/tld2lec_msg.c
Reaping winning child 0x009643e0 PID 9857296
Cleaning up temp batch file c:\tmp\make29283.sh
armcc -MD -c ..\..\..\.\platform\bt\lec\src/tld2lec_msg.c -via b.txt
CreateProcess(c:\Program Files\ARM\ADSv1_2\12_EL\bin\armcc.exe,armcc -MD -c
..\..\..\.\platform\bt\lec\src/tld2lec_msg.c -via b.txt,...)
Live child 0x009643e0 (tld2lec_msg.o) PID 9857296
Reaping winning child 0x009643e0 PID 9857296
Removing child 0x009643e0 PID 9857296 from chain.
Successfully remade target file `tld2lec_msg.o'.
Thanks in Advance!
On Thu, May 6, 2010 at 9:43 PM, Philip Guenther <[email protected]> wrote:
> On Thu, May 6, 2010 at 2:02 AM, nature <[email protected]> wrote:
> > I got away with the problem by making use of the compiler switch "-MD" to
> > get the dependency files during compilation itself .
> > When i included this .d files, make takes lot of time to build (its
> almost
> > hung).
> > Even before this change ,build was slow, but after this change its worst.
> > I run make in the debug mode to find out where the problem is and was
> > surprised to see the log message.
> > Inspite of using VPATH to find for the source files, make searches it
> > elsewhere and at the end it looks into the path specified in the VPATH .
> >
> > What is going wrong here? any suggestions please??
>
> Try adding rules for the Makefile and dependency files that do nothing,
> ala:
>
> Makefile:
> %.d:
>
> Those will short-circuit make's "how do I build this make file?" search.
>
> (If you actually build your Makefile, perhaps from RCS or similar,
> then you should obviously not use an empty rule for it.)
>
>
> Philip Guenther
>
_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make