Thu, 07 Nov 2013 08:16:05 -0800
Added tag jdk8-b115 for changeset 763ada2a1d8c
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 #
26 #
27 # Common variables used by all the Java makefiles. This file should
28 # not contain rules.
29 #
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
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
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
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
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
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
90 ifdef OPENJDK
91 ifneq ($(OPENJDK),true)
92 x:=$(error "OPENJDK (if defined) can only be set to true")
93 endif
94 endif
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)")
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
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
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
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
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
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
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
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
178 DEPLOY_SRC_AVAILABLE := $(call MkExists,$(DEPLOY_TOPDIR)/make/Makefile)
179 ifndef BUILD_DEPLOY
180 BUILD_DEPLOY := $(DEPLOY_SRC_AVAILABLE)
181 endif
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
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
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
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
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
241 endif
242 ifndef SKIP_PRODUCT_BUILD
243 SKIP_PRODUCT_BUILD = false
244 endif
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
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
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
301 # Output directory for hotspot build
302 HOTSPOT_DIR = $(ABS_OUTPUTDIR)/hotspot
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
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)
347 ifdef OPENJDK
348 COMMON_BUILD_ARGUMENTS += OPENJDK=$(OPENJDK)
349 endif
351 ifdef ARCH_DATA_MODEL
352 COMMON_BUILD_ARGUMENTS += ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)
353 endif
355 ifeq ($(DEBUG_NAME), debug)
356 COMMON_BUILD_ARGUMENTS += VARIANT=DBG DEBUG_CLASSFILES=true
357 endif
359 ifeq ($(DEBUG_NAME), fastdebug)
360 COMMON_BUILD_ARGUMENTS += VARIANT=DBG FASTDEBUG=true DEBUG_CLASSFILES=true
361 endif
363 ifdef COOKED_JDK_UPDATE_VERSION
364 COMMON_BUILD_ARGUMENTS += COOKED_JDK_UPDATE_VERSION=$(COOKED_JDK_UPDATE_VERSION)
365 endif
367 ifdef COOKED_BUILD_NUMBER
368 COMMON_BUILD_ARGUMENTS += COOKED_BUILD_NUMBER=$(COOKED_BUILD_NUMBER)
369 endif
371 ifdef ANT_HOME
372 COMMON_BUILD_ARGUMENTS += ANT_HOME="$(ANT_HOME)"
373 endif
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