This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
[toplevel patch] Up with parallelism!
- From: Nathanael Nerode <neroden at twcny dot rr dot com>
- To: gcc-patches at gcc dot gnu dot org, gdb-patches at sources dot redhat dot com, binutils at sources dot redhat dot com, dj at redhat dot com
- Date: Tue, 10 Jun 2003 17:46:12 -0400
- Subject: [toplevel patch] Up with parallelism!
Up with parallelism.
I don't have an actual multiprocessor machine, but I did test with
'make -j 4 bootstrap' and 'make -k -j 4 check'.
* configure.in: Death to serialization dependencies.
* configure: Regenerated.
* Makefile.tpl: Death to serialization dependencies. Death
to .NOTPARALLEL.
* Makefile.in: Regenerated.
Index: configure.in
===================================================================
RCS file: /cvs/gcc/gcc/configure.in,v
retrieving revision 1.237
diff -u -r1.237 configure.in
--- configure.in 3 Jun 2003 20:42:13 -0000 1.237
+++ configure.in 10 Jun 2003 17:24:01 -0000
@@ -103,17 +103,7 @@
### To add a new directory to the tree, first choose whether it is a target
### or a host dependent tool. Then put it into the appropriate list
-### (library or tools, host or target), doing a dependency sort.
-
-# Subdirs will be configured in the order listed in build_configdirs,
-# configdirs, or target_configdirs; see the serialization section below.
-
-# Dependency sorting is only needed when *configuration* must be done in
-# a particular order. In all cases a dependency should be specified in
-# the Makefile, whether or not it's implicitly specified here.
-
-# Double entries in build_configdirs, configdirs, or target_configdirs may
-# cause circular dependencies and break everything horribly.
+### (library or tools, host or target).
# these libraries are used by various programs built for the host environment
#
@@ -1694,51 +1684,6 @@
done
maybe_dependencies=maybedep.tmp
AC_SUBST_FILE(maybe_dependencies)
-
-# Create the serialization dependencies. This uses a temporary file.
-
-AC_ARG_ENABLE([serial-configure],
-[ --disable-serial-[{host,target,build}-]configure
- Don't force sequential configuration of
- sub-packages for the host, target or build
- machine, or of any sub-packages at all])
-
-# These force 'configure's to be done one at a time, to avoid problems
-# with contention over a shared config.cache.
-rm -f serdep.tmp
-echo '# serdep.tmp' > serdep.tmp
-olditem=
-test "x${enable_serial_configure}" = xno ||
-test "x${enable_serial_build_configure}" = xno ||
-for item in ${build_configdirs} ; do
- case ${olditem} in
- "") ;;
- *) echo "configure-build-${item}: configure-build-${olditem}" >> serdep.tmp ;;
- esac
- olditem=${item}
-done
-olditem=
-test "x${enable_serial_configure}" = xno ||
-test "x${enable_serial_host_configure}" = xno ||
-for item in ${configdirs} ; do
- case ${olditem} in
- "") ;;
- *) echo "configure-${item}: configure-${olditem}" >> serdep.tmp ;;
- esac
- olditem=${item}
-done
-olditem=
-test "x${enable_serial_configure}" = xno ||
-test "x${enable_serial_target_configure}" = xno ||
-for item in ${target_configdirs} ; do
- case ${olditem} in
- "") ;;
- *) echo "configure-target-${item}: configure-target-${olditem}" >> serdep.tmp ;;
- esac
- olditem=${item}
-done
-serialization_dependencies=serdep.tmp
-AC_SUBST_FILE(serialization_dependencies)
# Base args. Strip norecursion, cache-file, srcdir, host, build,
# target and nonopt. These are the ones we might not want to pass
Index: Makefile.tpl
===================================================================
RCS file: /cvs/gcc/gcc/Makefile.tpl,v
retrieving revision 1.56
diff -u -r1.56 Makefile.tpl
--- Makefile.tpl 10 Jun 2003 13:36:27 -0000 1.56
+++ Makefile.tpl 10 Jun 2003 17:24:31 -0000
@@ -740,7 +740,7 @@
.PHONY: check do-check
check:
- $(MAKE) do-check NOTPARALLEL=parallel-ok
+ $(MAKE) do-check
# Only include modules actually being configured and built.
do-check: maybe-check-gcc [+
@@ -1307,7 +1307,7 @@
.PHONY: check-c++
check-c++:
- $(MAKE) check-target-libstdc++-v3 check-gcc-c++ NOTPARALLEL=parallel-ok
+ $(MAKE) check-target-libstdc++-v3 check-gcc-c++
.PHONY: install-gcc maybe-install-gcc
maybe-install-gcc:
@@ -1463,11 +1463,6 @@
# all-gcc only depends on all-gas if gas is present and being configured.
@maybe_dependencies@
-# Serialization dependencies. Host configures don't work well in parallel to
-# each other, due to contention over config.cache. Target configures and
-# build configures are similar.
-@serialization_dependencies@
-
# --------------------------------
# Regenerating top level configury
# --------------------------------
@@ -1503,12 +1498,6 @@
# ------------------------------
# Special directives to GNU Make
# ------------------------------
-
-# Tell GNU make 3.79 not to run the top level in parallel. This
-# prevents contention for $builddir/$target/config.cache, as well
-# as minimizing scatter in file system caches.
-NOTPARALLEL = .NOTPARALLEL
-$(NOTPARALLEL):
# Don't pass command-line variables to submakes.
.NOEXPORT: