Home | History | Annotate | Download | only in src
      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   $(HOST_OUT_EXECUTABLES)/dx \
     23   $(HOST_OUT_EXECUTABLES)/d8 \
     24   $(HOST_OUT_EXECUTABLES)/hiddenapi \
     25   $(HOST_OUT_EXECUTABLES)/jasmin \
     26   $(HOST_OUT_EXECUTABLES)/smali \
     27   $(HOST_OUT_EXECUTABLES)/dexmerger \
     28   $(HOST_OUT_JAVA_LIBRARIES)/desugar.jar
     29 
     30 # Add d8 dependency, if enabled.
     31 ifeq ($(USE_D8),true)
     32 TEST_ART_RUN_TEST_DEPENDENCIES += \
     33   $(HOST_OUT_EXECUTABLES)/d8-compat-dx
     34 endif
     35 
     36 # We need dex2oat and dalvikvm on the target as well as the core images (all images as we sync
     37 # only once).
     38 TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUTS)
     39 
     40 # Also need libartagent.
     41 TEST_ART_TARGET_SYNC_DEPS += libartagent-target libartagentd-target
     42 
     43 # Also need libtiagent.
     44 TEST_ART_TARGET_SYNC_DEPS += libtiagent-target libtiagentd-target
     45 
     46 # Also need libtistress.
     47 TEST_ART_TARGET_SYNC_DEPS += libtistress-target libtistressd-target
     48 
     49 # Also need libarttest.
     50 TEST_ART_TARGET_SYNC_DEPS += libarttest-target libarttestd-target
     51 
     52 # Also need libnativebridgetest.
     53 TEST_ART_TARGET_SYNC_DEPS += libnativebridgetest-target
     54 
     55 # Also need libopenjdkjvmti.
     56 TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmti-target libopenjdkjvmtid-target
     57 
     58 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/core-libart-testdex.jar
     59 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/core-oj-testdex.jar
     60 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/okhttp-testdex.jar
     61 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/bouncycastle-testdex.jar
     62 TEST_ART_TARGET_SYNC_DEPS += $(TARGET_OUT_JAVA_LIBRARIES)/conscrypt-testdex.jar
     63 
     64 # All tests require the host executables. The tests also depend on the core images, but on
     65 # specific version depending on the compiler.
     66 ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \
     67   $(ART_HOST_EXECUTABLES) \
     68   $(HOST_OUT_EXECUTABLES)/hprof-conv \
     69   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagent) \
     70   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagentd) \
     71   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtistress) \
     72   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtistressd) \
     73   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagent) \
     74   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagentd) \
     75   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttest) \
     76   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttestd) \
     77   $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libnativebridgetest) \
     78   $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
     79   $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \
     80   $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \
     81   $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \
     82   $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \
     83 
     84 ifneq ($(HOST_PREFER_32_BIT),true)
     85 ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \
     86   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagent) \
     87   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagentd) \
     88   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtistress) \
     89   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtistressd) \
     90   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagent) \
     91   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagentd) \
     92   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttest) \
     93   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttestd) \
     94   $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libnativebridgetest) \
     95   $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \
     96   $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \
     97   $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \
     98   $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \
     99   $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \
    100 
    101 endif
    102 
    103 # Host executables.
    104 host_prereq_rules := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES)
    105 
    106 # Required for dx, jasmin, smali, dexmerger.
    107 host_prereq_rules += $(TEST_ART_RUN_TEST_DEPENDENCIES)
    108 
    109 # Sync test files to the target, depends upon all things that must be pushed
    110 #to the target.
    111 target_prereq_rules += test-art-target-sync
    112 
    113 define core-image-dependencies
    114   image_suffix := $(3)
    115   ifeq ($(3),regalloc_gc)
    116     image_suffix:=optimizing
    117   else
    118     ifeq ($(3),jit)
    119       image_suffix:=interpreter
    120     endif
    121   endif
    122   ifeq ($(2),no-image)
    123     $(1)_prereq_rules += $$($(call to-upper,$(1))_CORE_IMAGE_$$(image_suffix)_$(4))
    124   else
    125     ifeq ($(2),picimage)
    126       $(1)_prereq_rules += $$($(call to-upper,$(1))_CORE_IMAGE_$$(image_suffix)_$(4))
    127     else
    128       ifeq ($(2),multipicimage)
    129         $(1)_prereq_rules += $$($(call to-upper,$(1))_CORE_IMAGE_$$(image_suffix)_multi_$(4))
    130       endif
    131     endif
    132   endif
    133 endef
    134 
    135 TARGET_TYPES := host target
    136 COMPILER_TYPES := jit interpreter optimizing regalloc_gc jit interp-ac speed-profile
    137 IMAGE_TYPES := picimage no-image multipicimage
    138 ALL_ADDRESS_SIZES := 64 32
    139 
    140 # Add core image dependencies required for given target - HOST or TARGET,
    141 # IMAGE_TYPE, COMPILER_TYPE and ADDRESS_SIZE to the prereq_rules.
    142 $(foreach target, $(TARGET_TYPES), \
    143   $(foreach image, $(IMAGE_TYPES), \
    144     $(foreach compiler, $(COMPILER_TYPES), \
    145       $(foreach address_size, $(ALL_ADDRESS_SIZES), $(eval \
    146         $(call core-image-dependencies,$(target),$(image),$(compiler),$(address_size)))))))
    147 
    148 test-art-host-run-test-dependencies : $(host_prereq_rules)
    149 test-art-target-run-test-dependencies : $(target_prereq_rules)
    150 test-art-run-test-dependencies : test-art-host-run-test-dependencies test-art-target-run-test-dependencies
    151 
    152 # Create a rule to build and run a test group of the following form:
    153 # test-art-{1: host target}-run-test
    154 define define-test-art-host-or-target-run-test-group
    155   build_target := test-art-$(1)-run-test
    156   .PHONY: $$(build_target)
    157 
    158   $$(build_target) : args := --$(1) --verbose
    159   $$(build_target) : test-art-$(1)-run-test-dependencies
    160 	./art/test/testrunner/testrunner.py $$(args)
    161   build_target :=
    162   args :=
    163 endef  # define-test-art-host-or-target-run-test-group
    164 
    165 $(foreach target, $(TARGET_TYPES), $(eval \
    166   $(call define-test-art-host-or-target-run-test-group,$(target))))
    167 
    168 test-art-run-test : test-art-host-run-test test-art-target-run-test
    169 
    170 host_prereq_rules :=
    171 target_prereq_rules :=
    172 core-image-dependencies :=
    173 define-test-art-host-or-target-run-test-group :=
    174 TARGET_TYPES :=
    175 COMPILER_TYPES :=
    176 IMAGE_TYPES :=
    177 ALL_ADDRESS_SIZES :=
    178 LOCAL_PATH :=
    179