22 # CA 95054 USA or visit www.sun.com if you need additional information or |
22 # CA 95054 USA or visit www.sun.com if you need additional information or |
23 # have any questions. |
23 # have any questions. |
24 # |
24 # |
25 |
25 |
26 # Input: BUILDDIR PACKAGE PKGDIR PROGRAM BUILDTOOL_SOURCE_ROOT BUILDTOOL_MAIN |
26 # Input: BUILDDIR PACKAGE PKGDIR PROGRAM BUILDTOOL_SOURCE_ROOT BUILDTOOL_MAIN |
27 |
27 |
|
28 # All subdirectories under the package root for the tool (max depth 4) |
|
29 _WC_DIRS = * */* */*/* */*/*/* |
|
30 |
28 BUILDTOOL_MAIN_SOURCE_FILE = $(BUILDTOOL_SOURCE_ROOT)/$(BUILDTOOL_MAIN) |
31 BUILDTOOL_MAIN_SOURCE_FILE = $(BUILDTOOL_SOURCE_ROOT)/$(BUILDTOOL_MAIN) |
29 BUILDTOOL_MANIFEST_FILE = $(BUILDTOOLCLASSDIR)/$(PROGRAM)_manifest.mf |
32 BUILDTOOL_MANIFEST_FILE = $(BUILDTOOLCLASSDIR)/$(PROGRAM)_manifest.mf |
30 BUILDTOOL_JAR_FILE = $(BUILDTOOLJARDIR)/$(PROGRAM).jar |
33 BUILDTOOL_JAR_FILE = $(BUILDTOOLJARDIR)/$(PROGRAM).jar |
31 BUILDTOOL_ALL_FILES := $(shell $(CD) $(BUILDTOOL_SOURCE_ROOT) \ |
34 BUILTTOOL_MAINCLASS = $(subst /,.,$(BUILDTOOL_MAIN:%.java=%)) |
32 && $(FIND) $(PKGDIR) $(SCM_DIRS_prune) -o -type f -print) |
|
33 BUILTTOOL_MAINCLASS = $(subst /,.,$(BUILDTOOL_MAIN:%.java=%)) |
|
34 |
35 |
35 all build: $(BUILDTOOL_JAR_FILE) tool_info |
36 # Wildcard patterns that find all the sources for this build tool |
|
37 BUILDTOOL_WC_PATTERNS = $(BUILDTOOL_SOURCE_ROOT)/$(PKGDIR)/*.java \ |
|
38 $(patsubst %, $(BUILDTOOL_SOURCE_ROOT)/$(PKGDIR)/%/*.java, $(_WC_DIRS)) |
|
39 |
|
40 # Wildcard expansion that finds all the files |
|
41 BUILDTOOL_SRC_FILES := $(wildcard $(BUILDTOOL_WC_PATTERNS)) |
|
42 |
|
43 all build: $(BUILDTOOL_JAR_FILE) |
36 |
44 |
37 $(BUILDTOOL_MANIFEST_FILE): $(BUILDTOOL_MAIN_SOURCE_FILE) |
45 $(BUILDTOOL_MANIFEST_FILE): $(BUILDTOOL_MAIN_SOURCE_FILE) |
38 @$(prep-target) |
46 @$(prep-target) |
39 $(ECHO) "Main-Class: $(BUILTTOOL_MAINCLASS)" > $@ |
47 $(ECHO) "Main-Class: $(BUILTTOOL_MAINCLASS)" > $@ |
40 |
48 |
41 $(BUILDTOOL_JAR_FILE): $(BUILDTOOL_MANIFEST_FILE) \ |
49 $(BUILDTOOL_JAR_FILE): $(BUILDTOOL_MANIFEST_FILE) $(BUILDTOOL_SRC_FILES) |
42 $(BUILDTOOL_ALL_FILES:%=$(BUILDTOOL_SOURCE_ROOT)/%) |
|
43 @$(prep-target) |
50 @$(prep-target) |
44 @$(MKDIR) -p $(BUILDTOOLCLASSDIR) |
51 @$(MKDIR) -p $(BUILDTOOLCLASSDIR) |
45 $(BOOT_JAVAC_CMD) -d $(BUILDTOOLCLASSDIR) \ |
52 $(BOOT_JAVAC_CMD) -d $(BUILDTOOLCLASSDIR) \ |
46 -sourcepath $(BUILDTOOL_SOURCE_ROOT) $(BUILDTOOL_MAIN_SOURCE_FILE) |
53 -sourcepath $(BUILDTOOL_SOURCE_ROOT) $(BUILDTOOL_MAIN_SOURCE_FILE) |
47 $(BOOT_JAR_CMD) cfm $@ $(BUILDTOOL_MANIFEST_FILE) \ |
54 $(BOOT_JAR_CMD) cfm $@ $(BUILDTOOL_MANIFEST_FILE) \ |
48 -C $(BUILDTOOLCLASSDIR) $(PKGDIR) \ |
55 -C $(BUILDTOOLCLASSDIR) $(PKGDIR) \ |
49 $(JAR_JFLAGS) || $(RM) $@ |
56 $(JAR_JFLAGS) || $(RM) $@ |
50 @$(java-vm-cleanup) |
57 @$(java-vm-cleanup) |
51 |
58 |
52 # Printing out a build tool information line |
59 clean clobber:: |
53 define printBuildToolSetting |
60 $(RM) -r $(BUILDTOOLCLASSDIR)/$(PKGDIR) \ |
54 if [ "$2" != "" ] ; then $(PRINTF) "%-25s %s\n" "$1:" "$2"; fi |
61 $(BUILDTOOL_MANIFEST_FILE) \ |
55 endef |
62 $(BUILDTOOL_JAR_FILE) |
56 |
63 |
57 # Print out the build tool information |
|
58 tool_info: |
|
59 @$(ECHO) "=========================================================" |
|
60 @$(call printBuildToolSetting,BUILDTOOL,$(PROGRAM)) |
|
61 @$(call printBuildToolSetting,PACKAGE,$(PACKAGE)) |
|
62 @$(call printBuildToolSetting,BUILDTOOL_SOURCE_ROOT,$(BUILDTOOL_SOURCE_ROOT)) |
|
63 @$(call printBuildToolSetting,BUILTTOOL_MAINCLASS,$(BUILTTOOL_MAINCLASS)) |
|
64 @$(call printBuildToolSetting,BUILDTOOL_JAR_FILE,$(BUILDTOOL_JAR_FILE)) |
|
65 @$(ECHO) "=========================================================" |
|
66 |
|
67 clean clobber:: |
|
68 $(RM) -r $(BUILDTOOLCLASSDIR)/$(PKGDIR) |
|
69 $(RM) $(BUILDTOOL_MANIFEST_FILE) |
|
70 $(RM) $(BUILDTOOL_JAR_FILE) |
|
71 |
|