Hi Xtian,
yes. But I don't want to force all GNU APL users to do that.
And putting it in .bashrc affects all other builds as
well.
/// Jürgen
On 07/30/2016 10:18 PM, Christian
Robert wrote:
Jürgen,
you can add the following line at the end of your .bashrc
alias make='make -j4'
after next login, typing "make clean" will be equivalent of "make
-j4 clean",
typing "make" would be equiv of "make -j4", typing "make all"
equiv "make -j4 all", etc.
typing "\make" would prevent the alias to be interpreted.
typing "make -j8" would be equiv to "make -j4 -j8" and the man
page
says that the last one win.
Xtian.
On 2016-07-30 12:04, Juergen Sauermann wrote:
Hi Kacper,
I see. The *all4* make target is a left over from my first
attempt to solve the problem.
That attempt would use different target sets for different *-j*
values but that didn't work well.
The *all4* will disappear after the next commit.
One reason why I did not like the *-j* on the initial make
approach is that I have several targets
for different builds and I do not want to be forced to say *-j
4* for each of them. I am building GNU apl
quite often and I am just to lazy to type *-j 4 *every time. I
would also believe that for most users an
automatic *-j 4* is more convenient than being forced to type
*-j 4* or else have a slow build.
/// Jürgen
On 07/30/2016 04:30 PM, Kacper Gutowski wrote:
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
|