make/common/BuildToolJar.gmk

changeset 114
1c130e7b7a2e
parent 1
55540e827aef
child 158
91006f157c46
equal deleted inserted replaced
111:3f1ef7f899ea 114:1c130e7b7a2e
1 # 1 #
2 # Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved. 2 # Copyright 1998-2009 Sun Microsystems, Inc. All Rights Reserved.
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 # 4 #
5 # This code is free software; you can redistribute it and/or modify it 5 # This code is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License version 2 only, as 6 # under the terms of the GNU General Public License version 2 only, as
7 # published by the Free Software Foundation. Sun designates this 7 # published by the Free Software Foundation. Sun designates this
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

mercurial