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