Hash :
937775c8
Author :
Date :
2008-10-26T19:29:25
Parallel automake execution: AUTOMAKE_JOBS. * lib/Automake/Config.in (perl_threads): New global. * automake.in: Use it. If the perl supports interpreter-based threading, then use `threads' and `Thread::Queue'. (handle_makefile, handle_makefiles_serial): New functions, factored out from main. (get_number_of_threads): New function, compute number of threads to use, based on environment variable `AUTOMAKE_JOBS' and number of independent makefiles. (handle_makefiles_threaded): New function. Spawn threads, use thread queue to distribute handling the different makefiles. Collect $exit_code values from threads. (main): Use new functions. * aclocal.in: No threads here. * configure.ac: Substitute PERL_THREADS; enabled with perl >= 5.7.2 and when ithreads are available. * bootstrap (dosubst): Likewise. * Makefile.am (do_subst): Likewise. * lib/Automake/Makefile.am (do_subst): Likewise. * lib/Automake/ChannelDefs.pm: Use `Automake::Config' and `threads'. (verb): Prepend thread ID (tid) to verbose messages. * lib/Automake/Channels.pm (msg): Before exiting, flush stderr, needed for worker threads. * lib/Automake/tests/Makefile.am (TESTS_ENVIRONMENT): Also include the build tree path, so Config.pm is found. * tests/parallel-am.test: New test. * tests/Makefile.am: Update. * doc/automake.texi (Invoking Automake): Document AUTOMAKE_JOBS. * NEWS, THANKS: Update. Report about long execution times by Joakim Tjernlund and others. Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
## Process this file with automake to create Makefile.in
## Copyright (C) 2001, 2002, 2003, 2004, 2008 Free Software Foundation, Inc.
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 3, or (at your option)
## any later version.
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with this program. If not, see <http://www.gnu.org/licenses/>.
SUBDIRS = tests
perllibdir = $(pkgvdatadir)/Automake
dist_perllib_DATA = \
ChannelDefs.pm \
Channels.pm \
Condition.pm \
Configure_ac.pm \
DisjConditions.pm \
FileUtils.pm \
General.pm \
Item.pm \
ItemDef.pm \
Location.pm \
Options.pm \
Rule.pm \
RuleDef.pm \
Struct.pm \
Variable.pm \
VarDef.pm \
Version.pm \
XFile.pm \
Wrap.pm
nodist_perllib_DATA = \
Config.pm
CLEANFILES = $(nodist_perllib_DATA)
## We can't use configure to do the substitution here; we must do it
## by hand. We use a funny notation here to avoid configure
## substitutions in our text.
do_subst = in=`echo $@ | sed 's/\.[^.]*$$//'`; sed \
-e 's,[@]APIVERSION[@],$(APIVERSION),g' \
-e 's,[@]PACKAGE[@],$(PACKAGE),g' \
-e 's,[@]PERL[@],$(PERL),g' \
-e 's,[@]PERL_THREADS[@],$(PERL_THREADS),g' \
-e 's,[@]SHELL[@],$(SHELL),g' \
-e 's,[@]VERSION[@],$(VERSION),g' \
-e "s,[@]configure_input[@],Generated from $$in.in; do not edit by hand.,g" \
-e 's,[@]datadir[@],$(datadir),g'
## This file depends on Makefile so it is rebuilt if $(VERSION),
## $(datadir) or other do_subst'ituted variables change.
## Use chmod a-w to prevent people from editing the wrong file by accident.
Config.pm: Config.in Makefile
rm -f Config.tmp Config.pm
$(do_subst) $(srcdir)/Config.in >Config.tmp
chmod +x Config.tmp
chmod a-w Config.tmp
mv -f Config.tmp Config.pm
EXTRA_DIST = Config.in