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

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

mercurial