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