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