Tue, 25 Jan 2011 17:58:19 -0500
7014261: G1: RSet-related failures
Summary: A race between the concurrent cleanup thread and the VM thread while it is processing the "expanded sparse table list" causes both threads to try to free the same sparse table entry and either causes one of the threads to fail or leaves the entry in an inconsistent state. The solution is purge all entries on the expanded list that correspond go regions that are being cleaned up.
Reviewed-by: brutisso, johnc
1 #
2 # Copyright (c) 2005, 2010, 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.
8 #
9 # This code is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 # version 2 for more details (a copy is included in the LICENSE file that
13 # accompanied this code).
14 #
15 # You should have received a copy of the GNU General Public License version
16 # 2 along with this work; if not, write to the Free Software Foundation,
17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 #
19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 # or visit www.oracle.com if you need additional information or have any
21 # questions.
22 #
23 #
25 # Top level gnumake file for hotspot builds
26 #
27 # Default is to build the both product images and construct an export dir.
28 # The default export directory name is `pwd`/export-$(PLATFORM).
29 #
30 # Use: 'gnumake help' for more information.
31 #
32 # This makefile uses the default settings for where to find compilers and
33 # tools, and obeys the ALT_* variable settings used by the other JDK
34 # workspaces.
35 #
37 # Expected/optional make variables defined on make command line:
38 # LP64=1 or ARCH_DATA_MODEL=64 for 64bit build
39 #
40 # Expected/optional make variables or environment variables:
41 # ALT_SLASH_JAVA Location of /java or J:
42 # ALT_BOOTDIR Previous JDK home directory for javac compiler
43 # ALT_OUTPUTDIR Output directory to use for hotspot build
44 # ALT_EXPORT_PATH Directory to export hotspot build to
45 # ALT_JDK_IMPORT_PATH Current JDK build (only for create_jdk rules)
46 # ALT_BUILD_WIN_SA Building SA on Windows is disabled by default.
47 # Set ALT_BUILD_WIN_SA=1 to enable building SA on
48 # Windows.
49 # Version strings and numbers:
50 # JDK_VERSION Current JDK version (e.g. 1.6.0)
51 # PREVIOUS_JDK_VERSION Previous (bootdir) JDK version (e.g. 1.5.0)
52 # FULL_VERSION Full version string to use (e.g. "1.6.0-ea-b42")
53 #
54 # Version strings and numbers especially needed on Windows:
55 # COOKED_JDK_UPDATE_VERSION Just the update release number (e.g. 02)
56 # COOKED_BUILD_NUMBER Just the build number (e.g. 42)
57 # JDK_MKTG_VERSION Marketing JDK version (e.g. 6.0)
58 # JDK_MAJOR_VERSION Major number for version (e.g. 1) always 1?
59 # JDK_MINOR_VERSION Minor number for version (e.g. 6)
60 # JDK_MICRO_VERSION Micro number for version (e.g. 0)
61 #
63 # Default is build both product fastdebug and create export area
65 # Allow to build HotSpot in local directory from sources specified by GAMMADIR.
66 # After make/defs.make GAMMADIR is defined.
67 ifdef GAMMADIR
68 ifndef ALT_OUTPUTDIR
69 ALT_OUTPUTDIR := $(shell pwd)
70 endif
71 include $(GAMMADIR)/make/defs.make
72 else
73 include defs.make
74 endif
77 ifneq ($(ALT_OUTPUTDIR),)
78 ALT_OUT=ALT_OUTPUTDIR=$(ALT_OUTPUTDIR)
79 else
80 ALT_OUT=
81 endif
83 # Typical C1/C2 targets made available with this Makefile
84 C1_VM_TARGETS=product1 fastdebug1 optimized1 jvmg1
85 C2_VM_TARGETS=product fastdebug optimized jvmg
86 KERNEL_VM_TARGETS=productkernel fastdebugkernel optimizedkernel jvmgkernel
87 ZERO_VM_TARGETS=productzero fastdebugzero optimizedzero jvmgzero
88 SHARK_VM_TARGETS=productshark fastdebugshark optimizedshark jvmgshark
90 # JDK directory list
91 JDK_DIRS=bin include jre lib demo
93 all: all_product all_fastdebug
94 ifndef BUILD_CLIENT_ONLY
95 all_product: product product1 productkernel docs export_product
96 all_fastdebug: fastdebug fastdebug1 fastdebugkernel docs export_fastdebug
97 all_debug: jvmg jvmg1 jvmgkernel docs export_debug
98 else
99 all_product: product1 docs export_product
100 all_fastdebug: fastdebug1 docs export_fastdebug
101 all_debug: jvmg1 docs export_debug
102 endif
103 all_optimized: optimized optimized1 optimizedkernel docs export_optimized
105 allzero: all_productzero all_fastdebugzero
106 all_productzero: productzero docs export_product
107 all_fastdebugzero: fastdebugzero docs export_fastdebug
108 all_debugzero: jvmgzero docs export_debug
109 all_optimizedzero: optimizedzero docs export_optimized
111 allshark: all_productshark all_fastdebugshark
112 all_productshark: productshark docs export_product
113 all_fastdebugshark: fastdebugshark docs export_fastdebug
114 all_debugshark: jvmgshark docs export_debug
115 all_optimizedshark: optimizedshark docs export_optimized
117 # Do everything
118 world: all create_jdk
120 # Build or export docs
121 docs:
122 ifeq ($(OSNAME),windows)
123 @$(ECHO) "No docs ($(VM_TARGET)) for windows"
124 else
125 $(CD) $(OUTPUTDIR); \
126 $(MAKE) -f $(ABS_OS_MAKEFILE) \
127 $(MAKE_ARGS) docs
128 endif
130 # Build variation of hotspot
131 $(C1_VM_TARGETS):
132 $(CD) $(GAMMADIR)/make; \
133 $(MAKE) VM_TARGET=$@ generic_build1 $(ALT_OUT)
135 $(C2_VM_TARGETS):
136 $(CD) $(GAMMADIR)/make; \
137 $(MAKE) VM_TARGET=$@ generic_build2 $(ALT_OUT)
139 $(KERNEL_VM_TARGETS):
140 $(CD) $(GAMMADIR)/make; \
141 $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT)
143 $(ZERO_VM_TARGETS):
144 $(CD) $(GAMMADIR)/make; \
145 $(MAKE) VM_TARGET=$@ generic_buildzero $(ALT_OUT)
147 $(SHARK_VM_TARGETS):
148 $(CD) $(GAMMADIR)/make; \
149 $(MAKE) VM_TARGET=$@ generic_buildshark $(ALT_OUT)
151 # Build compiler1 (client) rule, different for platforms
152 generic_build1:
153 $(MKDIR) -p $(OUTPUTDIR)
154 ifeq ($(OSNAME),windows)
155 ifeq ($(ARCH_DATA_MODEL), 32)
156 $(CD) $(OUTPUTDIR); \
157 $(NMAKE) -f $(ABS_OS_MAKEFILE) \
158 Variant=compiler1 \
159 WorkSpace=$(ABS_GAMMADIR) \
160 BootStrapDir=$(ABS_BOOTDIR) \
161 BuildUser=$(USERNAME) \
162 $(MAKE_ARGS) $(VM_TARGET:%1=%)
163 else
164 @$(ECHO) "No compiler1 ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
165 endif
166 else
167 ifeq ($(ARCH_DATA_MODEL), 32)
168 $(CD) $(OUTPUTDIR); \
169 $(MAKE) -f $(ABS_OS_MAKEFILE) \
170 $(MAKE_ARGS) $(VM_TARGET)
171 else
172 @$(ECHO) "No compiler1 ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
173 endif
174 endif
176 # Build compiler2 (server) rule, different for platforms
177 generic_build2:
178 $(MKDIR) -p $(OUTPUTDIR)
179 ifeq ($(OSNAME),windows)
180 $(CD) $(OUTPUTDIR); \
181 $(NMAKE) -f $(ABS_OS_MAKEFILE) \
182 Variant=compiler2 \
183 WorkSpace=$(ABS_GAMMADIR) \
184 BootStrapDir=$(ABS_BOOTDIR) \
185 BuildUser=$(USERNAME) \
186 $(MAKE_ARGS) $(VM_TARGET)
187 else
188 $(CD) $(OUTPUTDIR); \
189 $(MAKE) -f $(ABS_OS_MAKEFILE) \
190 $(MAKE_ARGS) $(VM_TARGET)
191 endif
193 generic_buildkernel:
194 $(MKDIR) -p $(OUTPUTDIR)
195 ifeq ($(OSNAME),windows)
196 ifeq ($(ARCH_DATA_MODEL), 32)
197 $(CD) $(OUTPUTDIR); \
198 $(NMAKE) -f $(ABS_OS_MAKEFILE) \
199 Variant=kernel \
200 WorkSpace=$(ABS_GAMMADIR) \
201 BootStrapDir=$(ABS_BOOTDIR) \
202 BuildUser=$(USERNAME) \
203 $(MAKE_ARGS) $(VM_TARGET:%kernel=%)
204 else
205 @$(ECHO) "No kernel ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
206 endif
207 else
208 @$(ECHO) "No kernel ($(VM_TARGET)) for OS_NAME=$(OSNAME)"
209 endif
211 generic_buildzero:
212 $(MKDIR) -p $(OUTPUTDIR)
213 $(CD) $(OUTPUTDIR); \
214 $(MAKE) -f $(ABS_OS_MAKEFILE) \
215 $(MAKE_ARGS) $(VM_TARGET)
217 generic_buildshark:
218 $(MKDIR) -p $(OUTPUTDIR)
219 $(CD) $(OUTPUTDIR); \
220 $(MAKE) -f $(ABS_OS_MAKEFILE) \
221 $(MAKE_ARGS) $(VM_TARGET)
223 # Export file rule
224 generic_export: $(EXPORT_LIST)
225 export_product:
226 $(MAKE) VM_SUBDIR=product generic_export
227 export_fastdebug:
228 $(MAKE) VM_SUBDIR=fastdebug EXPORT_SUBDIR=/fastdebug generic_export
229 export_debug:
230 $(MAKE) VM_SUBDIR=${VM_DEBUG} EXPORT_SUBDIR=/debug generic_export
231 export_optimized:
232 $(MAKE) VM_SUBDIR=optimized EXPORT_SUBDIR=/optimized generic_export
233 export_product_jdk:
234 $(MAKE) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR) \
235 VM_SUBDIR=product generic_export
236 export_optimized_jdk:
237 $(MAKE) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR) \
238 VM_SUBDIR=optimized generic_export
239 export_fastdebug_jdk:
240 $(MAKE) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR)/fastdebug \
241 VM_SUBDIR=fastdebug generic_export
242 export_debug_jdk:
243 $(MAKE) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR)/debug \
244 VM_SUBDIR=${VM_DEBUG} generic_export
247 # Export file copy rules
248 XUSAGE=$(HS_SRC_DIR)/share/vm/Xusage.txt
249 DOCS_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_docs
250 C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1
251 C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2
252 KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel
253 ZERO_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_zero
254 SHARK_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_shark
255 C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR)
256 C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR)
257 KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR)
258 ZERO_DIR=$(ZERO_BASE_DIR)/$(VM_SUBDIR)
259 SHARK_DIR=$(SHARK_BASE_DIR)/$(VM_SUBDIR)
261 # Misc files and generated files need to come from C1 or C2 area
262 ifeq ($(ZERO_BUILD), true)
263 ifeq ($(SHARK_BUILD), true)
264 MISC_DIR=$(SHARK_DIR)
265 GEN_DIR=$(SHARK_BASE_DIR)/generated
266 else
267 MISC_DIR=$(ZERO_DIR)
268 GEN_DIR=$(ZERO_BASE_DIR)/generated
269 endif
270 else
271 ifeq ($(ARCH_DATA_MODEL), 32)
272 MISC_DIR=$(C1_DIR)
273 GEN_DIR=$(C1_BASE_DIR)/generated
274 else
275 MISC_DIR=$(C2_DIR)
276 GEN_DIR=$(C2_BASE_DIR)/generated
277 endif
278 endif
280 # Bin files (windows)
281 ifeq ($(OSNAME),windows)
283 # Get jvm.lib
284 $(EXPORT_LIB_DIR)/%.lib: $(MISC_DIR)/%.lib
285 $(install-file)
287 # Other libraries (like SA)
288 $(EXPORT_JRE_BIN_DIR)/%.dll: $(MISC_DIR)/%.dll
289 $(install-file)
290 $(EXPORT_JRE_BIN_DIR)/%.pdb: $(MISC_DIR)/%.pdb
291 $(install-file)
292 $(EXPORT_JRE_BIN_DIR)/%.map: $(MISC_DIR)/%.map
293 $(install-file)
295 # Client files always come from C1 area
296 $(EXPORT_CLIENT_DIR)/%.dll: $(C1_DIR)/%.dll
297 $(install-file)
298 $(EXPORT_CLIENT_DIR)/%.pdb: $(C1_DIR)/%.pdb
299 $(install-file)
300 $(EXPORT_CLIENT_DIR)/%.map: $(C1_DIR)/%.map
301 $(install-file)
303 # Server files always come from C2 area
304 $(EXPORT_SERVER_DIR)/%.dll: $(C2_DIR)/%.dll
305 $(install-file)
306 $(EXPORT_SERVER_DIR)/%.pdb: $(C2_DIR)/%.pdb
307 $(install-file)
308 $(EXPORT_SERVER_DIR)/%.map: $(C2_DIR)/%.map
309 $(install-file)
311 # Kernel files always come from kernel area
312 $(EXPORT_KERNEL_DIR)/%.dll: $(KERNEL_DIR)/%.dll
313 $(install-file)
314 $(EXPORT_KERNEL_DIR)/%.pdb: $(KERNEL_DIR)/%.pdb
315 $(install-file)
316 $(EXPORT_KERNEL_DIR)/%.map: $(KERNEL_DIR)/%.map
317 $(install-file)
318 endif
320 # Shared Library
321 ifneq ($(OSNAME),windows)
322 ifeq ($(ZERO_BUILD), true)
323 ifeq ($(SHARK_BUILD), true)
324 $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(SHARK_DIR)/%.so
325 $(install-file)
326 $(EXPORT_SERVER_DIR)/%.so: $(SHARK_DIR)/%.so
327 $(install-file)
328 else
329 $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(ZERO_DIR)/%.so
330 $(install-file)
331 $(EXPORT_SERVER_DIR)/%.so: $(ZERO_DIR)/%.so
332 $(install-file)
333 endif
334 else
335 $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(C1_DIR)/%.so
336 $(install-file)
337 $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(C2_DIR)/%.so
338 $(install-file)
339 $(EXPORT_CLIENT_DIR)/%.so: $(C1_DIR)/%.so
340 $(install-file)
341 $(EXPORT_CLIENT_DIR)/64/%.so: $(C1_DIR)/%.so
342 $(install-file)
343 $(EXPORT_SERVER_DIR)/%.so: $(C2_DIR)/%.so
344 $(install-file)
345 $(EXPORT_SERVER_DIR)/64/%.so: $(C2_DIR)/%.so
346 $(install-file)
347 endif
348 endif
350 # Jar file (sa-jdi.jar)
351 $(EXPORT_LIB_DIR)/%.jar: $(GEN_DIR)/%.jar
352 $(install-file)
354 # Include files (jvmti.h, jvmticmlr.h, jni.h, $(JDK_INCLUDE_SUBDIR)/jni_md.h, jmm.h)
355 $(EXPORT_INCLUDE_DIR)/%: $(GEN_DIR)/jvmtifiles/%
356 $(install-file)
358 $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/code/%
359 $(install-file)
361 $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/prims/%
362 $(install-file)
364 $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h: $(HS_SRC_DIR)/cpu/$(HS_ARCH)/vm/jni_$(HS_ARCH).h
365 $(install-file)
367 $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/services/%
368 $(install-file)
370 # Doc files (jvmti.html)
371 $(EXPORT_DOCS_DIR)/platform/jvmti/%: $(DOCS_DIR)/%
372 $(install-file)
374 # Xusage file
375 $(EXPORT_SERVER_DIR)/Xusage.txt $(EXPORT_CLIENT_DIR)/Xusage.txt $(EXPORT_KERNEL_DIR)/Xusage.txt: $(XUSAGE)
376 $(prep-target)
377 $(RM) $@.temp
378 $(SED) 's/\(separated by \)[;:]/\1$(PATH_SEP)/g' $< > $@.temp
379 $(MV) $@.temp $@
381 #
382 # Clean rules
383 #
384 clobber clean: clean_build clean_export clean_jdk
385 clean_build:
386 $(RM) -r $(C1_DIR)
387 $(RM) -r $(C2_DIR)
388 $(RM) -r $(KERNEL_DIR)
389 $(RM) -r $(ZERO_DIR)
390 $(RM) -r $(SHARK_DIR)
391 clean_export:
392 $(RM) -r $(EXPORT_PATH)
393 clean_jdk:
394 $(RM) -r $(JDK_IMAGE_DIR)
396 #
397 # Create JDK and place this build into it
398 #
399 create_jdk: copy_jdk update_jdk
401 update_jdk: export_product_jdk export_fastdebug_jdk test_jdk
403 copy_jdk: $(JDK_IMAGE_DIR)/jre/lib/rt.jar
405 $(JDK_IMAGE_DIR)/jre/lib/rt.jar:
406 $(RM) -r $(JDK_IMAGE_DIR)
407 $(MKDIR) -p $(JDK_IMAGE_DIR)
408 ($(CD) $(JDK_IMPORT_PATH) && \
409 $(TAR) -cf - *) | \
410 ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -)
412 test_jdk:
413 ifneq ($(ZERO_BUILD), true)
414 ifeq ($(ARCH_DATA_MODEL), 32)
415 $(JDK_IMAGE_DIR)/bin/java -client -version
416 endif
417 endif
418 $(JDK_IMAGE_DIR)/bin/java -server -version
420 copy_product_jdk:
421 $(RM) -r $(JDK_IMAGE_DIR)
422 $(MKDIR) -p $(JDK_IMAGE_DIR)
423 ($(CD) $(JDK_IMPORT_PATH) && \
424 $(TAR) -cf - $(JDK_DIRS)) | \
425 ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -)
427 copy_fastdebug_jdk:
428 $(RM) -r $(JDK_IMAGE_DIR)/fastdebug
429 $(MKDIR) -p $(JDK_IMAGE_DIR)/fastdebug
430 if [ -d $(JDK_IMPORT_PATH)/fastdebug ] ; then \
431 ($(CD) $(JDK_IMPORT_PATH)/fastdebug && \
432 $(TAR) -cf - $(JDK_DIRS)) | \
433 ($(CD) $(JDK_IMAGE_DIR)/fastdebug && $(TAR) -xf -) ; \
434 else \
435 ($(CD) $(JDK_IMPORT_PATH) && \
436 $(TAR) -cf - $(JDK_DIRS)) | \
437 ($(CD) $(JDK_IMAGE_DIR)/fastdebug && $(TAR) -xf -) ; \
438 fi
440 copy_debug_jdk:
441 $(RM) -r $(JDK_IMAGE_DIR)/debug
442 $(MKDIR) -p $(JDK_IMAGE_DIR)/debug
443 if [ -d $(JDK_IMPORT_PATH)/debug ] ; then \
444 ($(CD) $(JDK_IMPORT_PATH)/debug && \
445 $(TAR) -cf - $(JDK_DIRS)) | \
446 ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
447 elif [ -d $(JDK_IMPORT_PATH)/fastdebug ] ; then \
448 ($(CD) $(JDK_IMPORT_PATH)/fastdebug && \
449 $(TAR) -cf - $(JDK_DIRS)) | \
450 ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
451 else \
452 ($(CD) $(JDK_IMPORT_PATH) && \
453 $(TAR) -cf - $(JDK_DIRS)) | \
454 ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
455 fi
457 #
458 # Check target
459 #
460 check: variable_check
462 #
463 # Help target
464 #
465 help: intro_help target_help variable_help notes_help examples_help
467 # Intro help message
468 intro_help:
469 @$(ECHO) \
470 "Makefile for the Hotspot workspace."
471 @$(ECHO) \
472 "Default behavior is to build and create an export area for the j2se builds."
474 # Target help
475 target_help:
476 @$(ECHO) "help: This help message"
477 @$(ECHO) "all: Same as: all_product all_fastdebug"
478 @$(ECHO) "world: Same as: all create_jdk"
479 @$(ECHO) "all_product: Same as: product product1 export_product"
480 @$(ECHO) "all_fastdebug: Same as: fastdebug fastdebug1 export_fastdebug"
481 @$(ECHO) "all_debug: Same as: jvmg jvmg1 export_debug"
482 @$(ECHO) "all_optimized: Same as: optimized optimized1 export_optimized"
483 @$(ECHO) "clean: Clean all areas"
484 @$(ECHO) "export_product: Export product files to EXPORT_PATH"
485 @$(ECHO) "export_fastdebug: Export fastdebug files to EXPORT_PATH"
486 @$(ECHO) "export_debug: Export debug files to EXPORT_PATH"
487 @$(ECHO) "export_optimized: Export optimized files to EXPORT_PATH"
488 @$(ECHO) "create_jdk: Create JDK image, export all files into it"
489 @$(ECHO) "update_jdk: Update JDK image with fresh exported files"
490 @$(ECHO) " "
491 @$(ECHO) "Others targets are:"
492 @$(ECHO) " $(C1_VM_TARGETS)"
493 @$(ECHO) " $(C2_VM_TARGETS)"
494 @$(ECHO) " $(KERNEL_VM_TARGETS)"
496 # Variable help (only common ones used by this workspace)
497 variable_help: variable_help_intro variable_list variable_help_end
498 variable_help_intro:
499 @$(ECHO) "--- Common Variables ---"
500 variable_help_end:
501 @$(ECHO) " "
502 @$(ECHO) "--- Make Arguments ---"
503 @$(ECHO) "MAKE_ARGS=$(MAKE_ARGS)"
505 # One line descriptions for the variables
506 SLASH_JAVA.desc = Root of all build tools, e.g. /java or J:
507 OUTPUTDIR.desc = Output directory, default is build/<osname>
508 BOOTDIR.desc = JDK used to compile agent java source and test with
509 JDK_IMPORT_PATH.desc = Promoted JDK to copy for 'create_jdk'
510 EXPORT_PATH.desc = Directory to place files to export for JDK build
512 # Make variables to print out (description and value)
513 VARIABLE_PRINTVAL_LIST += \
514 SLASH_JAVA \
515 OUTPUTDIR \
516 BOOTDIR \
517 JDK_IMPORT_PATH \
518 EXPORT_PATH
520 # Make variables that should refer to directories that exist
521 VARIABLE_CHECKDIR_LIST += \
522 SLASH_JAVA \
523 BOOTDIR \
524 JDK_IMPORT_PATH
526 # For pattern rules below, so all are treated the same
527 DO_PRINTVAL_LIST=$(VARIABLE_PRINTVAL_LIST:%=%.printval)
528 DO_CHECKDIR_LIST=$(VARIABLE_CHECKDIR_LIST:%=%.checkdir)
530 # Complete variable check
531 variable_check: $(DO_CHECKDIR_LIST)
532 variable_list: $(DO_PRINTVAL_LIST) variable_check
534 # Pattern rule for printing out a variable
535 %.printval:
536 @$(ECHO) " ALT_$* - $($*.desc)"
537 @$(ECHO) " $*=$($*)"
539 # Pattern rule for checking to see if a variable with a directory exists
540 %.checkdir:
541 @if [ ! -d $($*) ] ; then \
542 $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
543 fi
545 # Pattern rule for checking to see if a variable with a file exists
546 %.checkfil:
547 @if [ ! -f $($*) ] ; then \
548 $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
549 fi
551 # Misc notes on help
552 notes_help:
553 @$(ECHO) \
554 "--- Notes --- "
555 @$(ECHO) \
556 "- JDK_IMPORT_PATH must refer to a compatible build, not all past promoted"
557 @$(ECHO) \
558 " builds or previous release JDK builds will work."
559 @$(ECHO) \
560 "- The fastest builds have been when the workspace and the BOOTDIR are on"
561 @$(ECHO) \
562 " local disk."
564 examples_help:
565 @$(ECHO) \
566 "--- Examples --- "
567 @$(ECHO) \
568 " $(MAKE) all"
569 @$(ECHO) \
570 " $(MAKE) world"
571 @$(ECHO) \
572 " $(MAKE) ALT_BOOTDIR=/opt/java/jdk$(PREVIOUS_JDK_VERSION)"
573 @$(ECHO) \
574 " $(MAKE) ALT_JDK_IMPORT_PATH=/opt/java/jdk$(JDK_VERSION)"
576 # JPRT rule to build this workspace
577 include $(GAMMADIR)/make/jprt.gmk
579 .PHONY: all world clobber clean help $(C1_VM_TARGETS) $(C2_VM_TARGETS) \
580 $(KERNEL_VM_TARGETS) \
581 generic_build1 generic_build2 generic_buildkernel generic_export \
582 export_product export_fastdebug export_debug export_optimized \
583 export_jdk_product export_jdk_fastdebug export_jdk_debug \
584 create_jdk copy_jdk update_jdk test_jdk \
585 copy_product_jdk copy_fastdebug_jdk copy_debug_jdk