This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

make: *** No rule to make target `.makeall', needed by `apps'. Stop.

Not only am I totally confused over at http://e2e.ti.com/support/embedded/linux/f/354/t/168196.aspx#613656, but I'm also totally confused here.  I have two supposedly totally parallel folder trees that differ, for the most part, only by the highest level folder name.  In one folder, when I do "make apps", I get the JVM error of the other post I linked above.  However, in the other folder, when I do "make apps", I get the error:

make: *** No rule to make target `.makeall', needed by `apps'.  Stop.

When I do "make --debug apps" I get 

File `.makeall' does not exist.
Must remake target `.makeall'.

This is all involved with a $(MAKESUBDIRS), which I don't fully understand.  However, over in the other folder (that later gets JVM error), it successfully gets into the apps folder.  The debug output is:

File `apps/.makeall' does not exist.
Must remake target `apps/.makeall'.

And it then continues further rather than getting the error.  I see that the failing case says ".makeall" doesn't exist, while the working case says "apps/.makeall" doesn't exist.  Well, those should be coming from $(MAKESUBDIRS), which in BOTH CASES begins with "apps/.makeall", according to an echo command at the end of the prior successfully made target (called 'start' that merely echoes the date and time.)

So if the failing situation has the same beginning of $(MAKESUBDIRS), then why does the failing case hunt for ".makefile" instead of "apps/.makefile"?

Both working and failing case makefiles are IDENTICAL except for where I set an env var for the top level folder name.

Yes, I don't know what I'm doing and I'm totally confused!

  • I'm getting closer.  In both makefiles there's an identical line:

    APPSSUBDIRS = $(sort $(dir $(wildcard *apps*/)))

    In the folder with makefile that works, when I echo out I get:

    echo APPSSUBDIRS=$(APPSSUBDIRS)=
    APPSSUBDIRS=apps/=

    But in the folder with makefile that fails, when I echo out I get:

    echo APPSSUBDIRS=$(APPSSUBDIRS)=
    APPSSUBDIRS=./ apps/=

    So I ask, "Why does the failing case have the extra "./" at the front.  This does NOT match the wildcard "*apps*/".

    Ah, the failing folder uniquely contains a file (not a folder) named "svn-commit-apps.sh".  When I rename it to "svn-commit-applications.sh" the failing makefile begins to work. 

    So it seems that the wildcard is somehow matching "svn-commit-apps.sh".  How can this be?  Even worse, how does the match generate "./" instead of something like "svn-commit-apps.sh", with or without trailing slash.

    For now, I'll leave the rename so the makefile works.  But I'm still interested in an answer in general...