Wed, 02 Sep 2009 09:20:17 -0700
6875240: Reduce Makefile build time by limiting repeated exec's (mostly for cygwin building)
Reviewed-by: jjg, iris
duke@1 | 1 | # |
ohair@114 | 2 | # Copyright 1998-2009 Sun Microsystems, Inc. All Rights Reserved. |
duke@1 | 3 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
duke@1 | 4 | # |
duke@1 | 5 | # This code is free software; you can redistribute it and/or modify it |
duke@1 | 6 | # under the terms of the GNU General Public License version 2 only, as |
duke@1 | 7 | # published by the Free Software Foundation. Sun designates this |
duke@1 | 8 | # particular file as subject to the "Classpath" exception as provided |
duke@1 | 9 | # by Sun in the LICENSE file that accompanied this code. |
duke@1 | 10 | # |
duke@1 | 11 | # This code is distributed in the hope that it will be useful, but WITHOUT |
duke@1 | 12 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
duke@1 | 13 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
duke@1 | 14 | # version 2 for more details (a copy is included in the LICENSE file that |
duke@1 | 15 | # accompanied this code). |
duke@1 | 16 | # |
duke@1 | 17 | # You should have received a copy of the GNU General Public License version |
duke@1 | 18 | # 2 along with this work; if not, write to the Free Software Foundation, |
duke@1 | 19 | # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
duke@1 | 20 | # |
duke@1 | 21 | # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
duke@1 | 22 | # CA 95054 USA or visit www.sun.com if you need additional information or |
duke@1 | 23 | # have any questions. |
duke@1 | 24 | # |
duke@1 | 25 | |
duke@1 | 26 | # Input: BUILDDIR PACKAGE PKGDIR PROGRAM BUILDTOOL_SOURCE_ROOT BUILDTOOL_MAIN |
ohair@114 | 27 | |
ohair@114 | 28 | # All subdirectories under the package root for the tool (max depth 4) |
ohair@114 | 29 | _WC_DIRS = * */* */*/* */*/*/* |
ohair@114 | 30 | |
duke@1 | 31 | BUILDTOOL_MAIN_SOURCE_FILE = $(BUILDTOOL_SOURCE_ROOT)/$(BUILDTOOL_MAIN) |
duke@1 | 32 | BUILDTOOL_MANIFEST_FILE = $(BUILDTOOLCLASSDIR)/$(PROGRAM)_manifest.mf |
duke@1 | 33 | BUILDTOOL_JAR_FILE = $(BUILDTOOLJARDIR)/$(PROGRAM).jar |
ohair@114 | 34 | BUILTTOOL_MAINCLASS = $(subst /,.,$(BUILDTOOL_MAIN:%.java=%)) |
duke@1 | 35 | |
ohair@114 | 36 | # Wildcard patterns that find all the sources for this build tool |
ohair@114 | 37 | BUILDTOOL_WC_PATTERNS = $(BUILDTOOL_SOURCE_ROOT)/$(PKGDIR)/*.java \ |
ohair@114 | 38 | $(patsubst %, $(BUILDTOOL_SOURCE_ROOT)/$(PKGDIR)/%/*.java, $(_WC_DIRS)) |
ohair@114 | 39 | |
ohair@114 | 40 | # Wildcard expansion that finds all the files |
ohair@114 | 41 | BUILDTOOL_SRC_FILES := $(wildcard $(BUILDTOOL_WC_PATTERNS)) |
ohair@114 | 42 | |
ohair@114 | 43 | all build: $(BUILDTOOL_JAR_FILE) |
duke@1 | 44 | |
duke@1 | 45 | $(BUILDTOOL_MANIFEST_FILE): $(BUILDTOOL_MAIN_SOURCE_FILE) |
duke@1 | 46 | @$(prep-target) |
duke@1 | 47 | $(ECHO) "Main-Class: $(BUILTTOOL_MAINCLASS)" > $@ |
duke@1 | 48 | |
ohair@114 | 49 | $(BUILDTOOL_JAR_FILE): $(BUILDTOOL_MANIFEST_FILE) $(BUILDTOOL_SRC_FILES) |
duke@1 | 50 | @$(prep-target) |
duke@1 | 51 | @$(MKDIR) -p $(BUILDTOOLCLASSDIR) |
duke@1 | 52 | $(BOOT_JAVAC_CMD) -d $(BUILDTOOLCLASSDIR) \ |
duke@1 | 53 | -sourcepath $(BUILDTOOL_SOURCE_ROOT) $(BUILDTOOL_MAIN_SOURCE_FILE) |
duke@1 | 54 | $(BOOT_JAR_CMD) cfm $@ $(BUILDTOOL_MANIFEST_FILE) \ |
duke@1 | 55 | -C $(BUILDTOOLCLASSDIR) $(PKGDIR) \ |
duke@1 | 56 | $(JAR_JFLAGS) || $(RM) $@ |
duke@1 | 57 | @$(java-vm-cleanup) |
duke@1 | 58 | |
ohair@114 | 59 | clean clobber:: |
ohair@114 | 60 | $(RM) -r $(BUILDTOOLCLASSDIR)/$(PKGDIR) \ |
ohair@114 | 61 | $(BUILDTOOL_MANIFEST_FILE) \ |
ohair@114 | 62 | $(BUILDTOOL_JAR_FILE) |
duke@1 | 63 |