21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
22 # or visit www.oracle.com if you need additional information or have any |
22 # or visit www.oracle.com if you need additional information or have any |
23 # questions. |
23 # questions. |
24 # |
24 # |
25 |
25 |
26 # Makefile wrapper around Ant build.xml file |
26 # Locate this Makefile |
|
27 ifeq ($(filter /%, $(lastword $(MAKEFILE_LIST))), ) |
|
28 makefile_path := $(CURDIR)/$(lastword $(MAKEFILE_LIST)) |
|
29 else |
|
30 makefile_path := $(lastword $(MAKEFILE_LIST)) |
|
31 endif |
|
32 repo_dir := $(patsubst %/make/Makefile, %, $(makefile_path)) |
27 |
33 |
28 # |
34 # What is the name of this subsystem (langtools, corba, etc)? |
29 # On Solaris, the 'make' utility from Sun will not work with these makefiles. |
35 subsystem_name := $(notdir $(repo_dir)) |
30 # This little rule is only understood by Sun's make, and is harmless |
|
31 # when seen by the GNU make tool. If using Sun's make, this causes the |
|
32 # make command to fail. |
|
33 # |
|
34 SUN_MAKE_TEST:sh = @echo "ERROR: PLEASE USE GNU VERSION OF MAKE"; exit 33 |
|
35 |
36 |
36 ifdef QUIET |
37 # Try to locate top-level makefile |
37 ANT_OPTIONS += -quiet |
38 top_level_makefile := $(repo_dir)/../Makefile |
|
39 ifneq ($(wildcard $(top_level_makefile)), ) |
|
40 $(info Will run $(subsystem_name) target on top-level Makefile) |
|
41 $(info WARNING: This is a non-recommended way of building!) |
|
42 $(info ===================================================) |
|
43 else |
|
44 $(info Cannot locate top-level Makefile. Is this repo not checked out as part of a complete forest?) |
|
45 $(error Build from top-level Makefile instead) |
38 endif |
46 endif |
39 |
47 |
40 ifdef VERBOSE |
48 all: |
41 ANT_OPTIONS += -verbose |
49 @$(MAKE) -f $(top_level_makefile) $(subsystem_name) |
42 endif |
|
43 |
|
44 ifeq ($(VARIANT), OPT) |
|
45 ifneq ($(DEBUG_CLASSFILES), true) |
|
46 ANT_OPTIONS += -Djavac.debug=false |
|
47 endif |
|
48 endif |
|
49 |
|
50 # Note: jdk/make/common/Defs.gmk uses LANGUAGE_VERSION (-source NN) |
|
51 # and the somewhat misnamed CLASS_VERSION (-target NN) |
|
52 ifdef TARGET_CLASS_VERSION |
|
53 ANT_OPTIONS += -Djavac.target=$(TARGET_CLASS_VERSION) |
|
54 else |
|
55 ifdef JAVAC_TARGET_ARG |
|
56 ANT_OPTIONS += -Djavac.target=$(JAVAC_TARGET_ARG) |
|
57 endif |
|
58 endif |
|
59 |
|
60 ifdef SOURCE_LANGUAGE_VERSION |
|
61 ANT_OPTIONS += -Djavac.source=$(SOURCE_LANGUAGE_VERSION) |
|
62 else |
|
63 ifdef JAVAC_SOURCE_ARG |
|
64 ANT_OPTIONS += -Djavac.source=$(JAVAC_SOURCE_ARG) |
|
65 endif |
|
66 endif |
|
67 |
|
68 # If downloads are allowed |
|
69 ifeq ($(ALLOW_DOWNLOADS),true) |
|
70 ANT_OPTIONS += -Dallow.downloads=true |
|
71 endif |
|
72 |
|
73 # Figure out the platform we are using |
|
74 _SYSTEM_UNAME := $(shell uname) |
|
75 _PLATFORM_KIND = unix |
|
76 ifeq ($(_SYSTEM_UNAME), Windows_NT) |
|
77 _PLATFORM_KIND = windows |
|
78 endif |
|
79 ifneq (,$(findstring CYGWIN,$(_SYSTEM_UNAME))) |
|
80 _PLATFORM_KIND = windows |
|
81 endif |
|
82 |
|
83 # Where is /java in case we need it |
|
84 ifdef ALT_SLASH_JAVA |
|
85 _SLASHJAVA = $(ALT_SLASH_JAVA) |
|
86 else |
|
87 ifeq ($(_PLATFORM_KIND), windows) |
|
88 _SLASHJAVA=J:/ |
|
89 else |
|
90 _SLASHJAVA=/java |
|
91 endif |
|
92 endif |
|
93 |
|
94 ifdef ALT_OUTPUTDIR |
|
95 OUTPUTDIR = $(ALT_OUTPUTDIR) |
|
96 ANT_OPTIONS += -Doutput.dir=$(ALT_OUTPUTDIR) |
|
97 else |
|
98 OUTPUTDIR = .. |
|
99 endif |
|
100 |
|
101 ifdef ALT_LANGTOOLS_DIST |
|
102 ifdef ALT_BOOTDIR |
|
103 ANT_JAVA_HOME = JAVA_HOME=$(ALT_BOOTDIR) |
|
104 ANT_OPTIONS += -Djdk.home=$(ALT_BOOTDIR) |
|
105 endif |
|
106 ANT_OPTIONS += -Dbootstrap.dir=$(ALT_LANGTOOLS_DIST)/bootstrap |
|
107 else |
|
108 ifdef ALT_JDK_IMPORT_PATH |
|
109 ANT_JAVA_HOME = JAVA_HOME=$(ALT_JDK_IMPORT_PATH) |
|
110 ANT_OPTIONS += -Djdk.home=$(ALT_JDK_IMPORT_PATH) |
|
111 endif |
|
112 endif |
|
113 |
|
114 ifdef ANT_HOME |
|
115 ANT = $(ANT_HOME)/bin/ant |
|
116 ifneq ($(shell test -x $(ANT); echo $$?), 0) |
|
117 $(error "$(ANT) not found; please update ANT_HOME") |
|
118 endif |
|
119 else |
|
120 ANT = ant |
|
121 ifneq ($(shell which $(ANT) > /dev/null; echo $$?), 0) |
|
122 $(error "'ant' not found; please set ANT_HOME or put 'ant' on your PATH") |
|
123 endif |
|
124 endif |
|
125 |
|
126 # Default target and expected 'do everything' target |
|
127 default: all |
|
128 |
|
129 # All ant targets of interest |
|
130 ANT_TARGETS = all build dist clobber clean sanity |
|
131 |
|
132 # Create a make target for each |
|
133 $(ANT_TARGETS): |
|
134 cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) -version |
|
135 cd .. && $(ANT_JAVA_HOME) $(ANT) $(ANT_OPTIONS) $@ |
|
136 |
|
137 # Just for compat reasons, delete in future. |
|
138 drop_included: |
|
139 source: |
|
140 |
|
141 # Help target |
|
142 define helpenvline |
|
143 @echo " $1";echo " $2" |
|
144 endef |
|
145 help: |
|
146 @echo "----------------------------------------------------------" |
|
147 @echo " " |
|
148 @echo "Help information for this Makefile:" |
|
149 @echo " " |
|
150 @echo " Targets (see ant project information for descriptions):" |
|
151 @echo " $(ANT_TARGETS)" |
|
152 @echo " " |
|
153 @echo " Environment or command line variables (all optional):" |
|
154 $(call helpenvline, ALT_BOOTDIR,\ |
|
155 "JAVA_HOME to use when running ant") |
|
156 $(call helpenvline, ALT_LANGTOOLS_DIST,\ |
|
157 "path to langtools repository dist directory") |
|
158 $(call helpenvline, ALT_OUTPUTDIR,\ |
|
159 "path to root of output") |
|
160 $(call helpenvline, DEBUG_CLASSFILES,\ |
|
161 "if set makes sure ant property javac.debug is true") |
|
162 $(call helpenvline, JAVAC_SOURCE_ARG,\ |
|
163 "if SOURCE_LANGUAGE_VERSION not set uses this to set ant property javac.source") |
|
164 $(call helpenvline, JAVAC_TARGET_ARG,\ |
|
165 "if TARGET_CLASS_VERSION not set uses this to set ant property javac.target") |
|
166 $(call helpenvline, SOURCE_LANGUAGE_VERSION,\ |
|
167 "if set uses this to set ant property javac.source") |
|
168 $(call helpenvline, QUIET,\ |
|
169 "if set will pass -quiet to ant") |
|
170 $(call helpenvline, TARGET_CLASS_VERSION,\ |
|
171 "JAVA_HOME to use when running ant") |
|
172 $(call helpenvline, VARIANT,\ |
|
173 "if set to OPT means optimized build will set javac.debug to false") |
|
174 $(call helpenvline, VERBOSE,\ |
|
175 "if set will pass -verbose to ant") |
|
176 @echo " " |
|
177 @echo "----------------------------------------------------------" |
|
178 @echo " " |
|
179 @echo "Ant project file help information:" |
|
180 @echo " " |
|
181 @$(ANT_JAVA_HOME) cd .. && $(ANT) $(ANT_OPTIONS) -p |
|
182 @echo " " |
|
183 @echo "----------------------------------------------------------" |
|
184 |
|
185 # Targets for Sun's internal JPRT build system |
|
186 JPRT_ARCHIVE_BUNDLE=$(OUTPUTDIR)/jprt.zip |
|
187 jprt_build_product jprt_build_debug jprt_build_fastdebug: all |
|
188 $(RM) $(JPRT_ARCHIVE_BUNDLE) |
|
189 ( cd $(OUTPUTDIR)/dist && \ |
|
190 zip -q -r $(JPRT_ARCHIVE_BUNDLE) . ) |
|
191 |
|
192 # Declare these phony (not filenames) |
|
193 .PHONY: $(ANT_TARGETS) \ |
|
194 jprt_build_product jprt_build_debug jprt_build_fastdebug |
|