make/Makefile

Tue, 25 Jan 2011 17:58:19 -0500

author
tonyp
date
Tue, 25 Jan 2011 17:58:19 -0500
changeset 2493
97ba643ea3ed
parent 2047
d2ede61b7a12
child 2508
b92c45f2bc75
permissions
-rw-r--r--

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

mercurial