test/Makefile

Mon, 16 Oct 2017 16:07:48 +0800

author
aoqi
date
Mon, 16 Oct 2017 16:07:48 +0800
changeset 2893
ca5783d9a597
parent 2806
d35c539d0e6d
parent 2525
2eb010b6cb22
child 3846
1a713bbdb09e
permissions
-rw-r--r--

merge

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

mercurial