1 # |
|
2 # Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved. |
|
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
4 # |
|
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 |
|
7 # published by the Free Software Foundation. Oracle designates this |
|
8 # particular file as subject to the "Classpath" exception as provided |
|
9 # by Oracle in the LICENSE file that accompanied this code. |
|
10 # |
|
11 # This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 # version 2 for more details (a copy is included in the LICENSE file that |
|
15 # accompanied this code). |
|
16 # |
|
17 # You should have received a copy of the GNU General Public License version |
|
18 # 2 along with this work; if not, write to the Free Software Foundation, |
|
19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 # |
|
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 |
|
23 # questions. |
|
24 # |
|
25 |
|
26 # |
|
27 # Common variables used by all the Java makefiles. This file should |
|
28 # not contain rules. |
|
29 # |
|
30 |
|
31 # The build times report is turned off by setting REPORT_BUILD_TIMES to nothing. |
|
32 # This is necessary for the target clobber/clean which will erase the |
|
33 # directories where the buildtimes are stored. |
|
34 REPORT_BUILD_TIMES=1 |
|
35 # Store the build times in this directory. |
|
36 BUILDTIMESDIR=$(ABS_OUTPUTDIR)/tmp/buildtimes |
|
37 |
|
38 # Record starting time for build of a sub repository. |
|
39 define RecordStartTime |
|
40 $(MKDIR) -p $(BUILDTIMESDIR) |
|
41 $(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_start_$1 |
|
42 $(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_start_$1_human_readable |
|
43 endef |
|
44 |
|
45 # Indicate that we started to build a sub repository and record starting time. |
|
46 define MakeStart |
|
47 $(call RecordStartTime,$1) |
|
48 $(PRINTF) "\n\n%s\n%s\n##### %-60.60s #####\n%s\n\n" \ |
|
49 "########################################################################" \ |
|
50 "########################################################################" \ |
|
51 "Entering $1 for target(s) $2" \ |
|
52 "########################################################################" |
|
53 endef |
|
54 |
|
55 # Record ending time and calculate the difference and store it in a |
|
56 # easy to read format. Handles builds that cross midnight. Expects |
|
57 # that a build will never take 24 hours or more. |
|
58 define RecordEndTime |
|
59 $(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_end_$1 |
|
60 $(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_end_$1_human_readable |
|
61 $(ECHO) `$(CAT) $(BUILDTIMESDIR)/build_time_start_$1` `$(CAT) $(BUILDTIMESDIR)/build_time_end_$1` $1 | \ |
|
62 $(NAWK) '{ F=$$7; T=$$14; if (F > T) { T+=3600*24 }; D=T-F; H=int(D/3600); \ |
|
63 M=int((D-H*3600)/60); S=D-H*3600-M*60; printf("%02d:%02d:%02d %s\n",H,M,S,$$15); }' \ |
|
64 > $(BUILDTIMESDIR)/build_time_diff_$1 |
|
65 endef |
|
66 |
|
67 # Indicate that we are done. |
|
68 # Record ending time and print out the total time it took to build. |
|
69 define MakeFinish |
|
70 $(if $(REPORT_BUILD_TIMES),$(call RecordEndTime,$1),) |
|
71 $(PRINTF) "%s\n##### %-60.60s #####\n%s\n##### %-60.60s #####\n%s\n\n" \ |
|
72 "########################################################################" \ |
|
73 "Leaving $1 for target(s) $2" \ |
|
74 "########################################################################" \ |
|
75 $(if $(REPORT_BUILD_TIMES),"Build time `$(CAT) $(BUILDTIMESDIR)/build_time_diff_$1` for target(s) $2","") \ |
|
76 "########################################################################" |
|
77 endef |
|
78 |
|
79 # Find all build_time_* files and print their contents in a list sorted |
|
80 # on the name of the sub repository. |
|
81 define ReportBuildTimes |
|
82 $(PRINTF) -- "-- Build times ----------\nTarget %s\nStart %s\nEnd %s\n%s\n%s\n-------------------------\n" \ |
|
83 $1 \ |
|
84 "`$(CAT) $(BUILDTIMESDIR)/build_time_start_TOTAL_human_readable`" \ |
|
85 "`$(CAT) $(BUILDTIMESDIR)/build_time_end_TOTAL_human_readable`" \ |
|
86 "`$(LS) $(BUILDTIMESDIR)/build_time_diff_* | $(GREP) -v _TOTAL | $(XARGS) $(CAT) | $(SORT) -k 2`" \ |
|
87 "`$(CAT) $(BUILDTIMESDIR)/build_time_diff_TOTAL`" |
|
88 endef |
|
89 |
|
90 ifdef OPENJDK |
|
91 ifneq ($(OPENJDK),true) |
|
92 x:=$(error "OPENJDK (if defined) can only be set to true") |
|
93 endif |
|
94 endif |
|
95 |
|
96 # Define absolute paths to TOPDIRs |
|
97 ABS_LANGTOOLS_TOPDIR:=$(call OptFullPath,"$(LANGTOOLS_TOPDIR)") |
|
98 ABS_CORBA_TOPDIR:=$(call OptFullPath,"$(CORBA_TOPDIR)") |
|
99 ABS_JAXP_TOPDIR:=$(call OptFullPath,"$(JAXP_TOPDIR)") |
|
100 ABS_JAXWS_TOPDIR:=$(call OptFullPath,"$(JAXWS_TOPDIR)") |
|
101 ABS_JDK_TOPDIR:=$(call OptFullPath,"$(JDK_TOPDIR)") |
|
102 ABS_HOTSPOT_TOPDIR:=$(call OptFullPath,"$(HOTSPOT_TOPDIR)") |
|
103 ABS_NASHORN_TOPDIR:=$(call OptFullPath,"$(NASHORN_TOPDIR)") |
|
104 ABS_INSTALL_TOPDIR:=$(call OptFullPath,"$(INSTALL_TOPDIR)") |
|
105 ABS_SPONSORS_TOPDIR:=$(call OptFullPath,"$(SPONSORS_TOPDIR)") |
|
106 ABS_DEPLOY_TOPDIR:=$(call OptFullPath,"$(DEPLOY_TOPDIR)") |
|
107 |
|
108 # Macro to return true or false if a file exists and is readable |
|
109 define MkExists |
|
110 $(shell if [ -r $1 ]; then $(ECHO) true; else $(ECHO) false; fi) |
|
111 endef |
|
112 |
|
113 HOTSPOT_SRC_AVAILABLE := $(call MkExists,$(HOTSPOT_TOPDIR)/make/Makefile) |
|
114 ifndef BUILD_HOTSPOT |
|
115 ifdef ALT_HOTSPOT_IMPORT_PATH |
|
116 BUILD_HOTSPOT := false |
|
117 else |
|
118 BUILD_HOTSPOT := $(HOTSPOT_SRC_AVAILABLE) |
|
119 endif |
|
120 endif |
|
121 |
|
122 LANGTOOLS_SRC_AVAILABLE := $(call MkExists,$(LANGTOOLS_TOPDIR)/make/Makefile) |
|
123 ifndef BUILD_LANGTOOLS |
|
124 ifdef ALT_LANGTOOLS_DIST |
|
125 BUILD_LANGTOOLS := false |
|
126 else |
|
127 BUILD_LANGTOOLS := $(LANGTOOLS_SRC_AVAILABLE) |
|
128 endif |
|
129 endif |
|
130 |
|
131 CORBA_SRC_AVAILABLE := $(call MkExists,$(CORBA_TOPDIR)/make/Makefile) |
|
132 ifndef BUILD_CORBA |
|
133 ifdef ALT_CORBA_DIST |
|
134 BUILD_CORBA := false |
|
135 else |
|
136 BUILD_CORBA := $(CORBA_SRC_AVAILABLE) |
|
137 endif |
|
138 endif |
|
139 |
|
140 JAXP_SRC_AVAILABLE := $(call MkExists,$(JAXP_TOPDIR)/make/Makefile) |
|
141 ifndef BUILD_JAXP |
|
142 ifdef ALT_JAXP_DIST |
|
143 BUILD_JAXP := false |
|
144 else |
|
145 BUILD_JAXP := $(JAXP_SRC_AVAILABLE) |
|
146 endif |
|
147 endif |
|
148 |
|
149 JAXWS_SRC_AVAILABLE := $(call MkExists,$(JAXWS_TOPDIR)/make/Makefile) |
|
150 ifndef BUILD_JAXWS |
|
151 ifdef ALT_JAXWS_DIST |
|
152 BUILD_JAXWS := false |
|
153 else |
|
154 BUILD_JAXWS := $(JAXWS_SRC_AVAILABLE) |
|
155 endif |
|
156 endif |
|
157 |
|
158 JDK_SRC_AVAILABLE := $(call MkExists,$(JDK_TOPDIR)/make/Makefile) |
|
159 ifndef BUILD_JDK |
|
160 BUILD_JDK := $(JDK_SRC_AVAILABLE) |
|
161 endif |
|
162 ifeq ($(JDK_SRC_AVAILABLE),true) |
|
163 JDK_CLOSED_SRC_AVAILABLE := $(call MkExists,$(JDK_TOPDIR)/src/closed) |
|
164 ifeq ($(JDK_CLOSED_SRC_AVAILABLE),false) |
|
165 OPENJDK = true |
|
166 endif |
|
167 endif |
|
168 |
|
169 NASHORN_SRC_AVAILABLE := $(call MkExists,$(NASHORN_TOPDIR)/make/Makefile) |
|
170 ifndef BUILD_NASHORN |
|
171 ifdef ALT_NASHORN_DIST |
|
172 BUILD_NASHORN := false |
|
173 else |
|
174 BUILD_NASHORN := $(NASHORN_SRC_AVAILABLE) |
|
175 endif |
|
176 endif |
|
177 |
|
178 DEPLOY_SRC_AVAILABLE := $(call MkExists,$(DEPLOY_TOPDIR)/make/Makefile) |
|
179 ifndef BUILD_DEPLOY |
|
180 BUILD_DEPLOY := $(DEPLOY_SRC_AVAILABLE) |
|
181 endif |
|
182 |
|
183 INSTALL_SRC_AVAILABLE := $(call MkExists,$(INSTALL_TOPDIR)/make/Makefile) |
|
184 ifndef BUILD_INSTALL |
|
185 ifdef DEV_ONLY |
|
186 BUILD_INSTALL := false |
|
187 else |
|
188 BUILD_INSTALL := $(INSTALL_SRC_AVAILABLE) |
|
189 endif |
|
190 endif |
|
191 |
|
192 SPONSORS_SRC_AVAILABLE := $(call MkExists,$(SPONSORS_TOPDIR)/make/Makefile) |
|
193 ifndef BUILD_SPONSORS |
|
194 ifdef DEV_ONLY |
|
195 BUILD_SPONSORS := false |
|
196 else |
|
197 BUILD_SPONSORS := $(SPONSORS_SRC_AVAILABLE) |
|
198 endif |
|
199 endif |
|
200 |
|
201 |
|
202 # Do we build the source bundles? |
|
203 BUNDLE_RULES = $(JDK_TOPDIR)/make/closed/bundles.gmk |
|
204 ifeq ($(SKIP_BUNDLES_BUILD), true) |
|
205 BUNDLE_RULES_AVAILABLE := false |
|
206 else |
|
207 BUNDLE_RULES_AVAILABLE := $(call MkExists,$(BUNDLE_RULES)) |
|
208 endif |
|
209 |
|
210 # Current things we do NOT build for OPENJDK |
|
211 ifdef OPENJDK |
|
212 BUILD_DEPLOY = false |
|
213 BUILD_INSTALL = false |
|
214 BUILD_SPONSORS = false |
|
215 BUNDLE_RULES_AVAILABLE := false |
|
216 # These could be over-ridden on the command line or in environment |
|
217 ifndef SKIP_FASTDEBUG_BUILD |
|
218 SKIP_FASTDEBUG_BUILD = true |
|
219 endif |
|
220 ifndef SKIP_DEBUG_BUILD |
|
221 SKIP_DEBUG_BUILD = true |
|
222 endif |
|
223 ifndef SKIP_COMPARE_IMAGES |
|
224 SKIP_COMPARE_IMAGES = true |
|
225 endif |
|
226 else |
|
227 |
|
228 # Various non-OPENJDK reasons to NOT build the deploy repository |
|
229 ifeq ($(ARCH), ia64) |
|
230 BUILD_DEPLOY=false |
|
231 endif |
|
232 ifeq ($(ARCH), sparcv9) |
|
233 BUILD_DEPLOY=false |
|
234 endif |
|
235 ifeq ($(ARCH), amd64) |
|
236 ifeq ($(PLATFORM), solaris) |
|
237 BUILD_DEPLOY=false |
|
238 endif |
|
239 endif |
|
240 |
|
241 endif |
|
242 ifndef SKIP_PRODUCT_BUILD |
|
243 SKIP_PRODUCT_BUILD = false |
|
244 endif |
|
245 |
|
246 # Many reasons why we would want to skip the comparison to previous jdk |
|
247 ifndef SKIP_COMPARE_IMAGES |
|
248 ifeq ($(BUILD_JDK), false) |
|
249 SKIP_COMPARE_IMAGES = true |
|
250 endif |
|
251 ifeq ($(BUILD_DEPLOY), false) |
|
252 SKIP_COMPARE_IMAGES = true |
|
253 endif |
|
254 ifeq ($(BUILD_INSTALL), false) |
|
255 SKIP_COMPARE_IMAGES = true |
|
256 endif |
|
257 ifdef DEV_ONLY |
|
258 SKIP_COMPARE_IMAGES = true |
|
259 endif |
|
260 endif |
|
261 |
|
262 # Select defaults if these are not set to true or false |
|
263 ifndef SKIP_DEBUG_BUILD |
|
264 SKIP_DEBUG_BUILD=true |
|
265 endif |
|
266 ifndef SKIP_FASTDEBUG_BUILD |
|
267 SKIP_FASTDEBUG_BUILD=true |
|
268 endif |
|
269 |
|
270 # Select javadoc setting GENERATE_DOCS |
|
271 ifndef NO_DOCS |
|
272 # Default value (we want javadoc run) |
|
273 GENERATE_DOCS=true |
|
274 # No DOCS build when JDK_UPDATE_VERSION set on non-OPENJDK builds |
|
275 ifndef OPENJDK |
|
276 ifdef JDK_UPDATE_VERSION |
|
277 GENERATE_DOCS=false |
|
278 endif |
|
279 endif |
|
280 # If langtools, corba, jaxp, and jaxws are not being built, |
|
281 # a full jdk javadoc is not possible |
|
282 ifneq ($(BUILD_LANGTOOLS), true) |
|
283 GENERATE_DOCS=false |
|
284 endif |
|
285 ifneq ($(BUILD_CORBA), true) |
|
286 GENERATE_DOCS=false |
|
287 endif |
|
288 ifneq ($(BUILD_JAXP), true) |
|
289 GENERATE_DOCS=false |
|
290 endif |
|
291 ifneq ($(BUILD_JAXWS), true) |
|
292 GENERATE_DOCS=false |
|
293 endif |
|
294 ifeq ($(GENERATE_DOCS),false) |
|
295 NO_DOCS=true |
|
296 endif |
|
297 else |
|
298 GENERATE_DOCS=false |
|
299 endif |
|
300 |
|
301 # Output directory for hotspot build |
|
302 HOTSPOT_DIR = $(ABS_OUTPUTDIR)/hotspot |
|
303 |
|
304 # If we are building components |
|
305 ifndef ALT_LANGTOOLS_DIST |
|
306 LANGTOOLS_OUTPUTDIR = $(ABS_OUTPUTDIR)/langtools |
|
307 ABS_LANGTOOLS_DIST = $(LANGTOOLS_OUTPUTDIR)/dist |
|
308 endif |
|
309 ifndef ALT_CORBA_DIST |
|
310 CORBA_OUTPUTDIR = $(ABS_OUTPUTDIR)/corba |
|
311 ABS_CORBA_DIST = $(CORBA_OUTPUTDIR)/dist |
|
312 endif |
|
313 ifndef ALT_JAXP_DIST |
|
314 JAXP_OUTPUTDIR = $(ABS_OUTPUTDIR)/jaxp |
|
315 ABS_JAXP_DIST = $(JAXP_OUTPUTDIR)/dist |
|
316 endif |
|
317 ifndef ALT_JAXWS_DIST |
|
318 JAXWS_OUTPUTDIR = $(ABS_OUTPUTDIR)/jaxws |
|
319 ABS_JAXWS_DIST = $(JAXWS_OUTPUTDIR)/dist |
|
320 endif |
|
321 ifndef ALT_NASHORN_DIST |
|
322 NASHORN_OUTPUTDIR = $(ABS_OUTPUTDIR)/nashorn |
|
323 ABS_NASHORN_DIST = $(NASHORN_OUTPUTDIR)/dist |
|
324 endif |
|
325 |
|
326 # Common make arguments (supplied to all component builds) |
|
327 COMMON_BUILD_ARGUMENTS = \ |
|
328 JDK_TOPDIR=$(ABS_JDK_TOPDIR) \ |
|
329 JDK_MAKE_SHARED_DIR=$(ABS_JDK_TOPDIR)/make/common/shared \ |
|
330 EXTERNALSANITYCONTROL=true \ |
|
331 SOURCE_LANGUAGE_VERSION=$(SOURCE_LANGUAGE_VERSION) \ |
|
332 TARGET_CLASS_VERSION=$(TARGET_CLASS_VERSION) \ |
|
333 MILESTONE=$(MILESTONE) \ |
|
334 BUILD_NUMBER=$(BUILD_NUMBER) \ |
|
335 JDK_BUILD_NUMBER=$(JDK_BUILD_NUMBER) \ |
|
336 FULL_VERSION=$(FULL_VERSION) \ |
|
337 PREVIOUS_JDK_VERSION=$(PREVIOUS_JDK_VERSION) \ |
|
338 JDK_VERSION=$(JDK_VERSION) \ |
|
339 JDK_MKTG_VERSION=$(JDK_MKTG_VERSION) \ |
|
340 JDK_MAJOR_VERSION=$(JDK_MAJOR_VERSION) \ |
|
341 JDK_MINOR_VERSION=$(JDK_MINOR_VERSION) \ |
|
342 JDK_MICRO_VERSION=$(JDK_MICRO_VERSION) \ |
|
343 PREVIOUS_MAJOR_VERSION=$(PREVIOUS_MAJOR_VERSION) \ |
|
344 PREVIOUS_MINOR_VERSION=$(PREVIOUS_MINOR_VERSION) \ |
|
345 PREVIOUS_MICRO_VERSION=$(PREVIOUS_MICRO_VERSION) |
|
346 |
|
347 ifdef OPENJDK |
|
348 COMMON_BUILD_ARGUMENTS += OPENJDK=$(OPENJDK) |
|
349 endif |
|
350 |
|
351 ifdef ARCH_DATA_MODEL |
|
352 COMMON_BUILD_ARGUMENTS += ARCH_DATA_MODEL=$(ARCH_DATA_MODEL) |
|
353 endif |
|
354 |
|
355 ifeq ($(DEBUG_NAME), debug) |
|
356 COMMON_BUILD_ARGUMENTS += VARIANT=DBG DEBUG_CLASSFILES=true |
|
357 endif |
|
358 |
|
359 ifeq ($(DEBUG_NAME), fastdebug) |
|
360 COMMON_BUILD_ARGUMENTS += VARIANT=DBG FASTDEBUG=true DEBUG_CLASSFILES=true |
|
361 endif |
|
362 |
|
363 ifdef COOKED_JDK_UPDATE_VERSION |
|
364 COMMON_BUILD_ARGUMENTS += COOKED_JDK_UPDATE_VERSION=$(COOKED_JDK_UPDATE_VERSION) |
|
365 endif |
|
366 |
|
367 ifdef COOKED_BUILD_NUMBER |
|
368 COMMON_BUILD_ARGUMENTS += COOKED_BUILD_NUMBER=$(COOKED_BUILD_NUMBER) |
|
369 endif |
|
370 |
|
371 ifdef ANT_HOME |
|
372 COMMON_BUILD_ARGUMENTS += ANT_HOME="$(ANT_HOME)" |
|
373 endif |
|
374 |
|
375 # When all repos support FULL_DEBUG_SYMBOLS and ZIP_DEBUGINFO_FILES, |
|
376 # then these can be set here: |
|
377 #ifdef FULL_DEBUG_SYMBOLS |
|
378 # COMMON_BUILD_ARGUMENTS += FULL_DEBUG_SYMBOLS=$(FULL_DEBUG_SYMBOLS) |
|
379 #endif |
|
380 # |
|
381 #ifdef ZIP_DEBUGINFO_FILES |
|
382 # COMMON_BUILD_ARGUMENTS += ZIP_DEBUGINFO_FILES="$(ZIP_DEBUGINFO_FILES)" |
|
383 #endif |
|