On 29 July 2016 at 19:54, Juergen Sauermann wrote:
After removing the AM_MAKEFLAGS = -j 4, I never saw more than one cc1plus
process, even though
I did make -j 4 clean all at the top level. This might as well be caused by
the way how automake
constructs the makefiles rather than by make itself. No idea what exactly is
happening. But I suppose that
everybody is happy with the current solution.
I don't have anything against the current solution; it probably allows
parallel builds even in environments that don't support make's
communication.
But I was just wondering why wouldn't it work, so I did a clean checkout
of r782 and removed MAKE_J altogether:
for f in src/Makefile.in src/APs/Makefile.in src/native/Makefile.in
do printf '%s\n' g/MAKE_J/d w q | ed $f
done
./configure MAKE_J=invalid #just to be sure
After which I got a makefile which ran sequentially when executed
without options. But when running make -j4 I saw it spawning 4 tasks
(yes, 4 cc1plus processes showed up on top for me). So looks like it
simply does work exactly as advertised for me.
Whatever the reason it doesn't work for you is, I don't think it's a
problem with automake (as I changed your generated *.in files rather
than regenerating them with different version of automake).
Anyway, I saw you introduced some new targets that explicitly call
make with -j and was wondering maybe there's something wrong with
calling it this way, but no, they appear to work as well for me.
Except that I found a small mistake in Makefile.am where you declared
a new target all4 as phony, but forgot to write “all4:” so the recipe
is actually for the .PHONY target itself (meaningless) whereas all4
has its recipe empty:
.PHONY: all4
make -j 4 all
-k