make/Makefile

Tue, 21 Aug 2012 14:10:39 -0700

author
johnc
date
Tue, 21 Aug 2012 14:10:39 -0700
changeset 3998
7383557659bd
parent 3726
74c359c4a9e5
child 4165
fb19af007ffc
permissions
-rw-r--r--

7185699: G1: Prediction model discrepancies
Summary: Correct the result value of G1CollectedHeap::pending_card_num(). Change the code that calculates the GC efficiency of a non-young heap region to use historical data from mixed GCs and the actual number of live bytes when predicting how long it would take to collect the region. Changes were also reviewed by Thomas Schatzl.
Reviewed-by: azeemj, brutisso

duke@435 1 #
phh@3492 2 # Copyright (c) 2005, 2012, 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)
dholmes@2544 46 # ALT_JDK_TARGET_IMPORT_PATH Current JDK build when cross-compiling
duke@435 47 # ALT_BUILD_WIN_SA Building SA on Windows is disabled by default.
duke@435 48 # Set ALT_BUILD_WIN_SA=1 to enable building SA on
duke@435 49 # Windows.
duke@435 50 # Version strings and numbers:
duke@435 51 # JDK_VERSION Current JDK version (e.g. 1.6.0)
duke@435 52 # PREVIOUS_JDK_VERSION Previous (bootdir) JDK version (e.g. 1.5.0)
duke@435 53 # FULL_VERSION Full version string to use (e.g. "1.6.0-ea-b42")
duke@435 54 #
duke@435 55 # Version strings and numbers especially needed on Windows:
duke@435 56 # COOKED_JDK_UPDATE_VERSION Just the update release number (e.g. 02)
duke@435 57 # COOKED_BUILD_NUMBER Just the build number (e.g. 42)
duke@435 58 # JDK_MKTG_VERSION Marketing JDK version (e.g. 6.0)
duke@435 59 # JDK_MAJOR_VERSION Major number for version (e.g. 1) always 1?
duke@435 60 # JDK_MINOR_VERSION Minor number for version (e.g. 6)
duke@435 61 # JDK_MICRO_VERSION Micro number for version (e.g. 0)
duke@435 62 #
duke@435 63
duke@435 64 # Default is build both product fastdebug and create export area
duke@435 65
duke@435 66 # Allow to build HotSpot in local directory from sources specified by GAMMADIR.
duke@435 67 # After make/defs.make GAMMADIR is defined.
duke@435 68 ifdef GAMMADIR
duke@435 69 ifndef ALT_OUTPUTDIR
duke@435 70 ALT_OUTPUTDIR := $(shell pwd)
duke@435 71 endif
duke@435 72 include $(GAMMADIR)/make/defs.make
duke@435 73 else
duke@435 74 include defs.make
duke@435 75 endif
duke@435 76
kamg@2515 77 include $(GAMMADIR)/make/altsrc.make
duke@435 78
duke@435 79 ifneq ($(ALT_OUTPUTDIR),)
duke@435 80 ALT_OUT=ALT_OUTPUTDIR=$(ALT_OUTPUTDIR)
duke@435 81 else
duke@435 82 ALT_OUT=
duke@435 83 endif
duke@435 84
duke@435 85 # Typical C1/C2 targets made available with this Makefile
duke@435 86 C1_VM_TARGETS=product1 fastdebug1 optimized1 jvmg1
duke@435 87 C2_VM_TARGETS=product fastdebug optimized jvmg
duke@435 88 KERNEL_VM_TARGETS=productkernel fastdebugkernel optimizedkernel jvmgkernel
never@1445 89 ZERO_VM_TARGETS=productzero fastdebugzero optimizedzero jvmgzero
twisti@2047 90 SHARK_VM_TARGETS=productshark fastdebugshark optimizedshark jvmgshark
duke@435 91
phh@3492 92 COMMON_VM_PRODUCT_TARGETS=product product1 productkernel docs export_product
phh@3492 93 COMMON_VM_FASTDEBUG_TARGETS=fastdebug fastdebug1 fastdebugkernel docs export_fastdebug
phh@3492 94 COMMON_VM_DEBUG_TARGETS=jvmg jvmg1 jvmgkernel docs export_debug
phh@3492 95
coleenp@548 96 # JDK directory list
coleenp@548 97 JDK_DIRS=bin include jre lib demo
coleenp@548 98
duke@435 99 all: all_product all_fastdebug
phh@3492 100
phh@3492 101 ifdef BUILD_CLIENT_ONLY
bobv@2036 102 all_product: product1 docs export_product
bobv@2036 103 all_fastdebug: fastdebug1 docs export_fastdebug
bobv@2036 104 all_debug: jvmg1 docs export_debug
phh@3492 105 else
phh@3492 106 ifeq ($(MACOSX_UNIVERSAL),true)
phh@3492 107 all_product: universal_product
phh@3492 108 all_fastdebug: universal_fastdebug
phh@3492 109 all_debug: universal_debug
phh@3492 110 else
phh@3492 111 all_product: $(COMMON_VM_PRODUCT_TARGETS)
phh@3492 112 all_fastdebug: $(COMMON_VM_FASTDEBUG_TARGETS)
phh@3492 113 all_debug: $(COMMON_VM_DEBUG_TARGETS)
bobv@2036 114 endif
phh@3492 115 endif
phh@3492 116
duke@435 117 all_optimized: optimized optimized1 optimizedkernel docs export_optimized
duke@435 118
never@1445 119 allzero: all_productzero all_fastdebugzero
never@1445 120 all_productzero: productzero docs export_product
never@1445 121 all_fastdebugzero: fastdebugzero docs export_fastdebug
never@1445 122 all_debugzero: jvmgzero docs export_debug
never@1445 123 all_optimizedzero: optimizedzero docs export_optimized
never@1445 124
twisti@2047 125 allshark: all_productshark all_fastdebugshark
twisti@2047 126 all_productshark: productshark docs export_product
twisti@2047 127 all_fastdebugshark: fastdebugshark docs export_fastdebug
twisti@2047 128 all_debugshark: jvmgshark docs export_debug
twisti@2047 129 all_optimizedshark: optimizedshark docs export_optimized
twisti@2047 130
duke@435 131 # Do everything
duke@435 132 world: all create_jdk
duke@435 133
duke@435 134 # Build or export docs
duke@435 135 docs:
duke@435 136 ifeq ($(OSNAME),windows)
duke@435 137 @$(ECHO) "No docs ($(VM_TARGET)) for windows"
duke@435 138 else
dcubed@3725 139 # We specify 'BUILD_FLAVOR=product' so that the proper
dcubed@3725 140 # ENABLE_FULL_DEBUG_SYMBOLS value is used.
duke@435 141 $(CD) $(OUTPUTDIR); \
duke@435 142 $(MAKE) -f $(ABS_OS_MAKEFILE) \
dcubed@3725 143 $(MAKE_ARGS) BUILD_FLAVOR=product docs
duke@435 144 endif
duke@435 145
duke@435 146 # Build variation of hotspot
duke@435 147 $(C1_VM_TARGETS):
duke@435 148 $(CD) $(GAMMADIR)/make; \
dcubed@3725 149 $(MAKE) BUILD_FLAVOR=$(@:%1=%) VM_TARGET=$@ generic_build1 $(ALT_OUT)
duke@435 150
duke@435 151 $(C2_VM_TARGETS):
duke@435 152 $(CD) $(GAMMADIR)/make; \
dcubed@3725 153 $(MAKE) BUILD_FLAVOR=$@ VM_TARGET=$@ generic_build2 $(ALT_OUT)
duke@435 154
duke@435 155 $(KERNEL_VM_TARGETS):
duke@435 156 $(CD) $(GAMMADIR)/make; \
dcubed@3725 157 $(MAKE) BUILD_FLAVOR=$(@:%kernel=%) VM_TARGET=$@ \
dcubed@3725 158 generic_buildkernel $(ALT_OUT)
duke@435 159
never@1445 160 $(ZERO_VM_TARGETS):
never@1445 161 $(CD) $(GAMMADIR)/make; \
dcubed@3725 162 $(MAKE) BUILD_FLAVOR=$(@:%zero=%) VM_TARGET=$@ \
dcubed@3725 163 generic_buildzero $(ALT_OUT)
never@1445 164
twisti@2047 165 $(SHARK_VM_TARGETS):
twisti@2047 166 $(CD) $(GAMMADIR)/make; \
dcubed@3725 167 $(MAKE) BUILD_FLAVOR=$(@:%shark=%) VM_TARGET=$@ \
dcubed@3725 168 generic_buildshark $(ALT_OUT)
twisti@2047 169
duke@435 170 # Build compiler1 (client) rule, different for platforms
duke@435 171 generic_build1:
duke@435 172 $(MKDIR) -p $(OUTPUTDIR)
duke@435 173 ifeq ($(OSNAME),windows)
duke@435 174 ifeq ($(ARCH_DATA_MODEL), 32)
duke@435 175 $(CD) $(OUTPUTDIR); \
duke@435 176 $(NMAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 177 Variant=compiler1 \
duke@435 178 WorkSpace=$(ABS_GAMMADIR) \
duke@435 179 BootStrapDir=$(ABS_BOOTDIR) \
duke@435 180 BuildUser=$(USERNAME) \
duke@435 181 $(MAKE_ARGS) $(VM_TARGET:%1=%)
duke@435 182 else
duke@435 183 @$(ECHO) "No compiler1 ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
duke@435 184 endif
duke@435 185 else
duke@435 186 ifeq ($(ARCH_DATA_MODEL), 32)
duke@435 187 $(CD) $(OUTPUTDIR); \
duke@435 188 $(MAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 189 $(MAKE_ARGS) $(VM_TARGET)
duke@435 190 else
duke@435 191 @$(ECHO) "No compiler1 ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
duke@435 192 endif
duke@435 193 endif
duke@435 194
duke@435 195 # Build compiler2 (server) rule, different for platforms
duke@435 196 generic_build2:
duke@435 197 $(MKDIR) -p $(OUTPUTDIR)
duke@435 198 ifeq ($(OSNAME),windows)
duke@435 199 $(CD) $(OUTPUTDIR); \
duke@435 200 $(NMAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 201 Variant=compiler2 \
duke@435 202 WorkSpace=$(ABS_GAMMADIR) \
duke@435 203 BootStrapDir=$(ABS_BOOTDIR) \
duke@435 204 BuildUser=$(USERNAME) \
duke@435 205 $(MAKE_ARGS) $(VM_TARGET)
duke@435 206 else
duke@435 207 $(CD) $(OUTPUTDIR); \
duke@435 208 $(MAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 209 $(MAKE_ARGS) $(VM_TARGET)
duke@435 210 endif
duke@435 211
duke@435 212 generic_buildkernel:
duke@435 213 $(MKDIR) -p $(OUTPUTDIR)
duke@435 214 ifeq ($(OSNAME),windows)
duke@435 215 ifeq ($(ARCH_DATA_MODEL), 32)
duke@435 216 $(CD) $(OUTPUTDIR); \
duke@435 217 $(NMAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 218 Variant=kernel \
duke@435 219 WorkSpace=$(ABS_GAMMADIR) \
duke@435 220 BootStrapDir=$(ABS_BOOTDIR) \
duke@435 221 BuildUser=$(USERNAME) \
duke@435 222 $(MAKE_ARGS) $(VM_TARGET:%kernel=%)
duke@435 223 else
duke@435 224 @$(ECHO) "No kernel ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
duke@435 225 endif
duke@435 226 else
duke@435 227 @$(ECHO) "No kernel ($(VM_TARGET)) for OS_NAME=$(OSNAME)"
duke@435 228 endif
duke@435 229
never@1445 230 generic_buildzero:
never@1445 231 $(MKDIR) -p $(OUTPUTDIR)
never@1445 232 $(CD) $(OUTPUTDIR); \
never@1445 233 $(MAKE) -f $(ABS_OS_MAKEFILE) \
never@1445 234 $(MAKE_ARGS) $(VM_TARGET)
never@1445 235
twisti@2047 236 generic_buildshark:
twisti@2047 237 $(MKDIR) -p $(OUTPUTDIR)
twisti@2047 238 $(CD) $(OUTPUTDIR); \
twisti@2047 239 $(MAKE) -f $(ABS_OS_MAKEFILE) \
twisti@2047 240 $(MAKE_ARGS) $(VM_TARGET)
twisti@2047 241
duke@435 242 # Export file rule
duke@435 243 generic_export: $(EXPORT_LIST)
duke@435 244 export_product:
dcubed@3725 245 $(MAKE) BUILD_FLAVOR=$(@:export_%=%) VM_SUBDIR=$(@:export_%=%) \
dcubed@3725 246 generic_export
duke@435 247 export_fastdebug:
dcubed@3725 248 $(MAKE) BUILD_FLAVOR=$(@:export_%=%) VM_SUBDIR=$(@:export_%=%) \
dcubed@3725 249 EXPORT_SUBDIR=/$(@:export_%=%) \
dcubed@3725 250 generic_export
duke@435 251 export_debug:
dcubed@3725 252 $(MAKE) BUILD_FLAVOR=$(@:export_%=%) VM_SUBDIR=${VM_DEBUG} \
dcubed@3725 253 EXPORT_SUBDIR=/$(@:export_%=%) \
dcubed@3725 254 generic_export
duke@435 255 export_optimized:
dcubed@3725 256 $(MAKE) BUILD_FLAVOR=$(@:export_%=%) VM_SUBDIR=$(@:export_%=%) \
dcubed@3725 257 EXPORT_SUBDIR=/$(@:export_%=%) \
dcubed@3725 258 generic_export
phh@3492 259 export_product_jdk::
dcubed@3725 260 $(MAKE) BUILD_FLAVOR=$(@:export_%_jdk=%) \
dcubed@3725 261 VM_SUBDIR=$(@:export_%_jdk=%) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR) \
dcubed@3725 262 generic_export
phh@3492 263 export_optimized_jdk::
dcubed@3725 264 $(MAKE) BUILD_FLAVOR=$(@:export_%_jdk=%) \
dcubed@3725 265 VM_SUBDIR=$(@:export_%_jdk=%) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR) \
dcubed@3725 266 generic_export
phh@3492 267 export_fastdebug_jdk::
dcubed@3725 268 $(MAKE) BUILD_FLAVOR=$(@:export_%_jdk=%) \
dcubed@3725 269 VM_SUBDIR=$(@:export_%_jdk=%) \
dcubed@3725 270 ALT_EXPORT_PATH=$(JDK_IMAGE_DIR)/$(@:export_%_jdk=%) \
dcubed@3725 271 generic_export
phh@3492 272 export_debug_jdk::
dcubed@3725 273 $(MAKE) BUILD_FLAVOR=$(@:export_%_jdk=%) VM_SUBDIR=${VM_DEBUG} \
dcubed@3725 274 ALT_EXPORT_PATH=$(JDK_IMAGE_DIR)/$(@:export_%_jdk=%) \
dcubed@3725 275 generic_export
duke@435 276
duke@435 277 # Export file copy rules
duke@435 278 XUSAGE=$(HS_SRC_DIR)/share/vm/Xusage.txt
duke@435 279 DOCS_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_docs
duke@435 280 C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1
duke@435 281 C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2
duke@435 282 KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel
never@1445 283 ZERO_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_zero
twisti@2047 284 SHARK_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_shark
duke@435 285 C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR)
duke@435 286 C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR)
duke@435 287 KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR)
never@1445 288 ZERO_DIR=$(ZERO_BASE_DIR)/$(VM_SUBDIR)
twisti@2047 289 SHARK_DIR=$(SHARK_BASE_DIR)/$(VM_SUBDIR)
duke@435 290
erikj@3649 291 ifeq ($(JVM_VARIANT_SERVER), true)
erikj@3649 292 MISC_DIR=$(C2_DIR)
erikj@3649 293 GEN_DIR=$(C2_BASE_DIR)/generated
twisti@2047 294 endif
erikj@3649 295 ifeq ($(JVM_VARIANT_CLIENT), true)
erikj@3649 296 MISC_DIR=$(C1_DIR)
erikj@3649 297 GEN_DIR=$(C1_BASE_DIR)/generated
duke@435 298 endif
erikj@3649 299 ifeq ($(JVM_VARIANT_KERNEL), true)
erikj@3649 300 MISC_DIR=$(C2_DIR)
erikj@3649 301 GEN_DIR=$(C2_BASE_DIR)/generated
erikj@3649 302 endif
erikj@3649 303 ifeq ($(JVM_VARIANT_ZEROSHARK), true)
erikj@3649 304 MISC_DIR=$(SHARK_DIR)
erikj@3649 305 GEN_DIR=$(SHARK_BASE_DIR)/generated
erikj@3649 306 endif
erikj@3649 307 ifeq ($(JVM_VARIANT_ZERO), true)
erikj@3649 308 MISC_DIR=$(ZERO_DIR)
erikj@3649 309 GEN_DIR=$(ZERO_BASE_DIR)/generated
never@1445 310 endif
duke@435 311
duke@435 312 # Bin files (windows)
duke@435 313 ifeq ($(OSNAME),windows)
duke@435 314
duke@435 315 # Get jvm.lib
duke@435 316 $(EXPORT_LIB_DIR)/%.lib: $(MISC_DIR)/%.lib
duke@435 317 $(install-file)
duke@435 318
duke@435 319 # Other libraries (like SA)
dcubed@3724 320 $(EXPORT_JRE_BIN_DIR)/%.diz: $(MISC_DIR)/%.diz
dcubed@3724 321 $(install-file)
duke@435 322 $(EXPORT_JRE_BIN_DIR)/%.dll: $(MISC_DIR)/%.dll
duke@435 323 $(install-file)
duke@435 324 $(EXPORT_JRE_BIN_DIR)/%.pdb: $(MISC_DIR)/%.pdb
duke@435 325 $(install-file)
duke@435 326 $(EXPORT_JRE_BIN_DIR)/%.map: $(MISC_DIR)/%.map
duke@435 327 $(install-file)
duke@435 328
duke@435 329 # Client files always come from C1 area
dcubed@3724 330 $(EXPORT_CLIENT_DIR)/%.diz: $(C1_DIR)/%.diz
dcubed@3724 331 $(install-file)
duke@435 332 $(EXPORT_CLIENT_DIR)/%.dll: $(C1_DIR)/%.dll
duke@435 333 $(install-file)
duke@435 334 $(EXPORT_CLIENT_DIR)/%.pdb: $(C1_DIR)/%.pdb
duke@435 335 $(install-file)
duke@435 336 $(EXPORT_CLIENT_DIR)/%.map: $(C1_DIR)/%.map
duke@435 337 $(install-file)
duke@435 338
duke@435 339 # Server files always come from C2 area
dcubed@3724 340 $(EXPORT_SERVER_DIR)/%.diz: $(C2_DIR)/%.diz
dcubed@3724 341 $(install-file)
duke@435 342 $(EXPORT_SERVER_DIR)/%.dll: $(C2_DIR)/%.dll
duke@435 343 $(install-file)
duke@435 344 $(EXPORT_SERVER_DIR)/%.pdb: $(C2_DIR)/%.pdb
duke@435 345 $(install-file)
duke@435 346 $(EXPORT_SERVER_DIR)/%.map: $(C2_DIR)/%.map
duke@435 347 $(install-file)
duke@435 348
duke@435 349 # Kernel files always come from kernel area
dcubed@3724 350 $(EXPORT_KERNEL_DIR)/%.diz: $(KERNEL_DIR)/%.diz
dcubed@3724 351 $(install-file)
duke@435 352 $(EXPORT_KERNEL_DIR)/%.dll: $(KERNEL_DIR)/%.dll
duke@435 353 $(install-file)
duke@435 354 $(EXPORT_KERNEL_DIR)/%.pdb: $(KERNEL_DIR)/%.pdb
duke@435 355 $(install-file)
duke@435 356 $(EXPORT_KERNEL_DIR)/%.map: $(KERNEL_DIR)/%.map
duke@435 357 $(install-file)
duke@435 358 endif
duke@435 359
duke@435 360 # Shared Library
duke@435 361 ifneq ($(OSNAME),windows)
erikj@3649 362 ifeq ($(JVM_VARIANT_SERVER), true)
erikj@3649 363 $(EXPORT_JRE_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(C2_DIR)/%.$(LIBRARY_SUFFIX)
erikj@3649 364 $(install-file)
erikj@3649 365 $(EXPORT_SERVER_DIR)/%.$(LIBRARY_SUFFIX): $(C2_DIR)/%.$(LIBRARY_SUFFIX)
erikj@3649 366 $(install-file)
erikj@3649 367 $(EXPORT_SERVER_DIR)/64/%.$(LIBRARY_SUFFIX): $(C2_DIR)/%.$(LIBRARY_SUFFIX)
erikj@3649 368 $(install-file)
erikj@3649 369 $(EXPORT_JRE_LIB_ARCH_DIR)/%.debuginfo: $(C2_DIR)/%.debuginfo
erikj@3649 370 $(install-file)
erikj@3649 371 $(EXPORT_SERVER_DIR)/%.debuginfo: $(C2_DIR)/%.debuginfo
erikj@3649 372 $(install-file)
erikj@3649 373 $(EXPORT_SERVER_DIR)/64/%.debuginfo: $(C2_DIR)/%.debuginfo
erikj@3649 374 $(install-file)
dcubed@3726 375 $(EXPORT_JRE_LIB_ARCH_DIR)/%.diz: $(C2_DIR)/%.diz
dcubed@3726 376 $(install-file)
dcubed@3726 377 $(EXPORT_SERVER_DIR)/%.diz: $(C2_DIR)/%.diz
dcubed@3726 378 $(install-file)
dcubed@3726 379 $(EXPORT_SERVER_DIR)/64/%.diz: $(C2_DIR)/%.diz
dcubed@3726 380 $(install-file)
twisti@2047 381 endif
erikj@3649 382 ifeq ($(JVM_VARIANT_CLIENT), true)
erikj@3649 383 $(EXPORT_JRE_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(C1_DIR)/%.$(LIBRARY_SUFFIX)
erikj@3649 384 $(install-file)
erikj@3649 385 $(EXPORT_CLIENT_DIR)/%.$(LIBRARY_SUFFIX): $(C1_DIR)/%.$(LIBRARY_SUFFIX)
erikj@3649 386 $(install-file)
erikj@3649 387 $(EXPORT_CLIENT_DIR)/64/%.$(LIBRARY_SUFFIX): $(C1_DIR)/%.$(LIBRARY_SUFFIX)
erikj@3649 388 $(install-file)
erikj@3649 389 $(EXPORT_JRE_LIB_ARCH_DIR)/%.debuginfo: $(C1_DIR)/%.debuginfo
erikj@3649 390 $(install-file)
erikj@3649 391 $(EXPORT_CLIENT_DIR)/%.debuginfo: $(C1_DIR)/%.debuginfo
erikj@3649 392 $(install-file)
erikj@3649 393 $(EXPORT_CLIENT_DIR)/64/%.debuginfo: $(C1_DIR)/%.debuginfo
erikj@3649 394 $(install-file)
dcubed@3726 395 $(EXPORT_JRE_LIB_ARCH_DIR)/%.diz: $(C1_DIR)/%.diz
dcubed@3726 396 $(install-file)
dcubed@3726 397 $(EXPORT_CLIENT_DIR)/%.diz: $(C1_DIR)/%.diz
dcubed@3726 398 $(install-file)
dcubed@3726 399 $(EXPORT_CLIENT_DIR)/64/%.diz: $(C1_DIR)/%.diz
dcubed@3726 400 $(install-file)
erikj@3649 401 endif
erikj@3649 402 ifeq ($(JVM_VARIANT_ZEROSHARK), true)
erikj@3649 403 $(EXPORT_JRE_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(SHARK_DIR)/%.$(LIBRARY_SUFFIX)
erikj@3649 404 $(install-file)
erikj@3649 405 $(EXPORT_SERVER_DIR)/%.$(LIBRARY_SUFFIX): $(SHARK_DIR)/%.$(LIBRARY_SUFFIX)
erikj@3649 406 $(install-file)
erikj@3649 407 endif
erikj@3649 408 ifeq ($(JVM_VARIANT_ZERO), true)
erikj@3649 409 $(EXPORT_JRE_LIB_ARCH_DIR)/%.$(LIBRARY_SUFFIX): $(ZERO_DIR)/%.$(LIBRARY_SUFFIX)
erikj@3649 410 $(install-file)
erikj@3649 411 $(EXPORT_SERVER_DIR)/%.$(LIBRARY_SUFFIX): $(ZERO_DIR)/%.$(LIBRARY_SUFFIX)
erikj@3649 412 $(install-file)
erikj@3649 413 endif
duke@435 414 endif
duke@435 415
duke@435 416 # Jar file (sa-jdi.jar)
duke@435 417 $(EXPORT_LIB_DIR)/%.jar: $(GEN_DIR)/%.jar
duke@435 418 $(install-file)
duke@435 419
mgerdin@3619 420 $(EXPORT_JRE_LIB_DIR)/%.jar: $(GEN_DIR)/%.jar
mgerdin@3619 421 $(install-file)
mgerdin@3619 422
phh@3427 423 # Include files (jvmti.h, jvmticmlr.h, jni.h, $(JDK_INCLUDE_SUBDIR)/jni_md.h, jmm.h, jfr.h)
duke@435 424 $(EXPORT_INCLUDE_DIR)/%: $(GEN_DIR)/jvmtifiles/%
duke@435 425 $(install-file)
duke@435 426
dcubed@1619 427 $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/code/%
dcubed@1619 428 $(install-file)
dcubed@1619 429
duke@435 430 $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/prims/%
duke@435 431 $(install-file)
duke@435 432
kamg@2515 433 HS_JNI_ARCH_SRC=$(call altsrc-replace,$(HS_COMMON_SRC)/cpu/$(HS_ARCH)/vm/jni_$(HS_ARCH).h)
kamg@2515 434 $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h: $(HS_JNI_ARCH_SRC)
duke@435 435 $(install-file)
duke@435 436
duke@435 437 $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/services/%
duke@435 438 $(install-file)
duke@435 439
phh@3427 440 JFR_EXISTS=$(shell if [ -d $(HS_ALT_SRC) ]; then echo 1; else echo 0; fi)
phh@3427 441 # export jfr.h
phh@3427 442 ifeq ($JFR_EXISTS,1)
phh@3427 443 $(EXPORT_INCLUDE_DIR)/%: $(HS_ALT_SRC)/share/vm/jfr/agent/%
phh@3427 444 $(install-file)
phh@3427 445 else
phh@3427 446 $(EXPORT_INCLUDE_DIR)/jfr.h:
phh@3427 447 endif
phh@3427 448
duke@435 449 # Doc files (jvmti.html)
duke@435 450 $(EXPORT_DOCS_DIR)/platform/jvmti/%: $(DOCS_DIR)/%
duke@435 451 $(install-file)
duke@435 452
duke@435 453 # Xusage file
duke@435 454 $(EXPORT_SERVER_DIR)/Xusage.txt $(EXPORT_CLIENT_DIR)/Xusage.txt $(EXPORT_KERNEL_DIR)/Xusage.txt: $(XUSAGE)
duke@435 455 $(prep-target)
duke@435 456 $(RM) $@.temp
duke@435 457 $(SED) 's/\(separated by \)[;:]/\1$(PATH_SEP)/g' $< > $@.temp
duke@435 458 $(MV) $@.temp $@
duke@435 459
duke@435 460 #
duke@435 461 # Clean rules
duke@435 462 #
duke@435 463 clobber clean: clean_build clean_export clean_jdk
duke@435 464 clean_build:
duke@435 465 $(RM) -r $(C1_DIR)
duke@435 466 $(RM) -r $(C2_DIR)
duke@435 467 $(RM) -r $(KERNEL_DIR)
never@1445 468 $(RM) -r $(ZERO_DIR)
twisti@2047 469 $(RM) -r $(SHARK_DIR)
duke@435 470 clean_export:
duke@435 471 $(RM) -r $(EXPORT_PATH)
duke@435 472 clean_jdk:
duke@435 473 $(RM) -r $(JDK_IMAGE_DIR)
duke@435 474
duke@435 475 #
duke@435 476 # Create JDK and place this build into it
duke@435 477 #
duke@435 478 create_jdk: copy_jdk update_jdk
duke@435 479
duke@435 480 update_jdk: export_product_jdk export_fastdebug_jdk test_jdk
duke@435 481
duke@435 482 copy_jdk: $(JDK_IMAGE_DIR)/jre/lib/rt.jar
duke@435 483
duke@435 484 $(JDK_IMAGE_DIR)/jre/lib/rt.jar:
duke@435 485 $(RM) -r $(JDK_IMAGE_DIR)
duke@435 486 $(MKDIR) -p $(JDK_IMAGE_DIR)
duke@435 487 ($(CD) $(JDK_IMPORT_PATH) && \
duke@435 488 $(TAR) -cf - *) | \
duke@435 489 ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -)
duke@435 490
duke@435 491 test_jdk:
erikj@3649 492 ifeq ($(JVM_VARIANT_CLIENT), true)
erikj@3649 493 $(JDK_IMAGE_DIR)/bin/java -d$(ARCH_DATA_MODEL) -client -Xinternalversion
erikj@3649 494 $(JDK_IMAGE_DIR)/bin/java -d$(ARCH_DATA_MODEL) -client -version
erikj@3649 495 endif
erikj@3649 496 ifeq ($(findstring true, $(JVM_VARIANT_SERVER)\
erikj@3649 497 $(JVM_VARIANT_ZERO)$(JVM_VARIANT_ZEROSHARK)), true)
erikj@3649 498 $(JDK_IMAGE_DIR)/bin/java -d$(ARCH_DATA_MODEL) -server -Xinternalversion
erikj@3649 499 $(JDK_IMAGE_DIR)/bin/java -d$(ARCH_DATA_MODEL) -server -version
erikj@3649 500 endif
erikj@3649 501 ifeq ($(JVM_VARIANT_KERNEL), true)
erikj@3649 502 $(JDK_IMAGE_DIR)/bin/java -d$(ARCH_DATA_MODEL) -kernel -Xinternalversion
erikj@3649 503 $(JDK_IMAGE_DIR)/bin/java -d$(ARCH_DATA_MODEL) -kernel -version
erikj@3649 504 endif
duke@435 505
phh@3492 506 copy_product_jdk::
duke@435 507 $(RM) -r $(JDK_IMAGE_DIR)
duke@435 508 $(MKDIR) -p $(JDK_IMAGE_DIR)
duke@435 509 ($(CD) $(JDK_IMPORT_PATH) && \
coleenp@548 510 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 511 ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -)
duke@435 512
phh@3492 513 copy_fastdebug_jdk::
duke@435 514 $(RM) -r $(JDK_IMAGE_DIR)/fastdebug
duke@435 515 $(MKDIR) -p $(JDK_IMAGE_DIR)/fastdebug
duke@435 516 if [ -d $(JDK_IMPORT_PATH)/fastdebug ] ; then \
duke@435 517 ($(CD) $(JDK_IMPORT_PATH)/fastdebug && \
coleenp@548 518 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 519 ($(CD) $(JDK_IMAGE_DIR)/fastdebug && $(TAR) -xf -) ; \
duke@435 520 else \
duke@435 521 ($(CD) $(JDK_IMPORT_PATH) && \
coleenp@548 522 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 523 ($(CD) $(JDK_IMAGE_DIR)/fastdebug && $(TAR) -xf -) ; \
duke@435 524 fi
duke@435 525
phh@3492 526 copy_debug_jdk::
duke@435 527 $(RM) -r $(JDK_IMAGE_DIR)/debug
duke@435 528 $(MKDIR) -p $(JDK_IMAGE_DIR)/debug
duke@435 529 if [ -d $(JDK_IMPORT_PATH)/debug ] ; then \
duke@435 530 ($(CD) $(JDK_IMPORT_PATH)/debug && \
coleenp@548 531 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 532 ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
duke@435 533 elif [ -d $(JDK_IMPORT_PATH)/fastdebug ] ; then \
duke@435 534 ($(CD) $(JDK_IMPORT_PATH)/fastdebug && \
coleenp@548 535 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 536 ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
duke@435 537 else \
duke@435 538 ($(CD) $(JDK_IMPORT_PATH) && \
coleenp@548 539 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 540 ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
duke@435 541 fi
duke@435 542
duke@435 543 #
duke@435 544 # Check target
duke@435 545 #
duke@435 546 check: variable_check
duke@435 547
duke@435 548 #
duke@435 549 # Help target
duke@435 550 #
duke@435 551 help: intro_help target_help variable_help notes_help examples_help
duke@435 552
duke@435 553 # Intro help message
duke@435 554 intro_help:
duke@435 555 @$(ECHO) \
duke@435 556 "Makefile for the Hotspot workspace."
duke@435 557 @$(ECHO) \
duke@435 558 "Default behavior is to build and create an export area for the j2se builds."
duke@435 559
duke@435 560 # Target help
duke@435 561 target_help:
duke@435 562 @$(ECHO) "help: This help message"
duke@435 563 @$(ECHO) "all: Same as: all_product all_fastdebug"
duke@435 564 @$(ECHO) "world: Same as: all create_jdk"
duke@435 565 @$(ECHO) "all_product: Same as: product product1 export_product"
duke@435 566 @$(ECHO) "all_fastdebug: Same as: fastdebug fastdebug1 export_fastdebug"
duke@435 567 @$(ECHO) "all_debug: Same as: jvmg jvmg1 export_debug"
duke@435 568 @$(ECHO) "all_optimized: Same as: optimized optimized1 export_optimized"
duke@435 569 @$(ECHO) "clean: Clean all areas"
duke@435 570 @$(ECHO) "export_product: Export product files to EXPORT_PATH"
duke@435 571 @$(ECHO) "export_fastdebug: Export fastdebug files to EXPORT_PATH"
duke@435 572 @$(ECHO) "export_debug: Export debug files to EXPORT_PATH"
duke@435 573 @$(ECHO) "export_optimized: Export optimized files to EXPORT_PATH"
duke@435 574 @$(ECHO) "create_jdk: Create JDK image, export all files into it"
duke@435 575 @$(ECHO) "update_jdk: Update JDK image with fresh exported files"
duke@435 576 @$(ECHO) " "
duke@435 577 @$(ECHO) "Others targets are:"
duke@435 578 @$(ECHO) " $(C1_VM_TARGETS)"
duke@435 579 @$(ECHO) " $(C2_VM_TARGETS)"
duke@435 580 @$(ECHO) " $(KERNEL_VM_TARGETS)"
duke@435 581
duke@435 582 # Variable help (only common ones used by this workspace)
duke@435 583 variable_help: variable_help_intro variable_list variable_help_end
duke@435 584 variable_help_intro:
duke@435 585 @$(ECHO) "--- Common Variables ---"
duke@435 586 variable_help_end:
duke@435 587 @$(ECHO) " "
duke@435 588 @$(ECHO) "--- Make Arguments ---"
duke@435 589 @$(ECHO) "MAKE_ARGS=$(MAKE_ARGS)"
duke@435 590
duke@435 591 # One line descriptions for the variables
duke@435 592 SLASH_JAVA.desc = Root of all build tools, e.g. /java or J:
duke@435 593 OUTPUTDIR.desc = Output directory, default is build/<osname>
duke@435 594 BOOTDIR.desc = JDK used to compile agent java source and test with
duke@435 595 JDK_IMPORT_PATH.desc = Promoted JDK to copy for 'create_jdk'
twisti@3567 596 JDK_IMAGE_DIR.desc = Directory to place JDK to copy
duke@435 597 EXPORT_PATH.desc = Directory to place files to export for JDK build
duke@435 598
duke@435 599 # Make variables to print out (description and value)
duke@435 600 VARIABLE_PRINTVAL_LIST += \
duke@435 601 SLASH_JAVA \
duke@435 602 OUTPUTDIR \
duke@435 603 BOOTDIR \
duke@435 604 JDK_IMPORT_PATH \
twisti@3567 605 JDK_IMAGE_DIR \
duke@435 606 EXPORT_PATH
duke@435 607
duke@435 608 # Make variables that should refer to directories that exist
duke@435 609 VARIABLE_CHECKDIR_LIST += \
duke@435 610 SLASH_JAVA \
duke@435 611 BOOTDIR \
duke@435 612 JDK_IMPORT_PATH
duke@435 613
duke@435 614 # For pattern rules below, so all are treated the same
duke@435 615 DO_PRINTVAL_LIST=$(VARIABLE_PRINTVAL_LIST:%=%.printval)
duke@435 616 DO_CHECKDIR_LIST=$(VARIABLE_CHECKDIR_LIST:%=%.checkdir)
duke@435 617
duke@435 618 # Complete variable check
duke@435 619 variable_check: $(DO_CHECKDIR_LIST)
duke@435 620 variable_list: $(DO_PRINTVAL_LIST) variable_check
duke@435 621
duke@435 622 # Pattern rule for printing out a variable
duke@435 623 %.printval:
duke@435 624 @$(ECHO) " ALT_$* - $($*.desc)"
duke@435 625 @$(ECHO) " $*=$($*)"
duke@435 626
duke@435 627 # Pattern rule for checking to see if a variable with a directory exists
duke@435 628 %.checkdir:
duke@435 629 @if [ ! -d $($*) ] ; then \
duke@435 630 $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
duke@435 631 fi
duke@435 632
duke@435 633 # Pattern rule for checking to see if a variable with a file exists
duke@435 634 %.checkfil:
duke@435 635 @if [ ! -f $($*) ] ; then \
duke@435 636 $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
duke@435 637 fi
duke@435 638
duke@435 639 # Misc notes on help
duke@435 640 notes_help:
duke@435 641 @$(ECHO) \
duke@435 642 "--- Notes --- "
duke@435 643 @$(ECHO) \
duke@435 644 "- JDK_IMPORT_PATH must refer to a compatible build, not all past promoted"
duke@435 645 @$(ECHO) \
duke@435 646 " builds or previous release JDK builds will work."
duke@435 647 @$(ECHO) \
duke@435 648 "- The fastest builds have been when the workspace and the BOOTDIR are on"
duke@435 649 @$(ECHO) \
duke@435 650 " local disk."
duke@435 651
duke@435 652 examples_help:
duke@435 653 @$(ECHO) \
duke@435 654 "--- Examples --- "
duke@435 655 @$(ECHO) \
duke@435 656 " $(MAKE) all"
duke@435 657 @$(ECHO) \
duke@435 658 " $(MAKE) world"
duke@435 659 @$(ECHO) \
duke@435 660 " $(MAKE) ALT_BOOTDIR=/opt/java/jdk$(PREVIOUS_JDK_VERSION)"
duke@435 661 @$(ECHO) \
duke@435 662 " $(MAKE) ALT_JDK_IMPORT_PATH=/opt/java/jdk$(JDK_VERSION)"
duke@435 663
phh@3492 664 # Universal build support
phh@3492 665 ifeq ($(OS_VENDOR), Darwin)
phh@3492 666 ifeq ($(MACOSX_UNIVERSAL),true)
phh@3492 667 include $(GAMMADIR)/make/$(OSNAME)/makefiles/universal.gmk
phh@3492 668 endif
phh@3492 669 endif
phh@3492 670
duke@435 671 # JPRT rule to build this workspace
duke@435 672 include $(GAMMADIR)/make/jprt.gmk
duke@435 673
duke@435 674 .PHONY: all world clobber clean help $(C1_VM_TARGETS) $(C2_VM_TARGETS) \
duke@435 675 $(KERNEL_VM_TARGETS) \
duke@435 676 generic_build1 generic_build2 generic_buildkernel generic_export \
duke@435 677 export_product export_fastdebug export_debug export_optimized \
duke@435 678 export_jdk_product export_jdk_fastdebug export_jdk_debug \
duke@435 679 create_jdk copy_jdk update_jdk test_jdk \
phh@3492 680 copy_product_jdk copy_fastdebug_jdk copy_debug_jdk

mercurial