Subject: bug#13962: 24.3: build fails when make run as a sub-make process

From: [email-masked]
Date: Thu, 14 Mar 2013 19:07:33 +0100

hello,

while building 24.3 I stumbled on the following problem.

The main Makefile contains the following two lines:

   info_misc=`cd $${thisdir}/doc/misc; ${MAKE} -s echo-info`; \

   (info_misc=`cd doc/misc; ${MAKE} -s echo-info`; \

Everything works nicely if I run make from the shell prompt.

However, I usually build emacs with a script which in turn is run from
a Makefile of mine. If I attempt to build this way, I find
that the definitions of info_misc above contain also the make messages
"Entering directory..." "Leaving directory...", which, of course,
break the build.

The problem is that -s suppresses recipe lines echoing, but NOT
directory change messages from make, which make emits when run in a
sub-make process (which is why I do not get errors when runnig from the
shell prompt, while I get errors when running from my script, run by 
make)

The above lines assume that the main Makefile will never be run by a
sub-make, which of course is true most of the time, but is false in my
case.

Everything is fixed joining --no-print-directory with the -s option, but,
as I was told by paul smith on the help-make mail list, that won't work
for non-GNU make. Following paul's suggestion, I propose:

=> use of MAKELEVEL=0, so that GNU make thinks to be a top-most level:
      info_misc=`cd doc/misc && MAKELEVEL=0 ${MAKE} -s echo-info`
   while other make's won't be disturbed
=> sed-ing the ${MAKE} -s echo-info command to strip off any spurios
   directory change message

Apologies if I have overlooked something

and thank you really very much for maintaining and developing emacs

ciao
gabriele