6875240: Reduce Makefile build time by limiting repeated exec's

Webrev is at:
   http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-build-cygwin-6875240/webrev/

Summary of Issue:
  JDK builds with CYGWIN, especially on Windows 2003 X64 are experiencing
  slow build times, when compared to using the MKS Unix toolset.
  Indications are that CYGWIN has a slower fork/exec, and access to
  the file system can be up to 2X slower from CYGWIN tools.
  It is assumed that this is all due to the emulation layer of CYGWIN.

What does this impact:
  This does not impact the hotspot or ant-based builds due to their
  limited use of CYGWIN utilities and minimal fork/exec's.
  So this effort will be directed at the corba and jdk repositories.

Phase One was to see if the corba repository build time could be
improved. Corba build results are as follows (rough timings):

                             Before Changes       After Changes
  MKS corba build time:         7mins                 5mins
  CYGWIN corba build time:     20mins                10mins

Not as good as MKS (http://www.mkssoftware.com/) unix tools,
but much better than before.

(And yes, the corba makefiles may be replaced with an ant script
 some day, which should make it build even faster, but this served
 as an experiment before tackling the larger jdk repository)

Summary of the changes:

  * Clear out .SUFFIXES. to reduce default rule searches

  * Rely on $(CURDIR) defined by GNU make

  * Use 'make -C dir' instead of $(CD) $@; $(MAKE)

  * 'export' make variables that would normally be re-defined in
    sub-makes, this adds more variables to the environment of the
    sub-makes but prevents some fork/exec's from happening.

  * Removed the TIMING logic and some of the echos in the Makefile
    SUBDIRS looping (we could use MAKE="time $(MAKE)" instead).

  * Replace use of the find command with the GNU make wildcard function.

  * Get rid of unnecessary fork/exec's, merge command lines where possible.

-kto

Reply via email to