Home | History | Annotate | Download | only in test
      1 # Copyright (C) 2011 The Android Open Source Project
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #      http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 #
     15 
     16 LOCAL_PATH := $(call my-dir)
     17 
     18 include art/build/Android.common_test.mk
     19 
     20 # Dependencies for actually running a run-test.
     21 TEST_ART_RUN_TEST_DEPENDENCIES := \
     22   $(DX) \
     23   $(HOST_OUT_EXECUTABLES)/jasmin \
     24   $(HOST_OUT_EXECUTABLES)/smali \
     25   $(HOST_OUT_EXECUTABLES)/dexmerger \
     26   $(JACK)
     27 
     28 # Convert's a rule name to the form used in variables, e.g. no-relocate to NO_RELOCATE
     29 define name-to-var
     30 $(shell echo $(1) | tr '[:lower:]' '[:upper:]' | tr '-' '_')
     31 endef  # name-to-var
     32 
     33 # We need dex2oat and dalvikvm on the target as well as the core images (all images as we sync
     34 # only once).
     35 TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUTS)
     36 
     37 # Also need libartagent.
     38 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libartagent)
     39 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libartagentd)
     40 ifdef TARGET_2ND_ARCH
     41 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libartagent)
     42 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libartagentd)
     43 endif
     44 
     45 # Also need libtiagent.
     46 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtiagent)
     47 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtiagentd)
     48 ifdef TARGET_2ND_ARCH
     49 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtiagent)
     50 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtiagentd)
     51 endif
     52 
     53 # Also need libtistress.
     54 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtistress)
     55 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtistressd)
     56 ifdef TARGET_2ND_ARCH
     57 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtistress)
     58 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtistressd)
     59 endif
     60 
     61 # Also need libarttest.
     62 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libarttest)
     63 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libarttestd)
     64 ifdef TARGET_2ND_ARCH
     65 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libarttest)
     66 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libarttestd)
     67 endif
     68 
     69 # Also need libnativebridgetest.
     70 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libnativebridgetest)
     71 ifdef TARGET_2ND_ARCH
     72 TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libnativebridgetest)
     73 endif
     74 
     75 # Also need libopenjdkjvmti.
     76 TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmti
     77 TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmtid
     78 
     79 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/core-libart-testdex.jar
     80 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/core-oj-testdex.jar
     81 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/okhttp-testdex.jar
     82 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/bouncycastle-testdex.jar
     83 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/conscrypt-testdex.jar
     84 
     85 # All tests require the host executables. The tests also depend on the core images, but on
     86 # specific version depending on the compiler.
     87 ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
     88   $(ART_HOST_EXECUTABLES) \
     89   $(HOST_OUT_EXECUTABLES)/hprof-conv \
     90   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagent) \
     91   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagentd) \
     92   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtistress) \
     93   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtistressd) \
     94   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagent) \
     95   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagentd) \
     96   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttest) \
     97   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttestd) \
     98   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libnativebridgetest) \
     99   $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
    100   $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \
    101   $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \
    102   $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \
    103   $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \
    104 
    105 ifneq ($(HOST_PREFER_32_BIT),true)
    106 ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
    107   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagent) \
    108   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagentd) \
    109   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtistress) \
    110   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtistressd) \
    111   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagent) \
    112   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagentd) \
    113   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttest) \
    114   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttestd) \
    115   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libnativebridgetest) \
    116   $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
    117   $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \
    118   $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \
    119   $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \
    120   $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \
    121 
    122 endif
    123 
    124 # Host executables.
    125 host_prereq_rules := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
    126 
    127 ifeq ($(ANDROID_COMPILE_WITH_JACK),true)
    128 # Classpath for Jack compilation for host.
    129 host_prereq_rules += $(HOST_JACK_CLASSPATH_DEPENDENCIES)
    130 endif
    131 
    132 # Required for dx, jasmin, smali, dexmerger, jack.
    133 host_prereq_rules += $(TEST_ART_RUN_TEST_DEPENDENCIES)
    134 
    135 ifeq ($(ANDROID_COMPILE_WITH_JACK),true)
    136 # Classpath for Jack compilation for target.
    137 target_prereq_rules := $(TARGET_JACK_CLASSPATH_DEPENDENCIES)
    138 endif
    139 
    140 # Sync test files to the target, depends upon all things that must be pushed
    141 #to the target.
    142 target_prereq_rules += test-art-target-sync
    143 
    144 define core-image-dependencies
    145   image_suffix := $(3)
    146   ifeq ($(3),regalloc_gc)
    147     image_suffix:=optimizing
    148   else
    149     ifeq ($(3),jit)
    150       image_suffix:=interpreter
    151     endif
    152   endif
    153   ifeq ($(2),no-image)
    154     $(1)_prereq_rules += $$($(call name-to-var,$(1))_CORE_IMAGE_$$(image_suffix)_$(4))
    155   else
    156     ifeq ($(2),picimage)
    157       $(1)_prereq_rules += $$($(call name-to-var,$(1))_CORE_IMAGE_$$(image_suffix)_$(4))
    158     else
    159       ifeq ($(2),multipicimage)
    160         $(1)_prereq_rules += $$($(call name-to-var,$(1))_CORE_IMAGE_$$(image_suffix)_multi_$(4))
    161       endif
    162     endif
    163   endif
    164 endef
    165 
    166 TARGET_TYPES := host target
    167 COMPILER_TYPES := jit interpreter optimizing regalloc_gc jit interp-ac speed-profile
    168 IMAGE_TYPES := picimage no-image multipicimage
    169 ALL_ADDRESS_SIZES := 64 32
    170 
    171 # Add core image dependencies required for given target - HOST or TARGET,
    172 # IMAGE_TYPE, COMPILER_TYPE and ADDRESS_SIZE to the prereq_rules.
    173 $(foreach target, $(TARGET_TYPES), \
    174   $(foreach image, $(IMAGE_TYPES), \
    175     $(foreach compiler, $(COMPILER_TYPES), \
    176       $(foreach address_size, $(ALL_ADDRESS_SIZES), $(eval \
    177         $(call core-image-dependencies,$(target),$(image),$(compiler),$(address_size)))))))
    178 
    179 test-art-host-run-test-dependencies : $(host_prereq_rules)
    180 test-art-target-run-test-dependencies : $(target_prereq_rules)
    181 test-art-run-test-dependencies : test-art-host-run-test-dependencies test-art-target-run-test-dependencies
    182 
    183 # Create a rule to build and run a test group of the following form:
    184 # test-art-{1: host target}-run-test
    185 define define-test-art-host-or-target-run-test-group
    186   build_target := test-art-$(1)-run-test
    187   .PHONY: $$(build_target)
    188 
    189   $$(build_target) : args := --$(1) --verbose
    190   $$(build_target) : test-art-$(1)-run-test-dependencies
    191 	./art/test/testrunner/testrunner.py $$(args)
    192   build_target :=
    193   args :=
    194 endef  # define-test-art-host-or-target-run-test-group
    195 
    196 $(foreach target, $(TARGET_TYPES), $(eval \
    197   $(call define-test-art-host-or-target-run-test-group,$(target))))
    198 
    199 test-art-run-test : test-art-host-run-test test-art-target-run-test
    200 
    201 host_prereq_rules :=
    202 target_prereq_rules :=
    203 core-image-dependencies :=
    204 name-to-var :=
    205 define-test-art-host-or-target-run-test-group :=
    206 TARGET_TYPES :=
    207 COMPILER_TYPES :=
    208 IMAGE_TYPES :=
    209 ALL_ADDRESS_SIZES :=
    210 LOCAL_PATH :=
    211