Makefile revision 222:ed13debe9a5e
11590Srgrimes# 21590Srgrimes# Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved. 31590Srgrimes# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 41590Srgrimes# 51590Srgrimes# This code is free software; you can redistribute it and/or modify it 61590Srgrimes# under the terms of the GNU General Public License version 2 only, as 71590Srgrimes# published by the Free Software Foundation. Oracle designates this 81590Srgrimes# particular file as subject to the "Classpath" exception as provided 91590Srgrimes# by Oracle in the LICENSE file that accompanied this code. 101590Srgrimes# 111590Srgrimes# This code is distributed in the hope that it will be useful, but WITHOUT 121590Srgrimes# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 131590Srgrimes# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 141590Srgrimes# version 2 for more details (a copy is included in the LICENSE file that 151590Srgrimes# accompanied this code). 161590Srgrimes# 171590Srgrimes# You should have received a copy of the GNU General Public License version 181590Srgrimes# 2 along with this work; if not, write to the Free Software Foundation, 191590Srgrimes# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 201590Srgrimes# 211590Srgrimes# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 221590Srgrimes# or visit www.oracle.com if you need additional information or have any 231590Srgrimes# questions. 241590Srgrimes# 251590Srgrimes 261590SrgrimesBUILD_PARENT_DIRECTORY=. 271590Srgrimes 281590Srgrimesifndef TOPDIR 2950477Speter TOPDIR:=. 301590Srgrimesendif 311590Srgrimes 321590Srgrimes# Openjdk sources (only used if SKIP_OPENJDK_BUILD!=true) 3379535SruOPENJDK_SOURCETREE=$(TOPDIR)/openjdk 341590SrgrimesOPENJDK_BUILDDIR:=$(shell \ 351590Srgrimes if [ -r $(OPENJDK_SOURCETREE)/Makefile ]; then \ 361590Srgrimes echo "$(OPENJDK_SOURCETREE)"; \ 371590Srgrimes else \ 3868963Sru echo "."; \ 3949123Sgreen fi) 40146466Sru 411590Srgrimesifndef JDK_TOPDIR 421590Srgrimes JDK_TOPDIR=$(TOPDIR)/jdk 431590Srgrimesendif 4486597Smurrayifndef JDK_MAKE_SHARED_DIR 4586597Smurray JDK_MAKE_SHARED_DIR=$(JDK_TOPDIR)/make/common/shared 4686597Smurrayendif 471590Srgrimes 481590Srgrimes# For start and finish echo lines 4993214ScharnierTITLE_TEXT = Control $(PLATFORM) $(ARCH) $(RELEASE) 5093214ScharnierDATE_STAMP = `$(DATE) '+%y-%m-%d %H:%M'` 5149123SgreenSTART_ECHO = echo "$(TITLE_TEXT) $@ build started: $(DATE_STAMP)" 5249123SgreenFINISH_ECHO = echo "$(TITLE_TEXT) $@ build finished: $(DATE_STAMP)" 5379755Sdd 54165331Srudefault: all 55165331Sru 561590Srgrimesinclude $(JDK_MAKE_SHARED_DIR)/Defs-control.gmk 571590Srgrimesinclude ./make/Defs-internal.gmk 581590Srgrimesinclude ./make/sanity-rules.gmk 591590Srgrimesinclude ./make/hotspot-rules.gmk 601590Srgrimesinclude ./make/langtools-rules.gmk 611590Srgrimesinclude ./make/corba-rules.gmk 6279755Sddinclude ./make/jaxp-rules.gmk 63165331Sruinclude ./make/jaxws-rules.gmk 6413678Swoschinclude ./make/jdk-rules.gmk 6579755Sddinclude ./make/install-rules.gmk 661590Srgrimesinclude ./make/sponsors-rules.gmk 671590Srgrimesinclude ./make/deploy-rules.gmk 681590Srgrimes 691590Srgrimes# What "all" means 701590Srgrimesall:: 711590Srgrimes @$(START_ECHO) 721590Srgrimes 731590Srgrimesall:: openjdk_check sanity 741590Srgrimes 7586597Smurrayifeq ($(SKIP_FASTDEBUG_BUILD), false) 761590Srgrimes all:: fastdebug_build 7718725Sjkhendif 78165331Sru 7918725Sjkhifeq ($(SKIP_DEBUG_BUILD), false) 80100026Skeramida all:: debug_build 81100026Skeramidaendif 8293214Scharnier 8393214Scharnierifneq ($(SKIP_OPENJDK_BUILD), true) 8470197Sru all:: openjdk_build 851590Srgrimesendif 86165331Sru 871590Srgrimesall:: all_product_build 881590Srgrimes 891590Srgrimesall:: 901590Srgrimes @$(FINISH_ECHO) 911590Srgrimes 921590Srgrimes# Everything for a full product build 931590Srgrimesall_product_build:: 9468963Sru @$(START_ECHO) 951590Srgrimes 961590Srgrimesifeq ($(SKIP_PRODUCT_BUILD), false) 97 98 all_product_build:: product_build 99 100 ifeq ($(BUILD_INSTALL), true) 101 all_product_build:: $(INSTALL) 102 clobber:: install-clobber 103 endif 104 105 ifeq ($(BUILD_SPONSORS), true) 106 all_product_build:: $(SPONSORS) 107 clobber:: sponsors-clobber 108 endif 109 110 ifneq ($(SKIP_COMPARE_IMAGES), true) 111 all_product_build:: compare-image 112 endif 113 114endif 115 116all_product_build:: 117 @$(FINISH_ECHO) 118 119# Generic build of basic repo series 120generic_build_repo_series:: 121 $(MKDIR) -p $(OUTPUTDIR) 122 $(MKDIR) -p $(OUTPUTDIR)/j2sdk-image 123 124ifeq ($(BUILD_LANGTOOLS), true) 125 generic_build_repo_series:: langtools 126 clobber:: langtools-clobber 127endif 128 129ifeq ($(BUILD_CORBA), true) 130 generic_build_repo_series:: corba 131 clobber:: corba-clobber 132endif 133 134ifeq ($(BUILD_JAXP), true) 135 generic_build_repo_series:: jaxp 136 clobber:: jaxp-clobber 137endif 138 139ifeq ($(BUILD_JAXWS), true) 140 generic_build_repo_series:: jaxws 141 clobber:: jaxws-clobber 142endif 143 144ifeq ($(BUILD_HOTSPOT), true) 145 generic_build_repo_series:: $(HOTSPOT) 146 clobber:: hotspot-clobber 147endif 148 149ifeq ($(BUILD_JDK), true) 150 generic_build_repo_series:: $(JDK_JAVA_EXE) 151 clobber:: jdk-clobber 152endif 153 154ifeq ($(BUILD_DEPLOY), true) 155 generic_build_repo_series:: $(DEPLOY) 156 clobber:: deploy-clobber 157endif 158 159ifeq ($(BUILD_JDK), true) 160 ifeq ($(BUNDLE_RULES_AVAILABLE), true) 161 generic_build_repo_series:: openjdk-binary-plugs-bundles 162 endif 163endif 164 165# The debug build, fastdebug or debug. Needs special handling. 166# Note that debug builds do NOT do INSTALL steps, but must be done 167# after the product build and before the INSTALL step of the product build. 168# 169# DEBUG_NAME is fastdebug or debug 170# ALT_OUTPUTDIR is changed to have -debug or -fastdebug suffix 171# The resulting j2sdk-image is used by the install makefiles to create a 172# debug install bundle jdk-*-debug-** bundle (tar or zip) 173# which will install in the debug or fastdebug subdirectory of the 174# normal product install area. 175# The install process needs to know what the DEBUG_NAME is, so 176# look for INSTALL_DEBUG_NAME in the install rules. 177# 178# NOTE: On windows, do not use $(ABS_BOOTDIR_OUTPUTDIR)-$(DEBUG_NAME). 179# Due to the use of short paths in $(ABS_OUTPUTDIR), this may 180# not be the same location. 181# 182 183# Location of fresh bootdir output 184ABS_BOOTDIR_OUTPUTDIR=$(ABS_OUTPUTDIR)/bootjdk 185FRESH_BOOTDIR=$(ABS_BOOTDIR_OUTPUTDIR)/j2sdk-image 186FRESH_DEBUG_BOOTDIR=$(ABS_BOOTDIR_OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-$(DEBUG_NAME)/j2sdk-image 187 188create_fresh_product_bootdir: FRC 189 @$(START_ECHO) 190 $(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTDIR_OUTPUTDIR) \ 191 GENERATE_DOCS=false \ 192 BOOT_CYCLE_SETTINGS= \ 193 build_product_image 194 @$(FINISH_ECHO) 195 196create_fresh_debug_bootdir: FRC 197 @$(START_ECHO) 198 $(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTDIR_OUTPUTDIR) \ 199 GENERATE_DOCS=false \ 200 BOOT_CYCLE_DEBUG_SETTINGS= \ 201 build_debug_image 202 @$(FINISH_ECHO) 203 204create_fresh_fastdebug_bootdir: FRC 205 @$(START_ECHO) 206 $(MAKE) ALT_OUTPUTDIR=$(ABS_BOOTDIR_OUTPUTDIR) \ 207 GENERATE_DOCS=false \ 208 BOOT_CYCLE_DEBUG_SETTINGS= \ 209 build_fastdebug_image 210 @$(FINISH_ECHO) 211 212# Create boot image? 213ifeq ($(SKIP_BOOT_CYCLE),false) 214 ifneq ($(PLATFORM)$(ARCH_DATA_MODEL),solaris64) 215 DO_BOOT_CYCLE=true 216 endif 217endif 218 219ifeq ($(DO_BOOT_CYCLE),true) 220 221 # Create the bootdir to use in the build 222 product_build:: create_fresh_product_bootdir 223 debug_build:: create_fresh_debug_bootdir 224 fastdebug_build:: create_fresh_fastdebug_bootdir 225 226 # Define variables to be used now for the boot jdk 227 BOOT_CYCLE_SETTINGS= \ 228 ALT_BOOTDIR=$(FRESH_BOOTDIR) \ 229 ALT_JDK_IMPORT_PATH=$(FRESH_BOOTDIR) 230 BOOT_CYCLE_DEBUG_SETTINGS= \ 231 ALT_BOOTDIR=$(FRESH_DEBUG_BOOTDIR) \ 232 ALT_JDK_IMPORT_PATH=$(FRESH_DEBUG_BOOTDIR) 233 234else 235 236 # Use the supplied ALT_BOOTDIR as the boot 237 BOOT_CYCLE_SETTINGS= 238 BOOT_CYCLE_DEBUG_SETTINGS= 239 240endif 241 242build_product_image: 243 @$(START_ECHO) 244 $(MAKE) \ 245 SKIP_FASTDEBUG_BUILD=true \ 246 SKIP_DEBUG_BUILD=true \ 247 $(BOOT_CYCLE_SETTINGS) \ 248 generic_build_repo_series 249 @$(FINISH_ECHO) 250 251# NOTE: On windows, do not use $(ABS_OUTPUTDIR)-$(DEBUG_NAME). 252# Due to the use of short paths in $(ABS_OUTPUTDIR), this may 253# not be the same location. 254 255generic_debug_build: 256 @$(START_ECHO) 257 $(MAKE) \ 258 ALT_OUTPUTDIR=$(ABS_OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-$(DEBUG_NAME) \ 259 DEBUG_NAME=$(DEBUG_NAME) \ 260 GENERATE_DOCS=false \ 261 $(BOOT_CYCLE_DEBUG_SETTINGS) \ 262 generic_build_repo_series 263 @$(FINISH_ECHO) 264 265build_debug_image: 266 $(MAKE) DEBUG_NAME=debug generic_debug_build 267 268build_fastdebug_image: 269 $(MAKE) DEBUG_NAME=fastdebug generic_debug_build 270 271# Build final image 272product_build:: build_product_image 273debug_build:: build_debug_image 274fastdebug_build:: build_fastdebug_image 275 276# Check on whether we really can build the openjdk, need source etc. 277openjdk_check: FRC 278ifneq ($(SKIP_OPENJDK_BUILD), true) 279 @$(ECHO) " " 280 @$(ECHO) "=================================================" 281 @if [ ! -r $(OPENJDK_BUILDDIR)/Makefile ] ; then \ 282 $(ECHO) "ERROR: No openjdk source tree available at: $(OPENJDK_BUILDDIR)"; \ 283 exit 1; \ 284 else \ 285 $(ECHO) "OpenJDK will be built after JDK is built"; \ 286 $(ECHO) " OPENJDK_BUILDDIR=$(OPENJDK_BUILDDIR)"; \ 287 fi 288 @$(ECHO) "=================================================" 289 @$(ECHO) " " 290endif 291 292# If we have bundle rules, we have a chance here to do a complete cycle 293# build, of production and open build. 294# FIXUP: We should create the openjdk source bundle and build that? 295# But how do we reliable create or get at a formal openjdk source tree? 296# The one we have needs to be trimmed of built bits and closed dirs. 297# The repositories might not be available. 298# The openjdk source bundle is probably not available. 299 300ifneq ($(SKIP_OPENJDK_BUILD), true) 301 ifeq ($(BUILD_JDK), true) 302 ifeq ($(BUNDLE_RULES_AVAILABLE), true) 303 304OPENJDK_PLUGS=$(ABS_OUTPUTDIR)/$(OPENJDK_BINARY_PLUGS_INAME) 305OPENJDK_OUTPUTDIR=$(ABS_OUTPUTDIR)/open-output 306OPENJDK_BUILD_NAME \ 307 = openjdk-$(JDK_MINOR_VERSION)-$(BUILD_NUMBER)-$(PLATFORM)-$(ARCH)-$(BUNDLE_DATE) 308OPENJDK_BUILD_BINARY_ZIP=$(ABS_BIN_BUNDLEDIR)/$(OPENJDK_BUILD_NAME).zip 309BUILT_IMAGE=$(ABS_OUTPUTDIR)/j2sdk-image 310ifeq ($(PLATFORM)$(ARCH_DATA_MODEL),solaris64) 311 OPENJDK_BOOTDIR=$(BOOTDIR) 312 OPENJDK_IMPORTJDK=$(JDK_IMPORT_PATH) 313else 314 OPENJDK_BOOTDIR=$(BUILT_IMAGE) 315 OPENJDK_IMPORTJDK=$(BUILT_IMAGE) 316endif 317 318openjdk_build: 319 @$(START_ECHO) 320 @$(ECHO) " " 321 @$(ECHO) "=================================================" 322 @$(ECHO) "Starting openjdk build" 323 @$(ECHO) " Using: ALT_JDK_DEVTOOLS_DIR=$(JDK_DEVTOOLS_DIR)" 324 @$(ECHO) "=================================================" 325 @$(ECHO) " " 326 $(RM) -r $(OPENJDK_OUTPUTDIR) 327 $(MKDIR) -p $(OPENJDK_OUTPUTDIR) 328 ($(CD) $(OPENJDK_BUILDDIR) && $(MAKE) \ 329 OPENJDK=true \ 330 GENERATE_DOCS=false \ 331 ALT_JDK_DEVTOOLS_DIR=$(JDK_DEVTOOLS_DIR) \ 332 ALT_OUTPUTDIR=$(OPENJDK_OUTPUTDIR) \ 333 ALT_BINARY_PLUGS_PATH=$(OPENJDK_PLUGS) \ 334 ALT_BOOTDIR=$(OPENJDK_BOOTDIR) \ 335 ALT_JDK_IMPORT_PATH=$(OPENJDK_IMPORTJDK) \ 336 product_build ) 337 $(RM) $(OPENJDK_BUILD_BINARY_ZIP) 338 ( $(CD) $(OPENJDK_OUTPUTDIR)/j2sdk-image && \ 339 $(ZIPEXE) -q -r $(OPENJDK_BUILD_BINARY_ZIP) .) 340 $(RM) -r $(OPENJDK_OUTPUTDIR) 341 @$(ECHO) " " 342 @$(ECHO) "=================================================" 343 @$(ECHO) "Finished openjdk build" 344 @$(ECHO) " Binary Bundle: $(OPENJDK_BUILD_BINARY_ZIP)" 345 @$(ECHO) "=================================================" 346 @$(ECHO) " " 347 @$(FINISH_ECHO) 348 349 endif 350 endif 351endif 352 353clobber:: 354 $(RM) -r $(OUTPUTDIR)/* 355 $(RM) -r $(OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-debug/* 356 $(RM) -r $(OUTPUTDIR)/../$(PLATFORM)-$(ARCH)-fastdebug/* 357 -($(RMDIR) -p $(OUTPUTDIR) > $(DEV_NULL) 2>&1; $(TRUE)) 358 359clean: clobber 360 361# 362# Dev builds 363# 364 365dev : dev-build 366 367dev-build: 368 $(MAKE) DEV_ONLY=true all 369dev-sanity: 370 $(MAKE) DEV_ONLY=true sanity 371dev-clobber: 372 $(MAKE) DEV_ONLY=true clobber 373 374# 375# Quick jdk verification build 376# 377jdk_only: 378 $(MAKE) SKIP_FASTDEBUG_BUILD=true BUILD_HOTSPOT=false all 379 380 381# 382# Quick jdk verification fastdebug build 383# 384jdk_fastdebug_only: 385 $(MAKE) DEBUG_NAME=fastdebug BUILD_HOTSPOT=false BUILD_DEPLOY=false \ 386 BUILD_INSTALL=false BUILD_SPONSORS=false generic_debug_build 387 388# 389# Quick deploy verification fastdebug build 390# 391deploy_fastdebug_only: 392 $(MAKE) \ 393 DEBUG_NAME=fastdebug \ 394 BUILD_HOTSPOT=false \ 395 BUILD_JDK=false \ 396 BUILD_LANGTOOLS=false \ 397 BUILD_CORBA=false \ 398 BUILD_JAXP=false \ 399 BUILD_JAXWS=false \ 400 BUILD_INSTALL=false \ 401 BUILD_SPONSORS=false \ 402 generic_debug_build 403 404# 405# Product build (skip debug builds) 406# 407product_only: 408 $(MAKE) SKIP_FASTDEBUG_BUILD=true all 409 410# 411# Check target 412# 413 414check: variable_check 415 416# 417# Help target 418# 419help: intro_help target_help variable_help notes_help examples_help 420 421# Intro help message 422intro_help: 423 @$(ECHO) "\ 424Makefile for the JDK builds (all the JDK). \n\ 425" 426 427# Target help 428target_help: 429 @$(ECHO) "\ 430--- Common Targets --- \n\ 431all -- build the core JDK (default target) \n\ 432help -- Print out help information \n\ 433check -- Check make variable values for correctness \n\ 434sanity -- Perform detailed sanity checks on system and settings \n\ 435fastdebug_build -- build the core JDK in 'fastdebug' mode (-g -O) \n\ 436debug_build -- build the core JDK in 'debug' mode (-g) \n\ 437clean -- remove all built and imported files \n\ 438clobber -- same as clean \n\ 439" 440 441# Variable help (only common ones used by this Makefile) 442variable_help: variable_help_intro variable_list variable_help_end 443variable_help_intro: 444 @$(ECHO) "--- Common Variables ---" 445variable_help_end: 446 @$(ECHO) " " 447 448# One line descriptions for the variables 449OUTPUTDIR.desc = Output directory 450PARALLEL_COMPILE_JOBS.desc = Solaris/Linux parallel compile run count 451SLASH_JAVA.desc = Root of all build tools, e.g. /java or J: 452BOOTDIR.desc = JDK used to boot the build 453JDK_IMPORT_PATH.desc = JDK used to import components of the build 454COMPILER_PATH.desc = Compiler install directory 455CACERTS_FILE.desc = Location of certificates file 456DEVTOOLS_PATH.desc = Directory containing zip and gnumake 457CUPS_HEADERS_PATH.desc = Include directory location for CUPS header files 458DXSDK_PATH.desc = Root directory of DirectX SDK 459MSDEVTOOLS_PATH.desc = Root directory of VC++ tools (e.g. rc.exe) 460MSVCRT_DLL_PATH.desc = Directory containing mscvrt.dll 461 462# Make variables to print out (description and value) 463VARIABLE_PRINTVAL_LIST += \ 464 OUTPUTDIR \ 465 PARALLEL_COMPILE_JOBS \ 466 SLASH_JAVA \ 467 BOOTDIR \ 468 JDK_IMPORT_PATH \ 469 COMPILER_PATH \ 470 CACERTS_FILE \ 471 DEVTOOLS_PATH 472 473# Make variables that should refer to directories that exist 474VARIABLE_CHECKDIR_LIST += \ 475 SLASH_JAVA \ 476 BOOTDIR \ 477 JDK_IMPORT_PATH \ 478 COMPILER_PATH \ 479 DEVTOOLS_PATH 480 481# Make variables that should refer to files that exist 482VARIABLE_CHECKFIL_LIST += \ 483 CACERTS_FILE 484 485# Some are windows specific 486ifeq ($(PLATFORM), windows) 487 488VARIABLE_PRINTVAL_LIST += \ 489 DXSDK_PATH \ 490 MSDEVTOOLS_PATH \ 491 MSVCRT_DLL_PATH 492 493VARIABLE_CHECKDIR_LIST += \ 494 DXSDK_PATH \ 495 MSDEVTOOLS_PATH \ 496 MSVCRT_DLL_PATH 497 498endif 499 500# For pattern rules below, so all are treated the same 501DO_PRINTVAL_LIST=$(VARIABLE_PRINTVAL_LIST:%=%.printval) 502DO_CHECKDIR_LIST=$(VARIABLE_CHECKDIR_LIST:%=%.checkdir) 503DO_CHECKFIL_LIST=$(VARIABLE_CHECKFIL_LIST:%=%.checkfil) 504 505# Complete variable check 506variable_check: $(DO_CHECKDIR_LIST) $(DO_CHECKFIL_LIST) 507variable_list: $(DO_PRINTVAL_LIST) variable_check 508 509# Pattern rule for printing out a variable 510%.printval: 511 @$(ECHO) " ALT_$* - $($*.desc)" 512 @$(ECHO) " \t $*=$($*)" 513 514# Pattern rule for checking to see if a variable with a directory exists 515%.checkdir: 516 @if [ ! -d $($*) ] ; then \ 517 $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \ 518 fi 519 520# Pattern rule for checking to see if a variable with a file exists 521%.checkfil: 522 @if [ ! -f $($*) ] ; then \ 523 $(ECHO) "WARNING: $* does not exist, try $(MAKE) sanity"; \ 524 fi 525 526# Misc notes on help 527notes_help: 528 @$(ECHO) "\ 529--- Notes --- \n\ 530- All builds use same output directory unless overridden with \n\ 531 \t ALT_OUTPUTDIR=<dir>, changing from product to fastdebug you may want \n\ 532 \t to use the clean target first. \n\ 533- JDK_IMPORT_PATH must refer to a compatible build, not all past promoted \n\ 534 \t builds or previous release JDK builds will work. \n\ 535- The fastest builds have been when the sources and the BOOTDIR are on \n\ 536 \t local disk. \n\ 537" 538 539examples_help: 540 @$(ECHO) "\ 541--- Examples --- \n\ 542 $(MAKE) fastdebug_build \n\ 543 $(MAKE) ALT_OUTPUTDIR=/tmp/foobar all \n\ 544 $(MAKE) ALT_OUTPUTDIR=/tmp/foobar fastdebug_build \n\ 545 $(MAKE) ALT_OUTPUTDIR=/tmp/foobar all \n\ 546 $(MAKE) ALT_BOOTDIR=/opt/java/jdk1.5.0 \n\ 547 $(MAKE) ALT_JDK_IMPORT_PATH=/opt/java/jdk1.6.0 \n\ 548" 549 550################################################################ 551# Source and binary plug bundling 552################################################################ 553ifeq ($(BUNDLE_RULES_AVAILABLE), true) 554 include $(BUNDLE_RULES) 555endif 556 557################################################################ 558# rule to test 559################################################################ 560 561.NOTPARALLEL: test_run 562 563test: 564 $(MAKE) test_run 565 566test_run: test_clean test_start test_summary 567 568test_start: 569 @$(ECHO) "Tests started at `$(DATE)`" 570 571test_clean: 572 $(RM) $(OUTPUTDIR)/test_failures.txt $(OUTPUTDIR)/test_log.txt 573 574test_summary: $(OUTPUTDIR)/test_failures.txt 575 @$(ECHO) "#################################################" 576 @$(ECHO) "Tests completed at `$(DATE)`" 577 @( $(EGREP) '^TEST STATS:' $(OUTPUTDIR)/test_log.txt \ 578 || $(ECHO) "No TEST STATS seen in log" ) 579 @$(ECHO) "For complete details see: $(OUTPUTDIR)/test_log.txt" 580 @$(ECHO) "#################################################" 581 @if [ -s $< ] ; then \ 582 $(ECHO) "ERROR: Test failure count: `$(CAT) $< | $(WC) -l`"; \ 583 $(CAT) $<; \ 584 exit 1; \ 585 else \ 586 $(ECHO) "Success! No failures detected"; \ 587 fi 588 589# Get failure list from log 590$(OUTPUTDIR)/test_failures.txt: $(OUTPUTDIR)/test_log.txt 591 @$(RM) $@ 592 @( $(EGREP) '^FAILED:' $< || $(ECHO) "" ) | $(NAWK) 'length>0' > $@ 593 594# Get log file of all tests run 595JDK_TO_TEST := $(shell \ 596 if [ -d "$(ABS_OUTPUTDIR)/j2sdk-image" ] ; then \ 597 $(ECHO) "$(ABS_OUTPUTDIR)/j2sdk-image"; \ 598 elif [ -d "$(ABS_OUTPUTDIR)/bin" ] ; then \ 599 $(ECHO) "$(ABS_OUTPUTDIR)"; \ 600 elif [ "$(PRODUCT_HOME)" != "" -a -d "$(PRODUCT_HOME)/bin" ] ; then \ 601 $(ECHO) "$(PRODUCT_HOME)"; \ 602 fi \ 603) 604TEST_TARGETS=all 605$(OUTPUTDIR)/test_log.txt: 606 $(RM) $@ 607 ( $(CD) test && \ 608 $(MAKE) NO_STOPPING=- PRODUCT_HOME=$(JDK_TO_TEST) $(TEST_TARGETS) \ 609 ) | tee $@ 610 611################################################################ 612# JPRT rule to build 613################################################################ 614 615include ./make/jprt.gmk 616 617################################################################ 618# PHONY 619################################################################ 620 621.PHONY: all test test_run test_start test_summary test_clean \ 622 generic_build_repo_series \ 623 what clobber insane \ 624 dev dev-build dev-sanity dev-clobber \ 625 product_build \ 626 fastdebug_build \ 627 debug_build \ 628 build_product_image \ 629 build_debug_image \ 630 build_fastdebug_image \ 631 create_fresh_product_bootdir \ 632 create_fresh_debug_bootdir \ 633 create_fresh_fastdebug_bootdir \ 634 generic_debug_build 635 636# Force target 637FRC: 638 639