Edit

kc3-lang/automake/lib/Automake/Makefile.am

Branch :

  • Show log

    Commit

  • Author : Ralf Wildenhues
    Date : 2008-10-26 19:29:25
    Hash : 937775c8
    Message : 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>

  • lib/Automake/Makefile.am
  • ## 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