This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]