test/Makefile

Thu, 12 Oct 2017 17:37:25 +0800

author
aoqi
date
Thu, 12 Oct 2017 17:37:25 +0800
changeset 2526
fee406e1c5f3
parent 2525
2eb010b6cb22
child 2893
ca5783d9a597
permissions
-rw-r--r--

Added tag mips64el-jdk8u25-b17 for changeset 2eb010b6cb22

aoqi@0 1 #
aoqi@0 2 # Makefile to run jtreg and other tests
aoqi@0 3 #
aoqi@0 4
aoqi@0 5 # Product builds and langtools builds
aoqi@0 6 #
aoqi@0 7 # A full product build (or "control" build) creates a complete JDK image.
aoqi@0 8 # To test a product build, set TESTJAVA to the path for the image.
aoqi@0 9 #
aoqi@0 10 # A langtools build just builds the langtools components of a JDK.
aoqi@0 11 # To test a langtools build, set TESTJAVA to the path for a recent JDK
aoqi@0 12 # build, and set TESTBOOTCLASSPATH to the compiled langtools classes --
aoqi@0 13 # for example build/classes or dist/lib/classes.jar.
aoqi@0 14
aoqi@0 15 # JPRT
aoqi@0 16 # JPRT may invoke this Makefile directly, as part of a langtools build,
aoqi@0 17 # or indirectly, via FOREST/test/Makefile, as part of a control build.
aoqi@0 18
aoqi@0 19 # Get OS/ARCH specifics
aoqi@0 20 OSNAME = $(shell uname -s)
aoqi@0 21 ifeq ($(OSNAME), SunOS)
aoqi@0 22 SLASH_JAVA = /java
aoqi@0 23 PLATFORM = solaris
aoqi@0 24 JT_PLATFORM = solaris
aoqi@0 25 ARCH = $(shell uname -p)
aoqi@0 26 ifeq ($(ARCH), i386)
aoqi@0 27 ARCH=i586
aoqi@0 28 endif
aoqi@0 29 endif
aoqi@0 30 ifeq ($(OSNAME), Linux)
aoqi@0 31 SLASH_JAVA = /java
aoqi@0 32 PLATFORM = linux
aoqi@0 33 JT_PLATFORM = linux
aoqi@0 34 ARCH = $(shell uname -m)
aoqi@0 35 ifeq ($(ARCH), i386)
aoqi@0 36 ARCH=i586
aoqi@0 37 endif
aoqi@0 38 endif
aoqi@0 39 ifeq ($(OSNAME), Darwin)
aoqi@0 40 PLATFORM = bsd
aoqi@0 41 JT_PLATFORM = linux
aoqi@0 42 ARCH = $(shell uname -m)
aoqi@0 43 ifeq ($(ARCH), i386)
aoqi@0 44 ARCH=i586
aoqi@0 45 endif
aoqi@0 46 endif
aoqi@0 47 ifeq ($(OSNAME), Windows_NT)
aoqi@0 48 # MKS
aoqi@0 49 PLATFORM=windows
aoqi@0 50 endif
aoqi@0 51 ifeq ($(PLATFORM),)
aoqi@0 52 PLATFORM = windows
aoqi@0 53 CYGPATH = | cygpath -m -s -f -
aoqi@0 54 endif
aoqi@0 55
aoqi@0 56 ifeq ($(PLATFORM), windows)
aoqi@0 57 SLASH_JAVA = J:
aoqi@0 58 JT_PLATFORM = win32
aoqi@0 59 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),ia64)
aoqi@0 60 ARCH=ia64
aoqi@0 61 else
aoqi@0 62 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),AMD64)
aoqi@0 63 ARCH=x64
aoqi@0 64 else
aoqi@0 65 ifeq ($(word 1, $(PROCESSOR_IDENTIFIER)),EM64T)
aoqi@0 66 ARCH=x64
aoqi@0 67 else
aoqi@0 68 ARCH=i586
aoqi@0 69 endif
aoqi@0 70 endif
aoqi@0 71 endif
aoqi@0 72 EXE_SUFFIX=.exe
aoqi@0 73 endif
aoqi@0 74
aoqi@0 75 # Root of this test area (important to use full paths in some places)
aoqi@0 76 TEST_ROOT := $(shell pwd $(CYGPATH) )
aoqi@0 77
aoqi@0 78 # Default bundle of all test results (passed or not) (JPRT only)
aoqi@0 79 ifdef JPRT_JOB_ID
aoqi@0 80 JPRT_CLEAN = clean
aoqi@0 81 JPRT_ARCHIVE_BUNDLE = $(TEST_ROOT)/JPRT_ARCHIVE_BUNDLE.zip
aoqi@0 82 endif
aoqi@0 83
aoqi@0 84 ifeq ($(PLATFORM), windows)
aoqi@0 85 SLASH_JAVA = J:
aoqi@0 86 else
aoqi@0 87 SLASH_JAVA = /java
aoqi@0 88 endif
aoqi@0 89
aoqi@0 90 # Default JTREG to run
aoqi@0 91 ifdef JPRT_JTREG_HOME
aoqi@0 92 JTREG_HOME = $(JPRT_JTREG_HOME)
aoqi@0 93 else
aoqi@0 94 JTREG_HOME = $(SLASH_JAVA)/re/jtreg/4.1/promoted/latest/binaries/jtreg
aoqi@0 95 endif
aoqi@0 96 JTREG = $(JTREG_HOME)/$(JT_PLATFORM)/bin/jtreg
aoqi@0 97 JTDIFF = $(JTREG_HOME)/$(JT_PLATFORM)/bin/jtdiff
aoqi@0 98
aoqi@0 99 # Default JCK to run
aoqi@0 100 ifdef JPRT_JCK_HOME
aoqi@0 101 JCK_HOME = $(JPRT_JCK_HOME)
aoqi@0 102 else
aoqi@0 103 JCK_HOME = $(SLASH_JAVA)/re/jck/8/promoted/latest/binaries
aoqi@0 104 endif
aoqi@0 105
aoqi@0 106 # Default JDK for JTREG and JCK
aoqi@0 107 #
aoqi@0 108 # JT_JAVA is the version of java used to run jtreg/JCK. Since it is now
aoqi@0 109 # standard to execute tests in sameVM mode, it should normally be set the
aoqi@0 110 # same as TESTJAVA (although not necessarily so.)
aoqi@0 111 #
aoqi@0 112 ifdef JPRT_JAVA_HOME
aoqi@0 113 JT_JAVA = $(JPRT_JAVA_HOME)
aoqi@0 114 else
aoqi@0 115 JT_JAVA = $(SLASH_JAVA)/re/jdk/1.7.0/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
aoqi@0 116 endif
aoqi@0 117
aoqi@0 118 # Default JDK to test
aoqi@0 119 ifdef JPRT_IMPORT_PRODUCT_HOME
aoqi@0 120 TESTJAVA = $(JPRT_IMPORT_PRODUCT_HOME)
aoqi@0 121 else
aoqi@0 122 TESTJAVA = $(SLASH_JAVA)/re/jdk/1.7.0/promoted/latest/binaries/$(PLATFORM)-$(ARCH)
aoqi@0 123 endif
aoqi@0 124
aoqi@0 125 # PRODUCT_HOME is a JPRT variable pointing to a directory containing the output from
aoqi@0 126 # make/Makefile
aoqi@0 127 # For langtools, this is a directory containing build and dist
aoqi@0 128 # For a control build, this is build/$(PRODUCT)-$(ARCH)/XYZ-image
aoqi@0 129 # (i.e, j2sdk-image or jdk-module-image)
aoqi@0 130 ifdef PRODUCT_HOME
aoqi@0 131 ifeq ($(shell [ -r $(PRODUCT_HOME)/dist/lib/classes.jar ]; echo $$?),0)
aoqi@0 132 TESTBOOTCLASSPATH = $(PRODUCT_HOME)/dist/lib/classes.jar
aoqi@0 133 endif
aoqi@0 134 ifeq ($(shell [ -r $(PRODUCT_HOME)/bin/javac$(EXE_SUFFIX) ]; echo $$?),0)
aoqi@0 135 TESTJAVA = $(PRODUCT_HOME)
aoqi@0 136 endif
aoqi@0 137 endif
aoqi@0 138
aoqi@0 139 ifdef TESTBOOTCLASSPATH
aoqi@0 140 JTREG_OPTIONS += -Xbootclasspath/p:$(TESTBOOTCLASSPATH)
aoqi@0 141 ### In the following, -refvmoptions is an undocumented option
aoqi@0 142 ### The following does not work JCK 7 b30 2/6/2010. Awaiting b31.
aoqi@0 143 JCK_OPTIONS += \
aoqi@0 144 -vmoptions:-Xbootclasspath/p:$(TESTBOOTCLASSPATH) \
aoqi@0 145 -refvmoptions:-Xbootclasspath/p:$(TESTBOOTCLASSPATH)
aoqi@0 146 endif
aoqi@0 147
aoqi@0 148 # Concurrency is the number of tests that can execute at once.
aoqi@0 149 # On an otherwise empty machine, suggest setting to (#cpus + 2)
aoqi@0 150 # If unset, the default is (#cpus)
aoqi@0 151 ### RFE: determine and use #cpus
aoqi@0 152 ifdef CONCURRENCY
aoqi@0 153 JTREG_OPTIONS += -agentvm -concurrency:$(CONCURRENCY)
aoqi@0 154 else
aoqi@0 155 JTREG_OPTIONS += -samevm
aoqi@0 156 endif
aoqi@0 157
aoqi@0 158 ifdef JCK_CONCURRENCY
aoqi@0 159 JCK_OPTIONS += -concurrency:$(JCK_CONCURRENCY)
aoqi@0 160 endif
aoqi@0 161
aoqi@0 162 # JCK is executed using "Multi-JVM Group Mode", which is a hybrid
aoqi@0 163 # of otherVM and sameVM modes. New JVMs are created and reused for
aoqi@0 164 # a number of tests, then eventually discarded and a new one started.
aoqi@0 165 # This amortizes the JVM startup time. The "group size" defines
aoqi@0 166 # how many tests are run in a JVM before it is replaced.
aoqi@0 167 # If unset, the default is 100.
aoqi@0 168 JCK_GROUP_SIZE = 1000
aoqi@0 169 ifdef JCK_GROUP_SIZE
aoqi@0 170 JCK_COMPILER_OPTIONS += \
aoqi@0 171 -jtoptions:-Ejck.env.compiler.testCompile.groupMode.groupSize=$(JCK_GROUP_SIZE) \
aoqi@0 172 -jtoptions:-Ejck.env.compiler.compRefExecute.groupMode.groupSize=$(JCK_GROUP_SIZE)
aoqi@0 173 ### The following is not supported. Awaiting RFE 6924287
aoqi@0 174 ### 6924287: Jck4Jdk: Allow to configure test group size for group mode via simple command line option
aoqi@0 175 ### JCK_RUNTIME_OPTIONS += \
aoqi@0 176 ### -jtoptions:-Ejck.env.runtime.testCompile.groupMode.groupSize=$(JCK_GROUP_SIZE)
aoqi@0 177 endif
aoqi@0 178
aoqi@0 179 # Timeouts -- by default, increase test timeouts when running on JPRT
aoqi@0 180 ifdef JPRT_JOB_ID
aoqi@0 181 ifndef JTREG_TIMEOUT_FACTOR
aoqi@0 182 JTREG_TIMEOUT_FACTOR = 3
aoqi@0 183 endif
aoqi@0 184 endif
aoqi@0 185 ifdef JTREG_TIMEOUT_FACTOR
aoqi@0 186 JTREG_OPTIONS += -timeoutFactor:$(JTREG_TIMEOUT_FACTOR)
aoqi@0 187 endif
aoqi@0 188
aoqi@0 189 # Default verbosity setting for jtreg
aoqi@0 190 JTREG_VERBOSE = fail,error,nopass
aoqi@0 191
aoqi@0 192 # Default verbosity setting for jck
aoqi@0 193 JCK_VERBOSE = non-pass
aoqi@0 194
aoqi@0 195 # Assertions: some tests show failures when assertions are enabled.
aoqi@0 196 # Since javac is typically loaded via the bootclassloader (either via TESTJAVA
aoqi@0 197 # or TESTBOOTCLASSPATH), you may need -esa to enable assertions in javac.
aoqi@0 198 JTREG_OPTIONS += $(ASSERTION_OPTIONS)
aoqi@0 199 JCK_OPTIONS += $(ASSERTION_OPTIONS:%=-vmoptions:%)
aoqi@0 200
aoqi@0 201 # Include shared options
aoqi@0 202 JCK_COMPILER_OPTIONS += $(JCK_OPTIONS)
aoqi@0 203 JCK_RUNTIME_OPTIONS += $(JCK_OPTIONS)
aoqi@0 204
aoqi@0 205 # Exit codes:
aoqi@0 206 # jtreg, jck: 0: OK, 1: tests failed, 2: tests error; 3+: SERIOUS
aoqi@0 207 FATAL_JTREG_EXIT = 3
aoqi@0 208 FATAL_JCK_EXIT = 3
aoqi@0 209 # jtdiff: 0: OK, 1: differences found; 2+: SERIOUS
aoqi@0 210 FATAL_JTDIFF_EXIT = 2
aoqi@0 211 #
aoqi@0 212 # Exit -- used for final "normal" exit from "make". Redefine to "true" to avoid
aoqi@0 213 # having make exit with non-zero return code.
aoqi@0 214 EXIT = exit
aoqi@0 215 # Function to exit shell if exit code of preceding command is greater than or equal
aoqi@0 216 # to a given level. Redefine function or preceding FATAL_*_EXIT codes as needed.
aoqi@0 217 EXIT_IF_FATAL = status=$$?; if [ $$status -ge $(1) ]; then exit $$status ; fi
aoqi@0 218
aoqi@0 219 # The test directories to run
aoqi@0 220 DEFAULT_TESTDIRS = .
aoqi@0 221 TESTDIRS = $(DEFAULT_TESTDIRS)
aoqi@0 222
aoqi@0 223 # Root of all test results
aoqi@0 224 TEST_OUTPUT_DIR = $(TEST_ROOT)/../build/$(PLATFORM)-$(ARCH)/test/langtools
aoqi@0 225 ABS_TEST_OUTPUT_DIR := \
aoqi@0 226 $(shell mkdir -p $(TEST_OUTPUT_DIR); \
aoqi@0 227 cd $(TEST_OUTPUT_DIR); \
aoqi@0 228 pwd $(CYGPATH))
aoqi@0 229 # Subdirectories for different test runs
aoqi@0 230 JTREG_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jtreg
aoqi@0 231 JCK_COMPILER_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jck-compiler
aoqi@0 232 JCK_RUNTIME_OUTPUT_DIR = $(ABS_TEST_OUTPUT_DIR)/jck-runtime-Xcompile
aoqi@0 233
aoqi@0 234 # Default make rule -- warning, may take a while
aoqi@0 235 all: $(JPRT_CLEAN) jtreg-tests jck-compiler-tests jck-runtime-tests $(JPRT_ARCHIVE_BUNDLE) all-summary
aoqi@0 236 @echo "Testing completed successfully"
aoqi@0 237
aoqi@0 238 jtreg apt javac javadoc javah javap jdeps: $(JPRT_CLEAN) jtreg-tests $(JPRT_ARCHIVE_BUNDLE) jtreg-summary
aoqi@0 239 @echo "Testing completed successfully"
aoqi@0 240
aoqi@0 241 jck-compiler: $(JPRT_CLEAN) jck-compiler-tests $(JPRT_ARCHIVE_BUNDLE) jck-compiler-summary
aoqi@0 242 @echo "Testing completed successfully"
aoqi@0 243
aoqi@0 244 jck-runtime: $(JPRT_CLEAN) jck-runtime-tests $(JPRT_ARCHIVE_BUNDLE) jck-runtime-summary
aoqi@0 245 @echo "Testing completed successfully"
aoqi@0 246
aoqi@0 247 # for use with JPRT -testrule
aoqi@0 248 all: JTREG_TESTDIRS = .
aoqi@0 249 jtreg: JTREG_TESTDIRS = .
aoqi@0 250 apt: JTREG_TESTDIRS = tools/apt
aoqi@0 251 javac: JTREG_TESTDIRS = tools/javac
aoqi@0 252 javadoc: JTREG_TESTDIRS = tools/javadoc com/sun/javadoc
aoqi@0 253 javah: JTREG_TESTDIRS = tools/javah
aoqi@0 254 javap: JTREG_TESTDIRS = tools/javap
aoqi@0 255 jdeps: JTREG_TESTDIRS = tools/jdeps
aoqi@0 256
aoqi@0 257 # Run jtreg tests
aoqi@0 258 #
aoqi@0 259 # JTREG_HOME
aoqi@0 260 # Installed location of jtreg
aoqi@0 261 # JT_JAVA
aoqi@0 262 # Version of java used to run jtreg. Should normally be the same as TESTJAVA
aoqi@0 263 # TESTJAVA
aoqi@0 264 # Version of java to be tested.
aoqi@0 265 # JTREG_VERBOSE
aoqi@0 266 # Verbosity setting for jtreg
aoqi@0 267 # JTREG_OPTIONS
aoqi@0 268 # Additional options for jtreg
aoqi@0 269 # JTREG_TESTDIRS
aoqi@0 270 # Directories of tests to be run
aoqi@0 271 # JTREG_OUTPUT_DIR
aoqi@0 272 # Where to write the results
aoqi@0 273 # JTREG_REFERENCE
aoqi@0 274 # (Optional) reference results (e.g. work, report or summary.txt)
aoqi@0 275 #
aoqi@0 276 jtreg_tests: jtreg-tests
aoqi@0 277 jtreg-tests: check-jtreg FRC
aoqi@0 278 @rm -f -r $(JTREG_OUTPUT_DIR)/JTwork $(JTREG_OUTPUT_DIR)/JTreport \
aoqi@0 279 $(JTREG_OUTPUT_DIR)/diff.html $(JTREG_OUTPUT_DIR)/status.txt
aoqi@0 280 @mkdir -p $(JTREG_OUTPUT_DIR)
aoqi@0 281 JT_JAVA=$(JT_JAVA) $(JTREG) \
aoqi@0 282 -J-Xmx512m \
aoqi@0 283 -vmoption:-Xmx768m \
aoqi@0 284 -a -ignore:quiet $(if $(JTREG_VERBOSE),-v:$(JTREG_VERBOSE)) \
aoqi@0 285 -r:$(JTREG_OUTPUT_DIR)/JTreport \
aoqi@0 286 -w:$(JTREG_OUTPUT_DIR)/JTwork \
aoqi@0 287 -jdk:$(TESTJAVA) \
aoqi@0 288 $(JAVA_ARGS:%=-vmoption:%) \
aoqi@0 289 $(JTREG_OPTIONS) \
aoqi@0 290 $(JTREG_TESTDIRS) \
aoqi@0 291 || ( $(call EXIT_IF_FATAL,$(FATAL_JTREG_EXIT)) ; \
aoqi@0 292 echo $$status > $(JTREG_OUTPUT_DIR)/status.txt \
aoqi@0 293 )
aoqi@0 294 ifdef JTREG_REFERENCE
aoqi@0 295 JT_JAVA=$(JT_JAVA) $(JTDIFF) -o $(JTREG_OUTPUT_DIR)/diff.html \
aoqi@0 296 $(JTREG_REFERENCE) $(JTREG_OUTPUT_DIR)/JTreport \
aoqi@0 297 || ( $(call EXIT_IF_FATAL,$(FATAL_JTDIFF_EXIT)) )
aoqi@0 298 endif
aoqi@0 299
aoqi@0 300 jtreg-summary: FRC
aoqi@0 301 if [ -r $(JTREG_OUTPUT_DIR)/status.txt ]; then \
aoqi@0 302 echo ; echo "Summary of jtreg test failures" ; \
aoqi@0 303 cat $(JTREG_OUTPUT_DIR)/JTreport/text/summary.txt | \
aoqi@0 304 grep -v 'Not run' | grep -v 'Passed' ; \
aoqi@0 305 echo ; \
aoqi@0 306 $(EXIT) `cat $(JTREG_OUTPUT_DIR)/status.txt` ; \
aoqi@0 307 fi
aoqi@0 308
aoqi@0 309 # Check to make sure these directories exist
aoqi@0 310 check-jtreg: $(PRODUCT_HOME) $(JTREG)
aoqi@0 311
aoqi@0 312
aoqi@0 313 # Run JCK-compiler tests
aoqi@0 314 #
aoqi@0 315 # JCK_HOME
aoqi@0 316 # Installed location of JCK: should include JCK-compiler, and JCK-extras
aoqi@0 317 # Default is JCK 8.
aoqi@0 318 # JT_JAVA
aoqi@0 319 # Version of java used to run JCK. Should normally be the same as TESTJAVA
aoqi@0 320 # Default is JDK 7
aoqi@0 321 # TESTJAVA
aoqi@0 322 # Version of java to be tested.
aoqi@0 323 # JCK_VERBOSE
aoqi@0 324 # Verbosity setting for jtjck
aoqi@0 325 # JCK_COMPILER_OPTIONS
aoqi@0 326 # Additional options for JCK-compiler
aoqi@0 327 # JCK_COMPILER_TESTDIRS
aoqi@0 328 # Directories of tests to be run
aoqi@0 329 # JCK_COMPILER_OUTPUT_DIR
aoqi@0 330 # Where to write the results
aoqi@0 331 # JCK_COMPILER_REFERENCE
aoqi@0 332 # (Optional) reference results (e.g. work, report or summary.txt)
aoqi@0 333 #
aoqi@0 334 jck-compiler-tests: check-jck FRC
aoqi@0 335 @rm -f -r $(JCK_COMPILER_OUTPUT_DIR)/work $(JCK_COMPILER_OUTPUT_DIR)/report \
aoqi@0 336 $(JCK_COMPILER_OUTPUT_DIR)/diff.html $(JCK_COMPILER_OUTPUT_DIR)/status.txt
aoqi@0 337 @mkdir -p $(JCK_COMPILER_OUTPUT_DIR)
aoqi@0 338 $(JT_JAVA)/bin/java -Xmx512m \
aoqi@0 339 -jar $(JCK_HOME)/JCK-compiler-8/lib/jtjck.jar \
aoqi@0 340 $(if $(JCK_VERBOSE),-v:$(JCK_VERBOSE)) \
aoqi@0 341 -r:$(JCK_COMPILER_OUTPUT_DIR)/report \
aoqi@0 342 -w:$(JCK_COMPILER_OUTPUT_DIR)/work \
aoqi@0 343 -jdk:$(TESTJAVA) \
aoqi@0 344 $(JCK_COMPILER_OPTIONS) \
aoqi@0 345 $(JCK_COMPILER_TESTDIRS) \
aoqi@0 346 || ( $(call EXIT_IF_FATAL,$(FATAL_JCK_EXIT)) ; \
aoqi@0 347 echo $$status > $(JCK_COMPILER_OUTPUT_DIR)/status.txt \
aoqi@0 348 )
aoqi@0 349 ifdef JCK_COMPILER_REFERENCE
aoqi@0 350 JT_JAVA=$(JT_JAVA) $(JTDIFF) -o $(JCK_COMPILER_OUTPUT_DIR)/diff.html \
aoqi@0 351 $(JCK_COMPILER_REFERENCE) $(JCK_COMPILER_OUTPUT_DIR)/report \
aoqi@0 352 || ( $(call EXIT_IF_FATAL,$(FATAL_JTDIFF_EXIT)) )
aoqi@0 353 endif
aoqi@0 354
aoqi@0 355 jck-compiler-summary: FRC
aoqi@0 356 if [ -r $(JCK_COMPILER_OUTPUT_DIR)/status.txt ]; then \
aoqi@0 357 echo ; echo "Summary of JCK-compiler test failures" ; \
aoqi@0 358 cat $(JCK_COMPILER_OUTPUT_DIR)/report/text/summary.txt | \
aoqi@0 359 grep -v 'Not run' | grep -v 'Passed' ; \
aoqi@0 360 echo ; \
aoqi@0 361 $(EXIT) `cat $(JCK_COMPILER_OUTPUT_DIR)/status.txt` ; \
aoqi@0 362 fi
aoqi@0 363
aoqi@0 364 # Run JCK-runtime tests in -Xcompile mode
aoqi@0 365 # This is a special mode to test javac by compiling the tests in the JCK-runtime test suite
aoqi@0 366 # Normal JCK-runtime invocation belongs in the jdk/ repository.
aoqi@0 367 #
aoqi@0 368 # JCK_HOME
aoqi@0 369 # Installed location of JCK: should include JCK-compiler, JCK-runtime and JCK-extras
aoqi@0 370 # JT_JAVA
aoqi@0 371 # Version of java used to run JCK. Should normally be the same as TESTJAVA
aoqi@0 372 # TESTJAVA
aoqi@0 373 # Version of java to be tested.
aoqi@0 374 # JCK_VERBOSE
aoqi@0 375 # Verbosity setting for jtjck
aoqi@0 376 # JCK_RUNTIME_OPTIONS
aoqi@0 377 # Additional options for JCK-runtime
aoqi@0 378 # JCK_RUNTIME_TESTDIRS
aoqi@0 379 # Directories of tests to be run
aoqi@0 380 # JCK_RUNTIME_OUTPUT_DIR
aoqi@0 381 # Where to write the results
aoqi@0 382 # JCK_RUNTIME_REFERENCE
aoqi@0 383 # (Optional) reference results (e.g. work, report or summary.txt)
aoqi@0 384 #
aoqi@0 385 jck-runtime-tests: check-jck FRC
aoqi@0 386 @rm -f -r $(JCK_RUNTIME_OUTPUT_DIR)/work $(JCK_RUNTIME_OUTPUT_DIR)/report \
aoqi@0 387 $(JCK_RUNTIME_OUTPUT_DIR)/diff.html $(JCK_RUNTIME_OUTPUT_DIR)/status.txt
aoqi@0 388 @mkdir -p $(JCK_RUNTIME_OUTPUT_DIR)
aoqi@0 389 $(JT_JAVA)/bin/java -Xmx512m \
aoqi@0 390 -jar $(JCK_HOME)/JCK-runtime-8/lib/jtjck.jar \
aoqi@0 391 $(if $(JCK_VERBOSE),-v:$(JCK_VERBOSE)) \
aoqi@0 392 -r:$(JCK_RUNTIME_OUTPUT_DIR)/report \
aoqi@0 393 -w:$(JCK_RUNTIME_OUTPUT_DIR)/work \
aoqi@0 394 -jdk:$(TESTJAVA) \
aoqi@0 395 -Xcompile \
aoqi@0 396 $(JCK_RUNTIME_OPTIONS) \
aoqi@0 397 $(JCK_RUNTIME_TESTDIRS) \
aoqi@0 398 || ( $(call EXIT_IF_FATAL,$(FATAL_JCK_EXIT)) ; \
aoqi@0 399 echo $$status > $(JCK_RUNTIME_OUTPUT_DIR)/status.txt \
aoqi@0 400 )
aoqi@0 401 ifdef JCK_RUNTIME_REFERENCE
aoqi@0 402 JT_JAVA=$(JT_JAVA) $(JTDIFF) -o $(JCK_RUNTIME_OUTPUT_DIR)/diff.html \
aoqi@0 403 $(JCK_RUNTIME_REFERENCE) $(JCK_RUNTIME_OUTPUT_DIR)/report \
aoqi@0 404 || ( $(call EXIT_IF_FATAL,$(FATAL_JTDIFF_EXIT)) )
aoqi@0 405 endif
aoqi@0 406
aoqi@0 407 jck-runtime-summary: FRC
aoqi@0 408 if [ -r $(JCK_RUNTIME_OUTPUT_DIR)/status.txt ]; then \
aoqi@0 409 echo ; echo "Summary of JCK-runtime test failures" ; \
aoqi@0 410 cat $(JCK_RUNTIME_OUTPUT_DIR)/report/text/summary.txt | \
aoqi@0 411 grep -v 'Not run' | grep -v 'Passed' ; \
aoqi@0 412 echo ; \
aoqi@0 413 $(EXIT) `cat $(JCK_RUNTIME_OUTPUT_DIR)/status.txt` ; \
aoqi@0 414 fi
aoqi@0 415
aoqi@0 416 # Check to make sure these directories exist
aoqi@0 417 check-jck: $(JCK_HOME) $(PRODUCT_HOME)
aoqi@0 418
aoqi@0 419 all-summary: FRC
aoqi@0 420 if [ -n "`find $(TEST_OUTPUT_DIR) -name status.txt`" ]; then
aoqi@0 421 echo ; echo "Summary of test failures" ; \
aoqi@0 422 cat `find $(TEST_OUTPUT_DIR) -name summary.txt` | \
aoqi@0 423 grep -v 'Not run' | grep -v 'Passed' ; \
aoqi@0 424 echo ; \
aoqi@0 425 $(EXIT) 1
aoqi@0 426 fi
aoqi@0 427
aoqi@0 428 # Bundle up the results
aoqi@0 429 $(JPRT_ARCHIVE_BUNDLE): FRC
aoqi@0 430 @rm -f $@
aoqi@0 431 @mkdir -p $(@D)
aoqi@0 432 ( cd $(TEST_OUTPUT_DIR) && zip -q -r $@ . )
aoqi@0 433
aoqi@0 434 # Cleanup
aoqi@0 435 clean:
aoqi@0 436 rm -f $(JPRT_ARCHIVE_BUNDLE)
aoqi@0 437
aoqi@0 438 # Used to force a target rules to run
aoqi@0 439 FRC:
aoqi@0 440
aoqi@0 441 # Phony targets (e.g. these are not filenames)
aoqi@0 442 .PHONY: all clean \
aoqi@0 443 jtreg javac javadoc javah javap jdeps jtreg-tests jtreg-summary check-jtreg \
aoqi@0 444 jck-compiler jck-compiler-tests jck-compiler-summary \
aoqi@0 445 jck-runtime jck-runtime-tests jck-runtime-summary check-jck
aoqi@0 446
aoqi@0 447 # No use of suffix rules
aoqi@0 448 .SUFFIXES:
aoqi@0 449

mercurial