make/Makefile

Thu, 20 Nov 2008 16:56:09 -0800

author
ysr
date
Thu, 20 Nov 2008 16:56:09 -0800
changeset 888
c96030fff130
parent 631
d1605aabd0a1
child 1445
354d3184f6b2
child 1619
7fbf850d87b7
permissions
-rw-r--r--

6684579: SoftReference processing can be made more efficient
Summary: For current soft-ref clearing policies, we can decide at marking time if a soft-reference will definitely not be cleared, postponing the decision of whether it will definitely be cleared to the final reference processing phase. This can be especially beneficial in the case of concurrent collectors where the marking is usually concurrent but reference processing is usually not.
Reviewed-by: jmasa

duke@435 1 #
xdono@631 2 # Copyright 2005-2008 Sun Microsystems, Inc. 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 #
duke@435 19 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
duke@435 20 # CA 95054 USA or visit www.sun.com if you need additional information or
duke@435 21 # have any 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
duke@435 87
coleenp@548 88 # JDK directory list
coleenp@548 89 JDK_DIRS=bin include jre lib demo
coleenp@548 90
duke@435 91 all: all_product all_fastdebug
duke@435 92 all_product: product product1 productkernel docs export_product
duke@435 93 all_fastdebug: fastdebug fastdebug1 fastdebugkernel docs export_fastdebug
duke@435 94 all_debug: jvmg jvmg1 jvmgkernel docs export_debug
duke@435 95 all_optimized: optimized optimized1 optimizedkernel docs export_optimized
duke@435 96
duke@435 97 # Do everything
duke@435 98 world: all create_jdk
duke@435 99
duke@435 100 # Build or export docs
duke@435 101 docs:
duke@435 102 ifeq ($(OSNAME),windows)
duke@435 103 @$(ECHO) "No docs ($(VM_TARGET)) for windows"
duke@435 104 else
duke@435 105 $(CD) $(OUTPUTDIR); \
duke@435 106 $(MAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 107 $(MAKE_ARGS) docs
duke@435 108 endif
duke@435 109
duke@435 110 # Build variation of hotspot
duke@435 111 $(C1_VM_TARGETS):
duke@435 112 $(CD) $(GAMMADIR)/make; \
duke@435 113 $(MAKE) VM_TARGET=$@ generic_build1 $(ALT_OUT)
duke@435 114
duke@435 115 $(C2_VM_TARGETS):
duke@435 116 $(CD) $(GAMMADIR)/make; \
duke@435 117 $(MAKE) VM_TARGET=$@ generic_build2 $(ALT_OUT)
duke@435 118
duke@435 119 $(KERNEL_VM_TARGETS):
duke@435 120 $(CD) $(GAMMADIR)/make; \
duke@435 121 $(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT)
duke@435 122
duke@435 123 # Build compiler1 (client) rule, different for platforms
duke@435 124 generic_build1:
duke@435 125 $(MKDIR) -p $(OUTPUTDIR)
duke@435 126 ifeq ($(OSNAME),windows)
duke@435 127 ifeq ($(ARCH_DATA_MODEL), 32)
duke@435 128 $(CD) $(OUTPUTDIR); \
duke@435 129 $(NMAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 130 Variant=compiler1 \
duke@435 131 WorkSpace=$(ABS_GAMMADIR) \
duke@435 132 BootStrapDir=$(ABS_BOOTDIR) \
duke@435 133 BuildUser=$(USERNAME) \
duke@435 134 $(MAKE_ARGS) $(VM_TARGET:%1=%)
duke@435 135 else
duke@435 136 @$(ECHO) "No compiler1 ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
duke@435 137 endif
duke@435 138 else
duke@435 139 ifeq ($(ARCH_DATA_MODEL), 32)
duke@435 140 $(CD) $(OUTPUTDIR); \
duke@435 141 $(MAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 142 $(MAKE_ARGS) $(VM_TARGET)
duke@435 143 else
duke@435 144 @$(ECHO) "No compiler1 ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
duke@435 145 endif
duke@435 146 endif
duke@435 147
duke@435 148 # Build compiler2 (server) rule, different for platforms
duke@435 149 generic_build2:
duke@435 150 $(MKDIR) -p $(OUTPUTDIR)
duke@435 151 ifeq ($(OSNAME),windows)
duke@435 152 $(CD) $(OUTPUTDIR); \
duke@435 153 $(NMAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 154 Variant=compiler2 \
duke@435 155 WorkSpace=$(ABS_GAMMADIR) \
duke@435 156 BootStrapDir=$(ABS_BOOTDIR) \
duke@435 157 BuildUser=$(USERNAME) \
duke@435 158 $(MAKE_ARGS) $(VM_TARGET)
duke@435 159 else
duke@435 160 $(CD) $(OUTPUTDIR); \
duke@435 161 $(MAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 162 $(MAKE_ARGS) $(VM_TARGET)
duke@435 163 endif
duke@435 164
duke@435 165 generic_buildkernel:
duke@435 166 $(MKDIR) -p $(OUTPUTDIR)
duke@435 167 ifeq ($(OSNAME),windows)
duke@435 168 ifeq ($(ARCH_DATA_MODEL), 32)
duke@435 169 $(CD) $(OUTPUTDIR); \
duke@435 170 $(NMAKE) -f $(ABS_OS_MAKEFILE) \
duke@435 171 Variant=kernel \
duke@435 172 WorkSpace=$(ABS_GAMMADIR) \
duke@435 173 BootStrapDir=$(ABS_BOOTDIR) \
duke@435 174 BuildUser=$(USERNAME) \
duke@435 175 $(MAKE_ARGS) $(VM_TARGET:%kernel=%)
duke@435 176 else
duke@435 177 @$(ECHO) "No kernel ($(VM_TARGET)) for ARCH_DATA_MODEL=$(ARCH_DATA_MODEL)"
duke@435 178 endif
duke@435 179 else
duke@435 180 @$(ECHO) "No kernel ($(VM_TARGET)) for OS_NAME=$(OSNAME)"
duke@435 181 endif
duke@435 182
duke@435 183 # Export file rule
duke@435 184 generic_export: $(EXPORT_LIST)
duke@435 185 export_product:
duke@435 186 $(MAKE) VM_SUBDIR=product generic_export
duke@435 187 export_fastdebug:
duke@435 188 $(MAKE) VM_SUBDIR=fastdebug EXPORT_SUBDIR=/fastdebug generic_export
duke@435 189 export_debug:
duke@435 190 $(MAKE) VM_SUBDIR=${VM_DEBUG} EXPORT_SUBDIR=/debug generic_export
duke@435 191 export_optimized:
duke@435 192 $(MAKE) VM_SUBDIR=optimized EXPORT_SUBDIR=/optimized generic_export
duke@435 193 export_product_jdk:
duke@435 194 $(MAKE) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR) \
duke@435 195 VM_SUBDIR=product generic_export
duke@435 196 export_optimized_jdk:
duke@435 197 $(MAKE) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR) \
duke@435 198 VM_SUBDIR=optimized generic_export
duke@435 199 export_fastdebug_jdk:
duke@435 200 $(MAKE) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR)/fastdebug \
duke@435 201 VM_SUBDIR=fastdebug generic_export
duke@435 202 export_debug_jdk:
duke@435 203 $(MAKE) ALT_EXPORT_PATH=$(JDK_IMAGE_DIR)/debug \
duke@435 204 VM_SUBDIR=${VM_DEBUG} generic_export
duke@435 205
duke@435 206
duke@435 207 # Export file copy rules
duke@435 208 XUSAGE=$(HS_SRC_DIR)/share/vm/Xusage.txt
duke@435 209 DOCS_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_docs
duke@435 210 C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1
duke@435 211 C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2
duke@435 212 KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel
duke@435 213 C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR)
duke@435 214 C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR)
duke@435 215 KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR)
duke@435 216
duke@435 217 # Misc files and generated files need to come from C1 or C2 area
duke@435 218 ifeq ($(ARCH_DATA_MODEL), 32)
duke@435 219 MISC_DIR=$(C1_DIR)
duke@435 220 GEN_DIR=$(C1_BASE_DIR)/generated
duke@435 221 else
duke@435 222 MISC_DIR=$(C2_DIR)
duke@435 223 GEN_DIR=$(C2_BASE_DIR)/generated
duke@435 224 endif
duke@435 225
duke@435 226 # Bin files (windows)
duke@435 227 ifeq ($(OSNAME),windows)
duke@435 228
duke@435 229 # Get jvm.lib
duke@435 230 $(EXPORT_LIB_DIR)/%.lib: $(MISC_DIR)/%.lib
duke@435 231 $(install-file)
duke@435 232
duke@435 233 # Other libraries (like SA)
duke@435 234 $(EXPORT_JRE_BIN_DIR)/%.dll: $(MISC_DIR)/%.dll
duke@435 235 $(install-file)
duke@435 236 $(EXPORT_JRE_BIN_DIR)/%.pdb: $(MISC_DIR)/%.pdb
duke@435 237 $(install-file)
duke@435 238 $(EXPORT_JRE_BIN_DIR)/%.map: $(MISC_DIR)/%.map
duke@435 239 $(install-file)
duke@435 240
duke@435 241 # Client files always come from C1 area
duke@435 242 $(EXPORT_CLIENT_DIR)/%.dll: $(C1_DIR)/%.dll
duke@435 243 $(install-file)
duke@435 244 $(EXPORT_CLIENT_DIR)/%.pdb: $(C1_DIR)/%.pdb
duke@435 245 $(install-file)
duke@435 246 $(EXPORT_CLIENT_DIR)/%.map: $(C1_DIR)/%.map
duke@435 247 $(install-file)
duke@435 248
duke@435 249 # Server files always come from C2 area
duke@435 250 $(EXPORT_SERVER_DIR)/%.dll: $(C2_DIR)/%.dll
duke@435 251 $(install-file)
duke@435 252 $(EXPORT_SERVER_DIR)/%.pdb: $(C2_DIR)/%.pdb
duke@435 253 $(install-file)
duke@435 254 $(EXPORT_SERVER_DIR)/%.map: $(C2_DIR)/%.map
duke@435 255 $(install-file)
duke@435 256
duke@435 257 # Kernel files always come from kernel area
duke@435 258 $(EXPORT_KERNEL_DIR)/%.dll: $(KERNEL_DIR)/%.dll
duke@435 259 $(install-file)
duke@435 260 $(EXPORT_KERNEL_DIR)/%.pdb: $(KERNEL_DIR)/%.pdb
duke@435 261 $(install-file)
duke@435 262 $(EXPORT_KERNEL_DIR)/%.map: $(KERNEL_DIR)/%.map
duke@435 263 $(install-file)
duke@435 264 endif
duke@435 265
duke@435 266 # Shared Library
duke@435 267 ifneq ($(OSNAME),windows)
duke@435 268 $(EXPORT_JRE_LIB_ARCH_DIR)/%.so: $(C2_DIR)/%.so
duke@435 269 $(install-file)
duke@435 270 $(EXPORT_CLIENT_DIR)/%.so: $(C1_DIR)/%.so
duke@435 271 $(install-file)
duke@435 272 $(EXPORT_CLIENT_DIR)/64/%.so: $(C1_DIR)/%.so
duke@435 273 $(install-file)
duke@435 274 $(EXPORT_SERVER_DIR)/%.so: $(C2_DIR)/%.so
duke@435 275 $(install-file)
duke@435 276 $(EXPORT_SERVER_DIR)/64/%.so: $(C2_DIR)/%.so
duke@435 277 $(install-file)
duke@435 278 endif
duke@435 279
duke@435 280 # Jar file (sa-jdi.jar)
duke@435 281 $(EXPORT_LIB_DIR)/%.jar: $(GEN_DIR)/%.jar
duke@435 282 $(install-file)
duke@435 283
duke@435 284 # Include files (jvmti.h, jni.h, $(JDK_INCLUDE_SUBDIR)/jni_md.h, jmm.h)
duke@435 285 $(EXPORT_INCLUDE_DIR)/%: $(GEN_DIR)/jvmtifiles/%
duke@435 286 $(install-file)
duke@435 287
duke@435 288 $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/prims/%
duke@435 289 $(install-file)
duke@435 290
duke@435 291 $(EXPORT_INCLUDE_DIR)/$(JDK_INCLUDE_SUBDIR)/jni_md.h: $(HS_SRC_DIR)/cpu/$(HS_ARCH)/vm/jni_$(HS_ARCH).h
duke@435 292 $(install-file)
duke@435 293
duke@435 294 $(EXPORT_INCLUDE_DIR)/%: $(HS_SRC_DIR)/share/vm/services/%
duke@435 295 $(install-file)
duke@435 296
duke@435 297 # Doc files (jvmti.html)
duke@435 298 $(EXPORT_DOCS_DIR)/platform/jvmti/%: $(DOCS_DIR)/%
duke@435 299 $(install-file)
duke@435 300
duke@435 301 # Xusage file
duke@435 302 $(EXPORT_SERVER_DIR)/Xusage.txt $(EXPORT_CLIENT_DIR)/Xusage.txt $(EXPORT_KERNEL_DIR)/Xusage.txt: $(XUSAGE)
duke@435 303 $(prep-target)
duke@435 304 $(RM) $@.temp
duke@435 305 $(SED) 's/\(separated by \)[;:]/\1$(PATH_SEP)/g' $< > $@.temp
duke@435 306 $(MV) $@.temp $@
duke@435 307
duke@435 308 #
duke@435 309 # Clean rules
duke@435 310 #
duke@435 311 clobber clean: clean_build clean_export clean_jdk
duke@435 312 clean_build:
duke@435 313 $(RM) -r $(C1_DIR)
duke@435 314 $(RM) -r $(C2_DIR)
duke@435 315 $(RM) -r $(KERNEL_DIR)
duke@435 316 clean_export:
duke@435 317 $(RM) -r $(EXPORT_PATH)
duke@435 318 clean_jdk:
duke@435 319 $(RM) -r $(JDK_IMAGE_DIR)
duke@435 320
duke@435 321 #
duke@435 322 # Create JDK and place this build into it
duke@435 323 #
duke@435 324 create_jdk: copy_jdk update_jdk
duke@435 325
duke@435 326 update_jdk: export_product_jdk export_fastdebug_jdk test_jdk
duke@435 327
duke@435 328 copy_jdk: $(JDK_IMAGE_DIR)/jre/lib/rt.jar
duke@435 329
duke@435 330 $(JDK_IMAGE_DIR)/jre/lib/rt.jar:
duke@435 331 $(RM) -r $(JDK_IMAGE_DIR)
duke@435 332 $(MKDIR) -p $(JDK_IMAGE_DIR)
duke@435 333 ($(CD) $(JDK_IMPORT_PATH) && \
duke@435 334 $(TAR) -cf - *) | \
duke@435 335 ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -)
duke@435 336
duke@435 337 test_jdk:
duke@435 338 ifeq ($(ARCH_DATA_MODEL), 32)
duke@435 339 $(JDK_IMAGE_DIR)/bin/java -client -version
duke@435 340 endif
duke@435 341 $(JDK_IMAGE_DIR)/bin/java -server -version
duke@435 342
duke@435 343 copy_product_jdk:
duke@435 344 $(RM) -r $(JDK_IMAGE_DIR)
duke@435 345 $(MKDIR) -p $(JDK_IMAGE_DIR)
duke@435 346 ($(CD) $(JDK_IMPORT_PATH) && \
coleenp@548 347 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 348 ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xf -)
duke@435 349
duke@435 350 copy_fastdebug_jdk:
duke@435 351 $(RM) -r $(JDK_IMAGE_DIR)/fastdebug
duke@435 352 $(MKDIR) -p $(JDK_IMAGE_DIR)/fastdebug
duke@435 353 if [ -d $(JDK_IMPORT_PATH)/fastdebug ] ; then \
duke@435 354 ($(CD) $(JDK_IMPORT_PATH)/fastdebug && \
coleenp@548 355 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 356 ($(CD) $(JDK_IMAGE_DIR)/fastdebug && $(TAR) -xf -) ; \
duke@435 357 else \
duke@435 358 ($(CD) $(JDK_IMPORT_PATH) && \
coleenp@548 359 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 360 ($(CD) $(JDK_IMAGE_DIR)/fastdebug && $(TAR) -xf -) ; \
duke@435 361 fi
duke@435 362
duke@435 363 copy_debug_jdk:
duke@435 364 $(RM) -r $(JDK_IMAGE_DIR)/debug
duke@435 365 $(MKDIR) -p $(JDK_IMAGE_DIR)/debug
duke@435 366 if [ -d $(JDK_IMPORT_PATH)/debug ] ; then \
duke@435 367 ($(CD) $(JDK_IMPORT_PATH)/debug && \
coleenp@548 368 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 369 ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
duke@435 370 elif [ -d $(JDK_IMPORT_PATH)/fastdebug ] ; then \
duke@435 371 ($(CD) $(JDK_IMPORT_PATH)/fastdebug && \
coleenp@548 372 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 373 ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
duke@435 374 else \
duke@435 375 ($(CD) $(JDK_IMPORT_PATH) && \
coleenp@548 376 $(TAR) -cf - $(JDK_DIRS)) | \
duke@435 377 ($(CD) $(JDK_IMAGE_DIR)/debug && $(TAR) -xf -) ; \
duke@435 378 fi
duke@435 379
duke@435 380 #
duke@435 381 # Check target
duke@435 382 #
duke@435 383 check: variable_check
duke@435 384
duke@435 385 #
duke@435 386 # Help target
duke@435 387 #
duke@435 388 help: intro_help target_help variable_help notes_help examples_help
duke@435 389
duke@435 390 # Intro help message
duke@435 391 intro_help:
duke@435 392 @$(ECHO) \
duke@435 393 "Makefile for the Hotspot workspace."
duke@435 394 @$(ECHO) \
duke@435 395 "Default behavior is to build and create an export area for the j2se builds."
duke@435 396
duke@435 397 # Target help
duke@435 398 target_help:
duke@435 399 @$(ECHO) "help: This help message"
duke@435 400 @$(ECHO) "all: Same as: all_product all_fastdebug"
duke@435 401 @$(ECHO) "world: Same as: all create_jdk"
duke@435 402 @$(ECHO) "all_product: Same as: product product1 export_product"
duke@435 403 @$(ECHO) "all_fastdebug: Same as: fastdebug fastdebug1 export_fastdebug"
duke@435 404 @$(ECHO) "all_debug: Same as: jvmg jvmg1 export_debug"
duke@435 405 @$(ECHO) "all_optimized: Same as: optimized optimized1 export_optimized"
duke@435 406 @$(ECHO) "clean: Clean all areas"
duke@435 407 @$(ECHO) "export_product: Export product files to EXPORT_PATH"
duke@435 408 @$(ECHO) "export_fastdebug: Export fastdebug files to EXPORT_PATH"
duke@435 409 @$(ECHO) "export_debug: Export debug files to EXPORT_PATH"
duke@435 410 @$(ECHO) "export_optimized: Export optimized files to EXPORT_PATH"
duke@435 411 @$(ECHO) "create_jdk: Create JDK image, export all files into it"
duke@435 412 @$(ECHO) "update_jdk: Update JDK image with fresh exported files"
duke@435 413 @$(ECHO) " "
duke@435 414 @$(ECHO) "Others targets are:"
duke@435 415 @$(ECHO) " $(C1_VM_TARGETS)"
duke@435 416 @$(ECHO) " $(C2_VM_TARGETS)"
duke@435 417 @$(ECHO) " $(KERNEL_VM_TARGETS)"
duke@435 418
duke@435 419 # Variable help (only common ones used by this workspace)
duke@435 420 variable_help: variable_help_intro variable_list variable_help_end
duke@435 421 variable_help_intro:
duke@435 422 @$(ECHO) "--- Common Variables ---"
duke@435 423 variable_help_end:
duke@435 424 @$(ECHO) " "
duke@435 425 @$(ECHO) "--- Make Arguments ---"
duke@435 426 @$(ECHO) "MAKE_ARGS=$(MAKE_ARGS)"
duke@435 427
duke@435 428 # One line descriptions for the variables
duke@435 429 SLASH_JAVA.desc = Root of all build tools, e.g. /java or J:
duke@435 430 OUTPUTDIR.desc = Output directory, default is build/<osname>
duke@435 431 BOOTDIR.desc = JDK used to compile agent java source and test with
duke@435 432 JDK_IMPORT_PATH.desc = Promoted JDK to copy for 'create_jdk'
duke@435 433 EXPORT_PATH.desc = Directory to place files to export for JDK build
duke@435 434
duke@435 435 # Make variables to print out (description and value)
duke@435 436 VARIABLE_PRINTVAL_LIST += \
duke@435 437 SLASH_JAVA \
duke@435 438 OUTPUTDIR \
duke@435 439 BOOTDIR \
duke@435 440 JDK_IMPORT_PATH \
duke@435 441 EXPORT_PATH
duke@435 442
duke@435 443 # Make variables that should refer to directories that exist
duke@435 444 VARIABLE_CHECKDIR_LIST += \
duke@435 445 SLASH_JAVA \
duke@435 446 BOOTDIR \
duke@435 447 JDK_IMPORT_PATH
duke@435 448
duke@435 449 # For pattern rules below, so all are treated the same
duke@435 450 DO_PRINTVAL_LIST=$(VARIABLE_PRINTVAL_LIST:%=%.printval)
duke@435 451 DO_CHECKDIR_LIST=$(VARIABLE_CHECKDIR_LIST:%=%.checkdir)
duke@435 452
duke@435 453 # Complete variable check
duke@435 454 variable_check: $(DO_CHECKDIR_LIST)
duke@435 455 variable_list: $(DO_PRINTVAL_LIST) variable_check
duke@435 456
duke@435 457 # Pattern rule for printing out a variable
duke@435 458 %.printval:
duke@435 459 @$(ECHO) " ALT_$* - $($*.desc)"
duke@435 460 @$(ECHO) " $*=$($*)"
duke@435 461
duke@435 462 # Pattern rule for checking to see if a variable with a directory exists
duke@435 463 %.checkdir:
duke@435 464 @if [ ! -d $($*) ] ; then \
duke@435 465 $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
duke@435 466 fi
duke@435 467
duke@435 468 # Pattern rule for checking to see if a variable with a file exists
duke@435 469 %.checkfil:
duke@435 470 @if [ ! -f $($*) ] ; then \
duke@435 471 $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \
duke@435 472 fi
duke@435 473
duke@435 474 # Misc notes on help
duke@435 475 notes_help:
duke@435 476 @$(ECHO) \
duke@435 477 "--- Notes --- "
duke@435 478 @$(ECHO) \
duke@435 479 "- JDK_IMPORT_PATH must refer to a compatible build, not all past promoted"
duke@435 480 @$(ECHO) \
duke@435 481 " builds or previous release JDK builds will work."
duke@435 482 @$(ECHO) \
duke@435 483 "- The fastest builds have been when the workspace and the BOOTDIR are on"
duke@435 484 @$(ECHO) \
duke@435 485 " local disk."
duke@435 486
duke@435 487 examples_help:
duke@435 488 @$(ECHO) \
duke@435 489 "--- Examples --- "
duke@435 490 @$(ECHO) \
duke@435 491 " $(MAKE) all"
duke@435 492 @$(ECHO) \
duke@435 493 " $(MAKE) world"
duke@435 494 @$(ECHO) \
duke@435 495 " $(MAKE) ALT_BOOTDIR=/opt/java/jdk$(PREVIOUS_JDK_VERSION)"
duke@435 496 @$(ECHO) \
duke@435 497 " $(MAKE) ALT_JDK_IMPORT_PATH=/opt/java/jdk$(JDK_VERSION)"
duke@435 498
duke@435 499 # JPRT rule to build this workspace
duke@435 500 include $(GAMMADIR)/make/jprt.gmk
duke@435 501
duke@435 502 .PHONY: all world clobber clean help $(C1_VM_TARGETS) $(C2_VM_TARGETS) \
duke@435 503 $(KERNEL_VM_TARGETS) \
duke@435 504 generic_build1 generic_build2 generic_buildkernel generic_export \
duke@435 505 export_product export_fastdebug export_debug export_optimized \
duke@435 506 export_jdk_product export_jdk_fastdebug export_jdk_debug \
duke@435 507 create_jdk copy_jdk update_jdk test_jdk \
duke@435 508 copy_product_jdk copy_fastdebug_jdk copy_debug_jdk
duke@435 509

mercurial